首页/开发/Git 与协作速查/git checkout --conflict 重做冲突标记
合并变基与冲突71 条

git checkout --conflict 重做冲突标记

解决过程把文件改乱后可让 Git 重新写入冲突标记:--conflict=merge|diff3|zdiff3 指定样式,等同于按当前样式重新生成。

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

重做冲突标记是什么

解决冲突中途把文件改乱(手工合并到一半、误删标记、插件吃掉标记)时,不用从头再来:git checkout --conflict=<样式> -- <路径> 让 Git 按指定样式重新写入冲突标记,文件回到「未解决」状态。样式可选 merge(默认两侧)、diff3、zdiff3;简化写法 git checkout -m 按当前配置的样式重放。本质是「重做冲突标记」的救援动作。

基本信息

用途重置指定文件的冲突标记
语法git checkout --conflict=diff3 -- <路径>
简化写法git checkout -m -- <路径> 按当前设置重放
可选样式merge、diff3、zdiff3 三种标记样式
前提文件当前处于「未解决」状态时才可用

典型使用场景

  • 手工合并改乱了:重放标记从头再来,比在废墟上继续修更快。
  • 想换样式看基线:merge 样式看不出两边从哪分叉,换成 diff3 重放。
  • 编辑器插件破坏了标记:一键恢复标准标记继续处理。
  • 误标「已解决」后发现问题:回到未解决状态重做。
  • 教学与演示:干净地展示三种冲突样式的差别,便于团队统一口径。
  • rebase 中途:单个文件处理乱后单独重放,不动其他文件进度。

常用示例

常用示例
git checkout --conflict=merge -- src/app.js   # 标准两侧样式
git checkout --conflict=diff3 -- src/app.js   # 带共同祖先段落
git checkout --conflict=zdiff3 -- src/app.js  # 精简版 diff3,更紧凑
git checkout -m -- src/app.js                 # 按当前配置重放(最常用)
# 重放前先另存有把握的部分:确认要重做再执行

样式对照

样式标记形态适用
merge两侧内容各一段默认,最简洁
diff3多出共同祖先段想看清两边基线差异
zdiff3diff3 精简版长段落时更易读
配置项merge.conflictStyle决定 -m 重放用哪种
该操作丢弃你对该文件已做的解决内容,仅在确认要重新开始时使用;有把握的修改先另存一份;编辑器撤销历史关闭后不保留,别指望它能救回来。

易错点

  • 对未处于冲突状态的文件使用会报错;先确认 git status 里该文件是「未解决」,已标记解决的要先回到冲突态。
  • 把重放当撤销用:它恢复的是标记不是你的修改,解决内容一律丢弃;先另存再执行。
  • 重放后忘记重新跑格式化与编译,残留半成品改动混进提交;标记清完先过一遍检查。
  • 在 rebase 冲突中重放同样可行,但要求工作区状态符合 Git 预期;先处理手头其他文件再统一重放。

数据来源与参考

  • Git 官方文档:git-checkout(--conflict/-m)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌