如何在Git中从3个提交里变基指定的2个提交?
可以对指定提交执行Git Rebase操作,完全满足你的需求
首先明确你的提交历史(Git日志默认倒序,实际时间线从早到晚):
5cb49b8c changes 1 → 6e04807a changes 2 → 9a0fcfab changes 3
按照你的需求操作步骤如下:
启动交互式Rebase,选中最近3个提交:
git rebase -i HEAD~3编辑器会打开并显示按时间排序的提交列表(默认内容):
pick 5cb49b8c changes 1 pick 6e04807a changes 2 pick 9a0fcfab changes 3
- 根据你的需求修改命令:
- 如果你想保留6e04807a作为独立提交,同时把9a0fcfab的内容合并到5cb49b8c中,修改为:
pick 5cb49b8c changes 1 pick 6e04807a changes 2 fixup 9a0fcfab changes 3
这里fixup会把9a0fcfab的代码变更合并到前一个pick的提交(5cb49b8c)里,同时丢弃9a0fcfab的提交信息。
- 如果你确实想跳过(删除)6e04807a,则修改为:
pick 5cb49b8c changes 1 fixup 9a0fcfab changes 3
或者直接删除6e04807a那一行,效果相同。
- 保存并关闭编辑器,Git会自动完成Rebase操作。
注意事项
- 如果这些提交已经推送到远程仓库,Rebase后需要强制推送:
git push -f,但这会修改远程提交历史,和他人协作时务必提前沟通。 - 若想保留9a0fcfab的提交信息,可将
fixup替换为squash,Git会让你编辑合并后的最终提交信息。
内容的提问来源于stack exchange,提问作者Jonathan Viana
相关产品推荐
相关产品推荐

