git 合并多个 Commit
git 合并多个 Commit
在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了保证Master主分支上提交注释的可读性,需要在本地分支Push远程server之前合并你自己的多次提交注释日志,原则上3条以上就需要合并。
指定合并commit
方法一
最近提交commit指定数量的合并
1 | git rebase -i HEAD~3 |
HEAD~3
中的3指的是合并最近3次commit
方法二
指定的commit hash,hash之前的提交合并
1 | git log |
获取不需要合并的 commit 的 hash 值
1 | git rebase -i b09ce93e4bb |
合并commit
可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
pick
是最终合并后的 commitsquash
和fixup
是将当前 commit 合并到前一个commit
我们将cab88d7
和fb8c714
前缀改成squash
或fixup
;按esc
退出编辑,输入:wq
保存
注意:
fixup
会自动将当前commit与前一个合并,并放弃当前commit的注释等内容。squash
会在退出当前编辑状态后,进入新的编辑状态,允许我们再次编辑注释等提交信息,再次退出才结束操作。- 第一个commit不可以改成
squash
或者fixup
,否则会报错。 - 报错之后可以使用
git rebase --abort
来撤销修改,回到没有开始操作合并之前的状态。
如果是输入的squash
,会再次进入一个编辑页面,可以直接:wq
保存退出。
再次输入git log
合并成功!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Div-wang!