虚拟项目学习git/github原理与基本操作8

假设目前我们的项目状态是这样的,如下图所示,分支的情况,当前已经把其他的分支都合并到了master分支。


接下来的操作都以上面图中最新的master分支为基础进行,前面的都不去讨论。

现在我们将master分支向前推进两步,分别添加写别的功能,在function2中。

如果不推送到远端的话,远端仓库的HEAD指针会比当前工程的指针落后一步。

所以把工程推送到远端。


然后再看当前的分支图

虚拟项目学习git/github原理与基本操作8_第1张图片



这个时候为了让分支图看得更加清晰,我们再次让当前项目推进一步,修改一点东西。

比如说我们这次添加新的特征feature x11

这个时候的分支图看起来是这样的:



可以看到远端仓库的master分支落后了,我们再次推送到远端仓库一下。

然后分支图看起来就是这样的了:

虚拟项目学习git/github原理与基本操作8_第2张图片


我们从现在的基础上,拉出一个新的分支称为:featurex1,在这个新的分支上为整个项目添加新的特征,并在这个分支上进行相关测试,所以不论这个分支是否成功,都不会对原来的master分支的程序造成恶化,就算失败了,直接不要这个分支就可以了,如果这个分支测试成功,那么把这个特征分支合并到master分支就很方便了。


watkins@watkins:~/watkins/finance$ git branch featurex1
watkins@watkins:~/watkins/finance$ git branch -v
  featurex1 fd91f3b add feature x11
  iss53     5fda582 iss53-2
* master    fd91f3b add feature x11
watkins@watkins:~/watkins/finance$ git checkout featurex1 
Switched to branch 'featurex1'
watkins@watkins:~/watkins/finance$ 

然后把切换到新的分支中,推进两步,分别修改不同的地方,假设分别修改issuex1_1,issuex1_2

目前推进之前的分支图如图所示:

虚拟项目学习git/github原理与基本操作8_第3张图片


然后将分支向前推进两步。

然后,我们发现我们现在的featurex1分支已经开发的非常好了,而且经过完善的测试,所以现在我们想把在feature1中添加的功能合并到master分支中。

就可以切换到master分支中,然后合并feature1分支。

watkins@watkins:~/watkins/finance$ git merge featurex1 
Updating fd91f3b..07c0bb7
Fast-forward
 funciton3 |    2 ++
 1 file changed, 2 insertions(+)
watkins@watkins:~/watkins/finance$ 


出现了Fast-forward,是因为合并之前master分支的快照指针是featurex1的快照指针的父节点,所以可以直接将master指针向后移动,不许要处理其他的冲突操作等,因为不存在。

当前分支图为:

虚拟项目学习git/github原理与基本操作8_第4张图片


合并时出现了 “Fast forward”(快进)提示。由于当前 master 分支所在的 commit 是要并入的 hotfix 分支的直接上游,Git 只需把指针直接右移。换句话说,如果顺着一个分支走下去可以到达另一个分支,那么 Git 在合并两者时,只会简单地把指针前移,因为没有什么分歧需要解决,所以这个过程叫做快进(Fast forward)。

你可能感兴趣的:(虚拟项目学习git/github原理与基本操作8)