首页/开发/Git 与协作速查/冲突时按文件取 ours/theirs
合并变基与冲突71 条

冲突时按文件取 ours/theirs

git checkout --ours/--theirs 把单个文件整体取成某一边的版本,用于「整文件以一侧为准」的场景(如锁文件、生成物)。

Git 与协作速查开发更新于 2026-10-13

按文件取一侧是什么

git checkout --ours 与 --theirs 可以把冲突文件的整体内容取成某一侧的版本,而不是逐行挑选。它适合「整文件以某一边为准」的场景:锁文件、自动生成的配置、构建产物这类文件没有逐行合并的意义,整体取一侧更省事也更容易验证。

ours 和 theirs 指谁

这两个名字是相对当前操作而言的。合并时,ours 是当前分支、theirs 是被合入分支;变基时则相反:ours 是变基目标(上游)分支,theirs 是你的待放提交。执行前先看 git status 确认自己在做什么操作,再决定取哪一侧。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git checkout --ours 或 --theirs -- <路径>
作用把整个文件取成某一侧的版本
后续动作git add <路径> 标记已解决
合并时ours 是当前分支,theirs 是被合入分支
变基时两侧含义与合并相反

典型使用场景

  • 锁文件冲突:依赖锁文件重新生成即可,取一侧再重装
  • 生成物冲突:构建产物、压缩包无法逐行合并
  • 配置文件冲突:以主干版本为准,避免混入本地调整
  • 语言包与文档:整文件替换比逐行挑选更清晰
  • 快速止血:冲突量大时先取一侧保证能构建,再逐项修正

常用示例

常用示例
git status                                   # 先确认当前操作与两侧含义
git checkout --ours -- config/lock.json      # 整文件取我方版本
git checkout --theirs -- src/defaults.json   # 整文件取对方版本
git add config/lock.json                     # 标记已解决
git show :1:src/app.py                       # 查看冲突的公共祖先版本
git diff --staged -- config/lock.json        # 复核最终取到的内容

两侧分别是谁

操作ourstheirs
merge当前分支被合入的分支
rebase变基目标(上游)分支你的待放提交
cherry-pick目标分支被拣选的提交
revert当前分支待回退内容的反向
在变基过程中,ours 与 theirs 的含义与合并相反,凭直觉操作极易取错版本。动手前先用 git status 确认正在进行的操作。
锁文件与生成文件取完一侧后,应立即重新生成或重装依赖,避免手工挑选出的内容与实际依赖树不一致。

易错点

  • 变基过程中 ours 与 theirs 的含义与合并相反,凭直觉操作极易取错版本
  • 锁文件与生成文件建议改完立即重新生成或重装依赖,避免挑出脏状态
  • 取一侧会丢弃该文件另一侧的全部改动,确认没有需要保留的片段再用
  • 取完一侧忘记 git add,文件仍被视为未解决,后续 --continue 会继续报错

数据来源与参考

  • Git 官方文档:git-checkout(--ours/--theirs)
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌