重做冲突标记是什么
解决冲突中途把文件改乱(手工合并到一半、误删标记、插件吃掉标记)时,不用从头再来: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 | 多出共同祖先段 | 想看清两边基线差异 |
| zdiff3 | diff3 精简版 | 长段落时更易读 |
| 配置项 | merge.conflictStyle | 决定 -m 重放用哪种 |
该操作丢弃你对该文件已做的解决内容,仅在确认要重新开始时使用;有把握的修改先另存一份;编辑器撤销历史关闭后不保留,别指望它能救回来。