您的位置:首页 > 编程语言

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

2013-01-04 14:51 274 查看
假设目前我们的项目状态是这样的,如下图所示,分支的情况,当前已经把其他的分支都合并到了master分支。



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

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

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

所以把工程推送到远端。

然后再看当前的分支图



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

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

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



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

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



我们从现在的基础上,拉出一个新的分支称为: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
目前推进之前的分支图如图所示:



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

然后,我们发现我们现在的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指针向后移动,不许要处理其他的冲突操作等,因为不存在。

当前分支图为:



合并时出现了 “Fast forward”(快进)提示。由于当前 master 分支所在的 commit 是要并入的 hotfix 分支的直接上游,Git 只需把指针直接右移。换句话说,如果顺着一个分支走下去可以到达另一个分支,那么 Git 在合并两者时,只会简单地把指针前移,因为没有什么分歧需要解决,所以这个过程叫做快进(Fast
forward)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: