如何将两个分支合并到一起。就是说我们新建一个分支,在其上开发某个新功能,开发完成后再合并回主线。
1. git merge
咱们先来看一下第一种方法 —— git merge
在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。”下面具体解释。
创建新分支 bugFix
git branch bugFix
切换到该分支
git checkout bugFix
提交一次
git commit
切换回 master
git checkout master
再提交一次
git commit
用 git merge 把 bugFix 合并到 master
git merge bugFix
(master 的分支被混入到所有的提交记录,但 bugFix 没有,所以要进行下面的操作)
再把 master 分支合并到 bugFix(因为 master 继承自 bugFix,Git什么都不用做,只是简单地把 bugFix 移动到 master所指向的那个提交记录。)
git checkout bugFix;
git merge master
2. git rebase
第二种合并分支的方法是 git rebase
。rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
Rebase 的优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。
创建新分支 bugFix分支
git branch bugFix
提交一次(提交在master分支上)
git commit
切换到bugFix分支
git checkout bugFix
提交一次(提交在bugFix分支上)
git commit
使用git rebase
把 bugFix 分支里的工作直接移到 master 分支上(移动以后会使得两个分支的功能看起来像是按顺序开发,但实际上它们是并行开发#的)。
git rebase master
注意:提交记录 C3 依然存在(树上那个半透明的节点),而 C3'是我们 Rebase 到 master 分支上的 C3 的副本。
切换到master分支上(为了进行更新master的操作)
git checkout master
把master的 rebase 到 bugFix 分支上(由于 bugFix 继承自 master,所以 git 只是简单的把 master 分支的引用向前移动了一下而已。)
git rebase bugFix