看CM源码时,发现历史记录里有不少squash
,因而google了解了一下。git
Git相对于CVS和SVN的一大好处就是merge很是方便,只要指出branch的名字就行了,如:bash
1
2
3
4
5
|
$ git merge another
$ git checkout another
# modify, commit, modify, commit ...
$ git checkout master
$ git merge another
|
可是,操做方便并不意味着这样操做就是合理的,在某些状况下,咱们应该优先选择使用--squash
选项,以下:测试
1
2
|
$ git merge --squash another
$ git commit -m
"message here"
|
--squash
选项的含义是:本地文件内容与不使用该选项的合并结果相同,可是不提交、不移动HEAD,所以须要一条额外的commit命令。其效果至关于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。google
Note:编码
判断是否使用
--squash
选项最根本的标准是,待合并分支上的历史是否有意义。spa
若是在开发分支上提交很是随意,甚至写成微博体,那么必定要使用--squash
选项。版本历史记录的应该是代码的发展,而不是开发者在编码时的活动。code
只有在开发分支上每一个commit都有其独自存在的意义,而且可以编译经过的状况下(可以经过测试就更完美了),才应该选择缺省的合并方式来保留commit历史。blog
这里是原文ci