[Git] git merge之squash

简介:

reference : https://www.cnblogs.com/ungshow/p/3515161.html

看CM源码时,发现历史记录里有很多squash,于是google了解了一下。

Git相对于CVS和SVN的一大好处就是merge非常方便,只要指出branch的名字就好了,如:

1
2
3
4
$ 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历史则没有拿过来。

1
2
3
Note:
 
判断是否使用--squash选项最根本的标准是,待合并分支上的历史是否有意义。

 

如果在开发分支上提交非常随意,甚至写成微博体,那么一定要使用--squash选项。版本历史记录的应该是代码的发展,而不是开发者在编码时的活动。

只有在开发分支上每个commit都有其独自存在的意义,并且能够编译通过的情况下(能够通过测试就更完美了),才应该选择缺省的合并方式来保留commit历史。

 

分类:  Git
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/8024740.html如需转载请自行联系原作者

demoblog
相关文章
|
2月前
|
开发工具 git
git merge和git rebase异同
git merge和git rebase异同
65 0
|
7月前
|
Ubuntu Linux 开发工具
idea使用git提交代码报异常refusing to merge unrelated histories和unknown option `allow-unrelated-histories‘
idea使用git提交代码报异常refusing to merge unrelated histories和unknown option `allow-unrelated-histories‘
|
4月前
|
开发工具 git
百度搜索:蓝易云【git常用命令之Merge】
请注意,合并过程中可能会出现冲突,需要手动解决冲突后再进行提交。合并操作应谨慎执行,特别是在重要的项目中,应先进行代码审查或测试,确保合并不会引入错误或不稳定的代码。
172 4
|
4月前
|
开发工具 git 开发者
百度搜索:蓝易云【Git:Rebase和Merge之间的区别】
综上所述,Rebase和Merge在代码合并方面具有不同的特点和用途。根据具体的情况和个人偏好,选择适合的合并方式能够更好地管理和组织代码。
40 0
|
4月前
|
前端开发 开发工具 git
git rebase 和 git merge的区别?以及你对它们的理解?
git rebase 和 git merge的区别?以及你对它们的理解?
67 1
|
4月前
|
Shell 开发工具 git
git 常用命令详解(merge/rebase/cherry-pick)
git常用命令详解。 git merge将已提交的commit(自历史记录与当前分支分开以来的提交)合并到当前分支中。 rebase变基的原理 git-cherry-pick能应用(合并)已经存在的commit,即选择合并某个特定commit
|
6月前
|
测试技术 程序员 Linux
手把手教你用Git——详解git merge
手把手教你用Git——详解git merge
535 0
|
6月前
|
开发工具 git C++
Git - Git Merge VS Git Rebase
Git - Git Merge VS Git Rebase
36 0
|
7月前
|
开发工具 git
git:亲测体验rebase与merge
git:亲测体验rebase与merge
62 0
|
8月前
|
开发工具 git
对git rebase 和git merge的理解
对git rebase 和git merge的理解
134 1

相关实验场景

更多