如何在合并至main分支前压缩提交并更新基准分支PR
合并到main分支前压缩提交记录&更新关联PR的方法
一、压缩提交记录
用交互式rebase操作
- 先切到你的开发分支,拉取main分支最新代码:
git checkout 你的功能分支名 git fetch origin main git rebase origin/main - 启动交互式rebase,指定要处理的提交范围——比如最近3次提交就写
HEAD~3,或者直接基于main最新提交处理:git rebase -i HEAD~3 # 或者用这个更稳妥:git rebase -i origin/main - 弹出编辑器后,把要压缩的提交行开头的
pick改成s(保留提交信息,合并时可编辑)或者f(直接丢弃提交信息)。比如:pick abc123 初始提交 s def456 修复某个bug f ghi789 调整样式 - 保存关闭编辑器,如果选了
s,会再弹出一个编辑器让你写合并后的提交信息,写完保存就行。 - 要是rebase时碰到冲突,先手动解决冲突,然后执行:
不想继续的话就用git add . git rebase --continuegit rebase --abort放弃操作。
强制推送到远程分支
因为改了提交历史,必须强制推送,但用--force-with-lease更安全,不会覆盖别人的提交:
git push origin 你的功能分支名 --force-with-lease
二、更新关联基准分支的PR
方式一:rebase后强制推送(推荐)
上面压缩提交时已经做了git rebase origin/main,强制推送到远程后,PR会自动同步更新——因为PR关联的就是你的远程功能分支,分支内容变了PR就跟着变。
方式二:合并main分支到功能分支(不修改历史)
如果不想动提交历史,就用合并的方式:
- 切到你的功能分支:
git checkout 你的功能分支名 - 拉取main最新代码并合并:
git fetch origin main git merge origin/main - 解决冲突后提交合并结果:
git add . git commit -m "合并main分支到功能分支" - 推送到远程:
推送完成后PR会自动更新,显示已经同步了main的最新内容。git push origin 你的功能分支名
注意点
- 要是PR已经有人评审过,压缩提交后最好在PR里说一句提交历史改了,避免评审者懵。
- 强制推送前确认这个分支只有你在用,别把别人的代码冲没了。
内容的提问来源于stack exchange,提问作者Krishan
相关产品推荐
相关产品推荐

