You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行git rebase --strategy-option=theirs master仍产生冲突?

为什么指定--strategy-option=theirs后,Git变基仍因冲突终止?

首先,你搞反了参数的含义

在git rebase里,ours和theirs的指向和git merge是完全颠倒的:

  • 用git merge时,ours指当前分支,theirs指被合并进来的分支
  • 但git rebase是把当前分支的提交一个个“重演”到目标分支(master)上,这时候目标分支(master)是ours,当前分支的提交是theirs

你原本想保留当前分支的内容自动解决冲突,应该用--strategy-option=ours,而不是theirs——之前的命令其实是让Git优先用master的内容来解决冲突,和你的预期完全相反。但就算参数对了,还是可能遇到Git搞不定的冲突。

其次,有些冲突Git没法自动处理

以下几种情况,就算你指定了theirs或ours,Git还是会停下来让你手动解决:

  • 文件存在性冲突:比如master删了某个文件,你却在当前分支改了这个文件;或者两边都加了同名但内容不一样的文件
  • 复杂代码块冲突:同一个代码块被两边改得面目全非,Git没法判断你要留哪一个版本
  • 元数据冲突:文件权限、换行符类型这类非内容的修改冲突,策略参数管不着

怎么解决?

  1. 先终止当前失败的变基:
    git rebase --abort
    
  2. 用正确的参数重新变基(保留当前分支内容):
    git rebase --strategy-option=ours master
    
  3. 如果还是碰到冲突,手动改完冲突文件后执行:
    git add <冲突文件名>
    git rebase --continue
    

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:53:13