git之merge --no-ff与fast farward
分支可以说是git中举足轻重的一个必杀技。利用git的分支功能我们可以简化开发流程从而加快开发进度。举个简单的例子,考虑这么一种情况:
1.我们没有利用git进行代码管理
2.要在现有代码基础上实现某个功能
为了保持原有代码,我们可能要备份一份,目的是防止修改代码后某个功能没有实现反而不知道怎么恢复回去。
如果我们利用git中的分支功能,就不用这么麻烦了。在原来的分支上新建一个分支,修改代码,编译,运行。如果功能实现可以采用merge直接把这些修改应用到原来的分支上。如果功能没有实现,或者说又不需要这个功能了,那么可以切换到原来的分支,代码就恢复到开发这个功能之前的状态了,一点变化也没有。是不是很酷!
好了,简单的说了一下git中分支的一个好处。下面切入正题。
现在,git的历史提交是这样子的:
现在,我们在master分支上新建一个分支b1,做了一些修改和提交,现在历史提交是这样子的:
如果,分支b1开发好了,我们想把它合并到master分支,我们可以这么来干:
- git checkout master
- git merge b1
看一下,git的反馈消息:
再看一下提交历史记录:
我们看到,master和b1都指向了同一个提交。这样子带来一个坏处,我们没法清新看到历史开发记录,而--no-ff正好解决这个问题。如果我们当初这么开合并:
- git checkout master
- git merge --no-ff b1
我们将会看到了提交记录是这样子的:
这样子,历史提交就很清晰。