当前位置:   article > 正文

Git 合并提交(git rebase -i)_git rebase -i quash

git rebase -i quash

Git 在执行 rebase 操作时,有时候会需要把当前分支中的若干次提交合并在一起,作为一次提交合并到主分支当中,这时候就要用到 squash 。顾名思义,squash 的用途是合并多次提交。

流程

初始状态

初始状态

开始 Rebase

Rebase 操作的同时进行 Squash。

开始 Rebase

完成 Rebase

完成 Rebase

操作

如图一所示,要合并 C5C6C7 三次提交,先切换到 C5C6C7 所在的分支,然后执行

git rebase -i HEAD~3

之后会出现如下提示信息

  1. pick 708fa0a commit message A
  2. pick 8baaa26 commit message B
  3. pick dba177a commit message C
  4. # Rebase 2d2fb07..bfa62a9 onto 2d2fb07 (3 command(s))
  5. #
  6. # Commands:
  7. # p, pick = use commit
  8. # r, reword = use commit, but edit the commit message
  9. # e, edit = use commit, but stop for amending
  10. # s, squash = use commit, but meld into previous commit
  11. # f, fixup = like "squash", but discard this commit's log message
  12. # x, exec = run command (the rest of the line) using shell
  13. # d, drop = remove commit
  14. #
  15. # These lines can be re-ordered; they are executed from top to bottom.
  16. #
  17. # If you remove a line here THAT COMMIT WILL BE LOST.
  18. #
  19. # However, if you remove everything, the rebase will be aborted.
  20. #
  21. # Note that empty commits are commented out

这个时候把它改成如下形式

  1. pick 708fa0a commit message A
  2. squash 8baaa26 commit message B
  3. squash dba177a commit message C
  4. # ...

之后保存退出,出现

  1. # This is a combination of 3 commits.
  2. # The first commit's message is:
  3. commit message A
  4. # This is the 2nd commit message:
  5. commit message B
  6. # This is the 3rd commit message:
  7. commit message C

再保存,就会显示合并成功的提示信息。

  1. [detached HEAD bfa62a9] commit message A
  2. Date: Fri Jun 17 16:32:31 2016 +0800
  3. 2 files changed, 3 insertions(+)
  4. Successfully rebased and updated refs/heads/dev.

这时候,Rebase 合并成功,并且 C5C6C7 三次提交也合并在一起了。

补充


对于合并提示信息

  1. pick 708fa0a commit message A
  2. squash 8baaa26 commit message B
  3. squash dba177a commit message C

squash 也可以改为 fixup

  1. pick 708fa0a commit message A
  2. squash 8baaa26 commit message B
  3. fixup dba177a commit message C

它们二者的区别就在于 fixup 后面的提交信息会被忽略。

最后,合并提示信息也可以简写成这样

  1. p 708fa0a commit message A
  2. s 8baaa26 commit message B
  3. f dba177a commit message C

原文:https://blog.taotao.io/git-squash-commits/



作者:tao_tao
链接:https://www.jianshu.com/p/56a4367d9f57
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/566751
推荐阅读
相关标签
  

闽ICP备14008679号