标签:git分支 结合 min 准备 reset 复习 eclips ast tween
。
在本地装一个git,并装上GitBash。(不会?会装QQ就会装git。。
)
去GitHub官网上注冊一个账号。
给个传送门GitHub官网
)
答:git是本地代码版本号管理工具,我们写项目时,难免会要进行代码管理吧。比方我们每天写完代码之后,总要把它备份一份吧,原因非常easy。万一你的工作空间(workspace)所在的硬盘突然挂了呢,不要说几率非常小。可是,万一发生呢。
。
我们总能感觉到git和GitHub之间好像是有什么关系。上面我们提到,git是本地代码管理工具。为了防止我们的工作空间(workspace)所在的硬盘突然挂掉。可是,你就不操心整块硬盘都挂了吗。。
当然,这仅仅是个小概率事件。更重要的是:我们在团队开发时,须要多人合作开发同一个软件,不可能我写了代码拷给你,你写了代码拷给我吧。我们须要一个统一的远程版本号控制仓库:GitHub
后面会用到的。并且非常重要的:
从上图中能够看出。我们日常编码时。首先是把工作空间里的更改的代码通过操作①来推送到暂存区(index。stage),然后假设我们确认这些代码正确。无须改动。那么就能够把它通过②推送给本地master分支。这里我们能够把master分支理解成本地的暂时仓库,我们能够从这里恢复代码,也能够通过这个分支进行提交到远程GitHub上的master分支,把你的代码提供给别人。
上图我们仅仅是描写叙述了由本地逐步推向远程的过程。我们先将这个高明确,后面我会反过来再操作一遍。
1.假设我们对代码进行了更改。这里我们以一个文件readme.txt为例。来解说。
(也就是说我们如今工作区间假设是E://firstrep。里面有一个文件readme.txt)
2.首先我们打开D://firstrep。在该文件夹下在空白处点击右键打开给Git Bash.exe,初始化一个本地仓库。
Administrator@HJQ1EBGYSWRMA1K /e/firstrep
$ git init
Initialized empty Git repository in E:/firstrep/.git/(master)
注意:仅仅有以“$”开头的才是我们写的命令。其它的都是系统自己主动生成的提示信息,当中运行初始化命令之后我们能够看到路径名后面多了一个“master“,这说明我们初始化成功。
3.我们如今来找一下工作区间,版本号库,暂存区,以及本地master分支
工作空间:E:/firstrep
版本号库:E:/firstrep/.git/(master)注意,这里.git文件夹是隐藏的,不可见,能够更改文件夹属性使其显现出来。
暂存区和master分支:这两个东西都存在版本号库文件夹下
4.我们先对该文件进行更改:
git is very easy.
然后。我们把它提交到版本号库的暂存区里(index,stage),运行例如以下代码,查看git状态
$ git status
On branch masterInitial commit
Untracked files:
(use “git add …” to include in what will be committed)readme.txt
nothing added to commit but untracked files present (use “git >add” to track)
这里会提示我们说:在工作空间多了一个文件。我们还没有加入到版本号库
5.以下我们把它加到版本号库里的暂存区。
git add –all
这样,我们第①个环节已经运行结束。
1.我们刚刚把更改的readme.txt.加入到暂存区(index。stage),如今我们把再把它加到本地master分支。
$ git commit -m “測试
[master (root-commit) 74c27df] 測试
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
我们如今通过上面一行命令。讲readme.txt提交到本地master分支(事实上这么说不是非常准确,事实上提交的是改动。而不是全部内容。这里我们能够先这么简单地理解)。以下我们来查看一下git的状态
$ git status
On branch master
nothing to commit, working directory clean
OK。至此,我们已经成功完毕了本地代码的提交。
即①②两步。
以下我们进行第三部。
如今应该是远程有一个分支,本地有一个分支,我们在GitHub创建一个仓库(repository)。假设仓库地址为:https://github.com/hellochillax/Yard.git
以下我们进行推送:
1.加入远程仓库的地址:
$ git remote add origin https://github.com/hellochillax/Yard.git
这里就产生了一个相应关系:origin–>https://github.com/hellochillax/Yard.git
2.进行推送操作:
$git push origin master
然后系统会提示你输入GitHub的账号password,输入正确的账号password后。点击回车,系统就会进行提交工作。并且会显示运行进度。当然,我这里就不演示了,以防把我原来的项目覆盖掉了。(上面的GitHub地址是我在GitHub上的一个项目,不可随便推。。。当然你看到这里也别想着去搞破坏,由于你不知道我的GitHub的账号password。
。。)
我们上面全部的内容攻克了本地推送到GitHub。以下我们发过来解说从GitHub上拉取被人写的内容到本地仓库。
以下。我们还是分三步来讲:
有了上面的经验,我们就能够快一点了~
上命令:
$ git pull origin master
上面的命令是,从远程拉取文件到本地。(相同的。我就不点回车给大家演示了
在运行之前。我们先查看一下git的状态:
$ git status
On branch master
nothing to commit, working directory clean
呦呦呦,什么情况,怎么是“nothing to commit”呢。怎么回事,不应该是再从版本号库中复制内容到工作空间吗,怎么能是不须要提交呢。
别急。你打开工作文件夹,发现。工作文件夹里已经存在了GitHub上的全部文件。
也就是说,步骤①,事实上已经帮我们搞定了①②③要做的事。所以,②③步骤事实上不要我们做不论什么事情。。
git init 初始化一个本地仓库
git add –all 加入全部文件到暂存区(stage,index)
git commit -m “描写叙述信息” 提交更改到本地master分支
git status 查看git当前状态
git diff 查看改动后和改动前的不同之处
git log 获得文件更改的历史记录
git reset –hard HEAD^ 回退本地分支到上一个版本号
git reset –hard HEAD~n 回退本地分支到上n个版本号
git checkout – readme.txt:把readme.txt文件在工作区的改动全部撤销
git remote :获得远程库列表
git branch -u origin/master master 本地跟踪远程
Git鼓舞大量使用分支:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
ssh-keygen -t rsa -C “hello@example.com” 创建SSH Key
命令行通用操作:
pwd:显示当前路径
ls -ah:显示文件列表(包含隐藏文件)
cat readme.txt:显示文件内容
rm readme.txt: 删除文件
==========================我是华丽的分隔符==========================================
时间过得真快,转眼半年多过去了。实验室里的人都在忙着各种内推面试。
我也不例外。总体复习啊。这样的酸爽。
本来能够不用考虑git的。可是内推时手残在简历的个人技能部分写了一句“熟悉git、svn等版本号管理工具。
”所以还是再来复习一下git,并且再补充一点半年前没有提到的知识点。
也算为了面试官问到时能不掉链子了。
git的基本知识和经常使用命令,上次都写得几乎相同了。
这次讲讲git分支的合并。
这两个命令的功能都是从远程的分支获取最新的版本号到本地。可是有一定的差别。
我们能够用以下的三个命令来体会二者的差别:
git fetch origin master:tmp
git diff tmp
git merge tmp
在实际使用中,git fetch更安全一些
由于在merge前,我们能够查看更新情况,然后再决定是否合并.
关于这个问题,在stackoverflow上有个非常清晰明了的解释,感兴趣的能够看一下:http://stackoverflow.com/questions/16666089/whats-the-difference-between-git-merge-and-git-rebase
貌似须要梯子才干看。
没梯子也没关系,我把内容翻译一遍。
首先,假设我们的版本号库眼下有三个提交。A,B,C,如图:
然后,此时有两个开发人员同一时候开发,当中小王开发了D,小李开发了E,如图:
非常显然,眼下已经发生了冲突(合并时出现故障),我们解决这个冲突,有两种方法:merge和rebase。
假设採用merge:
假设採用rebase:
可是。有个小问题:採用rebase时。可能会使虚线部分的提交丢失。所以有一定风险性,建议新手都用merge。
标签:git分支 结合 min 准备 reset 复习 eclips ast tween
原文地址:https://www.cnblogs.com/llguanli/p/8916819.html