前提条件
暂存区是干净的
前置步骤
//你想处理最近的2条就是2
git rebase HEAD~2
显示如下
指针会从上往下挨个走一遍,遇到edit,指针就停到当前提交
pick a1b2c3d Commit 6 (最新的提交)
pick b2c3d4e Commit 5
pick c3d4e5f Commit 4
pick d4e5f6g Commit 3
pick e5f6g7h Commit 2
pick f6g7h8i Commit 1 (最老的提交)
根据需要修改前面,CTRL + X关闭选Y保存
根据特定需求有不同的操作
pick(p):保留此提交,默认操作。
reword(r):保留此提交,但允许你修改提交消息。
edit(e):保留此提交,但在此提交暂停,允许你进行修改。
squash(s):将此提交与前一个提交合并,并允许你修改提交消息。
fixup(f):将此提交与前一个提交合并,但不修改提交消息。
exec(x):在执行到该行时运行一个 shell 命令。
drop(d):删除此提交。
GIT 合并不相邻的两条提交
- git reset --soft HEAD~ 放到暂存区
- git stash存放到一个虚拟的commit
- git rebase --continue到下一个想要合并的edit
- git stash pop 弹出来 到add暂存区
- git commit --amend 与当前commit合并
- 修改备注