应使用 -x theirs:git merge -x theirs feature/login,它在冲突时自动采纳被合并分支(传入更改)的版本;--theirs 不能直接用于 git merge 命令,仅在 git checkout 或 git restore 中生效。

git merge 时想全盘接受对方分支的修改,用 --ours 还是 --theirs?
别记混:--ours 指的是「当前检出分支」的版本,--theirs 指的是「正在被合并进来的分支」的版本。你想一键接受所有传入更改(即完全采纳 feature 分支的内容,丢弃当前 develop 分支的改动),必须用 --theirs ——但注意,这个参数不能直接用在 git merge 命令里生效,它只在后续的 git checkout 或 git restore 阶段起作用。
真正能“一键接受所有传入更改”的命令组合
冲突已发生后,最稳妥的一键覆盖方式是分两步走:
- 先用
git merge --abort中止当前失败的 merge,确保工作区干净 - 再执行
git merge -X theirs feature/login(注意是-X theirs,不是--theirs)
-X theirs 是 git merge 的策略选项,告诉 Git 在遇到冲突时自动选择“传入分支”(即 feature/login)的版本。它只对内容冲突有效,不适用于文件删除/新增类冲突(比如对方删了文件而你改了它,仍会卡住)。
为什么不用 git checkout --theirs 批量覆盖?
有人试过 git checkout --theirs -- .,看似能一次选中所有冲突文件的“对方版本”,但它有严重隐患:
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
- 它会把所有未冲突的、你本地已修改但尚未 add 的文件也强制覆盖为远程 HEAD 版本,不只是冲突部分
- 它不区分“对方删了文件”和“对方改了文件”,遇到删除冲突时行为不可控
- 执行后必须手动
git add .,容易漏掉某些文件导致提交不完整
所以这不是“接受传入更改”,而是“暴力重置整个工作区到对方分支状态”,风险远大于收益。
PyCharm / VS Code 等 IDE 里有没有图形化一键选项?
有,但藏得深且命名反直觉:
- PyCharm:冲突解决窗口右上角有「Accept Theirs」按钮,点击后仅对当前高亮冲突块生效;要全文件生效,需右键中间编辑区 →「Resolve Using Theirs」
- VS Code 的 GitLens 插件:在冲突标记处右键 →「Keep Incoming Change」,但同样需逐文件操作,没有全局开关
- 关键点:IDE 不提供“本次 merge 全部接受传入”的一键入口,因为 Git 本身不鼓励这种粗粒度决策——它默认认为你至少该扫一眼哪些文件被覆盖了
真正需要批量覆盖的场景,往往说明分支长期未同步或协作流程有问题;比起找“魔法按钮”,更值得花十分钟跑一遍 git diff ...origin/main 看看差异范围。










