使用git rebase -i合并commit_hash_n后的提交时遇合并错误咨询
Git变基合并提交时出现冲突的原因
你遇到的问题本质是交互式变基的工作机制导致的:
当你执行git rebase -i commit_hash_n时,Git会把commit_hash_n之后的所有提交(你的那一串提交)逐个"摘下来",然后依次重新应用到commit_hash_n的提交上。哪怕你最终只想保留最新的代码状态,Git在重放每个旧提交的过程中,还是会尝试将每个提交的变更单独合并到目标基准(commit_hash_n)上。
如果你的某个旧提交的变更,和commit_hash_n的代码状态存在冲突,或者在重放过程中,前一个提交的变更和当前要重放的提交变更产生了冲突(比如你在不同提交里修改了同一文件的同一行),就会触发合并冲突——这和你最终想要的状态无关,是变基过程中逐提交重放的必然结果。
更适合你需求的操作(避免冲突)
既然你只想保留最新代码状态并合并成单个提交,完全不用走变基的路子,直接用以下操作更简单:
- 执行
git reset --soft commit_hash_n:这个命令会把HEAD指针移到commit_hash_n,但保留工作区和暂存区的所有修改(也就是你最新提交的状态) - 执行
git commit -m "合并commit_hash_n之后的所有提交":直接生成一个包含所有修改的新提交,提交链就变成你想要的样子了
内容的提问来源于stack exchange,提问作者Dude156
相关产品推荐
相关产品推荐

