git rebase 合并提交

前言

自己做完一个功能觉得没问题后 commit,结果后续可能会持续做些小修改。每次修改就会产生一次 commit。而且很有可能不止一次打回重做,这样就会产生很多的 commit。

合并提交方便 code review:多次提交后的远程会有多条历史记录,并且极有可能中间的一条记录并不是最终的代码,导致 code review 时的混乱

合并提交最好重新拉个分支操作

合并最近n提交记录

语法

git rebase -i HEAD~n 

进入合并模式

合并最近三次提交

git rebase -i HEAD~3

然后你会看到一个像下面这样的命令窗口, 它会提示你相关的命令,提交记录按先后顺序从上到下排列


合并操作

若需要合并3次提交为1次,只需要修改前缀命令

ESC键, 输入:wq保存并退出 vim,接着就会进入注释comment编辑区


设置commit message

合并完成并保存退出后会显示几次提交记录的提交注释信息

再次按ESC键, 输入:wq保存并退出 ,会显示以下消息

如果你异常退出了 vi 窗口:

git rebase --edit-todo

修改完保存一下:

git rebase --continue

在中间的过程中你可以随时取消rebase 事务。

git rebase –abort

合并某次提交后的记录

git rebase -i commitId

表示合并某次 commitId 后的记录,不包括commitId

示例: 合并3次提交

开始合并,选择该3条提交的上一条提交记录

git rebase -i 6f9b8ecc

进入vi模式后,在键盘上敲i键进入insert模式。这时候先看看这里面的东西是什么含义,

  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit

上面参数表示将第二次和第三次提交合并到第一次提交

接着修改合并产生的新提交的备注信息,同上

命令解释

p, pick = 保留该次提交
r, reword = 保留该次提交但修改提交信息
e, edit = 保留该commit, 但我要停下来修改该提交(不仅仅修改注释)
s, squash = 将该提交合并到先前的提交中
f, fixup = 同 “squash”一样, 但丢弃这次的提交信息
x, exec = 执行shell命令
d, drop = 抛弃该次提交

参考文档

http://www.ruanyifeng.com/blog/2015/08/git-use-process.html

https://blog.csdn.net/u013276277/article/details/82470177

https://blog.csdn.net/kangsa998/article/details/104247156

posted @ 2020-11-18 15:00  至安  阅读(938)  评论(0编辑  收藏  举报