[转] git merge 将多个commit合并为一条之--squash 选项

[FROM] https://blog.csdn.net/themagickeyjianan/article/details/80333645

1.一般的做法(直接git merge)

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

$ git merge another
$ git checkout another
# modify, commit, modify, commit ...
$ git checkout master
$ git merge another

2.改进版本:合并多个提交为一条(git merge --squash branchname)

但是,操作方便并不意味着这样操作就是合理的,在某些情况下,我们应该优先选择使用--squash选项,如下:

$ git merge --squash another
$ git commit -m "message here"

--squash含义和原理如下:

--squash选项的含义是:本地文件内容与不使用该选项的合并结果相同,但是不提交、不移动HEAD,因此需要一条额外的commit命令。其效果相当于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。

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

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

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

3.实验:

1.master分支上只有一个文件1.txt

2.切出一个feature-squash分支,并且进行3次提交

3.将feature-squash分支用 --squash选项merge到master分支,可以看出merge玩,会提示:做一次提交

新的提交日志是"执行 git merge --squash feature-squash"

4.查看master分支,发现将squash上多次提交合并为依次提交了

4.思路总结:

1.  dev  "1.txt"

2. dev_jn   "1.txt"       此外另做3次相当于开发了新的功能,分别提交记录是:  "2.txt"   "3.txt"   "4.txt"

3.将dev_jn上的"2.txt"、"3.txt"、"4.txt"  3个提交合并成大的commit提交记录 "squash merge"一次提交;

4.查看dev提交记录,只有 "1.txt"、"squash merge" 这2个提交记录,从而保证dev上提交记录的干净性.

原文地址:https://www.cnblogs.com/pekkle/p/9857775.html

时间: 2024-10-11 21:45:55

[转] git merge 将多个commit合并为一条之--squash 选项的相关文章

如何将多条update语句合并为一条

需求: 如何将多条update语句合并为一条update语句:如,update table1 set col='2012' where id='2014001'      update table1 set col='1009' where id='2014003'如何合并为一条? 在网上找了好久,总结了一个相对简单的语句(有些语句是函数语句,有点晕),如下: update table1 set col=(case id when '2014001' then '2012' when '2014

mysql 同样内容的字段合并为一条的方法

从两个表中内联取出的数据,当中category_name字段有同样内容,想将具有同样内容的字段进行合并,将amount字段进行加法运算,变成下表中的内容 SELECT c.category_name, count(*) AS task_num, sum( t.amount ) AS amount_num FROM cs_witkey_tasks AS t INNER JOIN cs_witkey_category AS c ON t.category_id = c.cid GROUP BY c.

mysql 相同内容的字段合并为一条的方法

从两个表中内联取出的数据,其中category_name字段有相同内容,想将具有相同内容的字段进行合并,将amount字段进行加法运算,变成下表中的内容 SELECT c.category_name, count(*) AS task_num, sum( t.amount ) AS amount_num FROM cs_witkey_tasks AS t INNER JOIN cs_witkey_category AS c ON t.category_id = c.cid GROUP BY c.

git merge --squash 选项合并commit操作实例

 参考: [转] git merge 将多个commit合并为一条之--squash 选项 git checkout master git pull origin master # 本地先拉取最新的master,最后目标是要merge到master git branch feature-123-merge # 从master创建一个新的专门用来做merge的新branch:feature-123-merge git checkout feature-123-merge git merge --s

git merge 合并分支

git merge 用来做分支合并,将其他分支中的内容合并到当前分支中.比如分支结构如下: master / C0 ---- C1 ---- C2 ---- C4 C3 ---- C5 issueFix 当前分支是master$ git checkout master 把issueFix中的内容Merge进来:$ git merge issueFix 如果没有冲突的话,merge完成.有冲突的话,git会提示那个文件中有冲突,比如有如下冲突: <<<<<<< HE

Git中将git add 与 git commit合并

修改hello.php文件 vim hello.php <?php         echo "hello world!"; ?> 查看hello.php文件 cat hello.php 查看项目文件状态 git status -s add与commit合并操作 git commit -am "合并提交" 命令行输出

3.2 Git 分支 - 分支的新建与合并

分支的新建与合并 现在让我们来看一个简单的分支与合并的例子,实际工作中大体也会用到这样的工作流程: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照下面的方式处理: 返回到原先已经发布到生产服务器上的分支. 为这次紧急修补建立一个新分支,并在其中修复问题. 通过测试后,回到生产服务器所在的分支,将修补分支合并进来,然后再推送到生产服务器上. 切换到之前实现新需求的分支,继续工作. 分支的新建与切换

三十八、git merge简介

git merge的基本用法为把一个分支或或某个commit的修改合并现在的分支上. 我们可以运行git merge -h查看其命令usage: git merge [options] [<commit>...]    or: git merge [options] <msg> HEAD <commit>    or: git merge --abort -n                    do not show a diffstat at the end of

细说git merge &amp; git rebase

git merge和git rebase两个都是用来合并两个分支用的,在使用过程中,这两个概念容易混淆. 在此,对这两个git技巧的用法进行详细描述,希望能帮助一些热爱git的朋友. ------------------------------------------------------------------------------------------------------ git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样git re