是的,Git 可以通过 交互式变基(Interactive Rebase) 将最近一次提交合并到前一次提交中(即“压缩提交”)。以下是具体步骤:
方法:使用 git rebase -i
找到目标提交的父提交
运行以下命令查看最近提交记录:git log --oneline
确认要合并的两次提交的哈希值(例如
A
是上上次提交,B
是上一次提交)。启动交互式变基
执行变基操作(假设A
的哈希值是abc1234
):git rebase -i abc1234
如果
A
是当前分支的前第2个提交,也可以用:git rebase -i HEAD~2
修改提交记录
文本编辑器会打开一个类似如下的界面:pick abc1234 上上次提交的消息
pick def5678 上一次提交的消息
将第二行的
pick
改为squash
(或简写为s
),表示将该提交合并到前一个提交中:pick abc1234 上上次提交的消息
squash def5678 上一次提交的消息
保存并退出编辑器。
编辑新的提交消息
接下来 Git 会要求你编辑合并后的新提交消息。按需修改后保存退出。完成操作
变基完成后,两次提交会合并为一个新的提交。
注意事项
- 强制推送:如果已经将原始提交推送到远程仓库,需要强制推送(谨慎使用):
git push --force-with-lease origin <分支名>
- 冲突处理:如果变基过程中出现冲突,解决后执行:
git add .
git rebase --continue
替代方案
如果想直接修改最近两次提交(不涉及更早的历史),也可以用:
git reset --soft HEAD~2 && git commit -m "新的合并后的消息"
通过以上步骤即可将两次本地提交合并为一次。
内容由零声教学AI助手提供,问题来源于学员提问