合并最近的 n 个提交
git lg
打印的第 n+1 行的提交上面的 n 个提交就是待合并的所有提交:
* f473d58 - ...
* ba98618 - ...
* 0e43055 - ...
* 4d20bec - ...
* 232ee7f - ...
如果要合并最近的两个提交,即 f473d58 和 ba98618,使用最近的第三个提交作为参考:
git rebase -i 0e43055
0e43055 这个提价不参与合并!
执行 rebase 之后,将第一个之后的提交标志由 pick 改为 s:
pick 3ca6ec3 '注释**********'
s 1b40566 '注释*********'
s 53f244a '注释**********'
保存退出时可能会发生冲突。如有冲突,解决冲突后
git add .
git rebase --continue
使用 git rebase --abort
放弃合并。
如果没有冲突,或者冲突已经解决。在出现的窗口中修改提交信息即可。
合并中间几个提交
假设按最近提交事件排序:
ID4
ID3
ID2
ID1: init
如果需要合并 ID2 和 ID3,就以 ID1 作为起点。执行
git rebase -i ID1
进入编辑器:
pick ID2
pick ID3
pick ID4
常用指令:
- p or pick: 保留该提交
- s or squash: 保留该提交的修改,但是将提交合并到上一个提交中
- r or reword: 保留该提交,并且修改提交日志
- e or edit
- f or fixup: 行为类似于 squash,但是丢弃该提交的日志
- d or drop: 移除该提交
- ……
合并 ID2 和 ID3,相当于将 ID3 合并到它的上一个提交 ID2 中,因此只需要将 ID3 的操作指令改为 s 即可。
评论区