Git变基后提交合并,如何保留feature分支的原有提交历史?
Git变基时保留原有提交历史的正确操作
正常冲突解决流程(避免提交合并)
当变基遇到冲突时,按以下步骤操作就能保留commit-A、commit-B的独立提交:
- 切换到feature分支:
git checkout feature - 启动变基:
git rebase master,Git会在冲突处暂停 - 手动修改file-1、file-2中的冲突内容
- 用
git add file-1 file-2标记冲突文件已解决(关键:不要执行git commit) - 继续变基流程:
git rebase --continue,Git会自动依次应用commit-A、commit-B,最终得到你期望的提交历史:commit-1 → commit-2 → commit-3 → commit-A → commit-B
提交被合并的原因
你遇到的问题,几乎可以肯定是在解决冲突后错误执行了git commit,而非git add。变基过程中执行git commit会生成一个新提交,后续的git rebase --continue会把剩余提交直接合并到这个新提交里,最终导致所有feature分支的提交被合并成一个。
已合并后的恢复方法
如果已经出现提交被合并的情况,可以通过reflog恢复到变基前的状态,重新操作:
- 执行
git reflog,找到变基开始前feature分支的最后一个提交哈希(比如commit-B对应的哈希值,格式类似abc123) - 恢复到该状态:
git reset --hard abc123 - 重新执行变基流程,严格按照上面的正确步骤操作即可
内容的提问来源于stack exchange,提问作者him001
相关产品推荐
相关产品推荐

