新建分支

Git 会使用 master 作为分支的没人名字。创建分支使用下面的命令,但是它创建完新的分支后不会切换到新的分支上去。

1
$ git baranch test

切换到新的分支,可以使用如下的命令:

1
$ git checkout test

也可以通过在上面命令加上 -b 参数来实现创建新分支并且切换:

1
$ git checkout -b test2

那 Git 是如何知道当前在哪个分支上工作的呢?其实是 Git 会保存一个名为 HEAD 的特别指针。它会指向当前工作中的本地分支的指针。

git 分支

合并分支

如果在 master 分支上重新创建了一个新分支叫 test3。并且在这个分支上进行来开发,当开发完成我们想把这个分支的内容合并到 master 上,可以使用如下命令:

1
2
3
4
5
6
7
8
$ git checkout master
$ git merge test3

Updating f42c576..3a0874c
Page 50 of 220
Fast forward
README | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)

在这个时候会出现 “Fast forward” 提示。这是因为 master 分支所在的 commit 是要并入的 test3 分支的直接上游,Git 只需要把指针直接右移。换句话说,如果顺着一个分支走下去可以到达另外一个分支,那么 Git 在合并两个分支的时候,只会简单的把指针前移。

如图:最开始的样子

git 分支2

合并后的样子

git 分支3

基本合并

不可能每次合并都是快进合并,如下图,如果要把 iss53 分支合并到 master,就属于基本的合并。

git 分支4

由于 master 的直接上游不是 iss53 分支,所以这次的合并。Git 会用两个分支的末端(C4 和 C5)和它们的共同祖先(C2)进行一次简单的三方合并计算。

Git 没有简单地把分支指针右移,而是对三方合并的结果作一新的快照,并自动创建一个指向它的 commit(C6)。我们把这个特殊的 commit 称作合并提交(merge commit),因为它的祖先不止一个。

git 分支5

删除分支

如果分支合并后没用来,可以使用如下命令删除:

1
$ git branch -d iss53

—EOF—