关于git的学习有一个阶段,如果是从未接触过命令行式开发(Linux、cmd)的萌新的话,建议先去了解下什么是Git,Git有什么用,关于这些网上已经有了很多的介绍了,我也根据我的理解写了一篇关于Git的介绍,点击链接查看 ,同时
Git分支
创建、切换分支
git branch X分支名X
:创建分支 x分支名x
git checkout x分支名x
:切换到 x分支名x
git checkout -b x分支名x
:创建并切换到 x分支名x
合并分支
前面三条命令就是简单的创建分支和切换分支的方式,在创建过分支后,接下来咱们看看如何将两个分支合并到一起。就是说我们新建一个分支,在其上开发某个新功能,开发完成后再合并回主线。
git merge x分支名x
git merge 在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点,或者说 我要把这两个父节点本身及它们所有的祖先都包含进来。如图所示:
我们准备了两个分支,每个分支上各有一个独有的提交。这意味着没有一个分支包含了我们修改的所有内容。咱们通过合并这两个分支来解决这个问题。通过 git merge bugFix
把 bugFix
合并到 master
里(注意我们当前的分支在master上)
首先,master
现在指向了一个拥有两个父节点的提交记录。假如从 master
开始沿着箭头向上看,在到达起点的路上会经过所有的提交记录。这意味着 master
包含了对代码库的所有修改。
此时将分支切换到 bugFix
上,执行git merge master
将master分支合并到 bugFix 上
因为 master
继承自 bugFix
,Git 什么都不用做,只是简单地把 bugFix
移动到 master
所指向的那个提交记录。现在所有提交记录的颜色都一样了,这代表每一个分支都包含了代码库的所有修改!
git rebase x分支名x
Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。Rebase 的优势就是可以创造更线性的提交历史,如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。
还是准备了两个分支;注意当前所在的分支是 bugFix(星号标识的是当前分支)我们想要把 bugFix 分支里的工作直接移到 master 分支上。移动以后会使得两个分支的功能看起来像是按顺序开发,但实际上它们是并行开发的。
当执行过 git rebase master
后,现在 bugFix 分支上的工作在 master 的最顶端,同时我们也得到了一个更线性的提交序列。注意,提交记录 C3 依然存在(树上那个半透明的节点),而 C3’ 是我们 Rebase 到 master 分支上的 C3 的副本。
需要注意的是,此时的master还未更新,还在C2的位置。此时我们只需要checkout master
切换到master分支,再执行 git rebase bugFix
。
由于 bugFix
继承自 master
,所以 Git 只是简单的把 master
分支的引用向前移动了一下而已。此时看起来修改记录只有完整的一条记录!
参考记录: