查看未合并条目的命令
按索引冲突阶段列出所有未解决的文件:阶段一是共同祖先版本、阶段二是我方版本、阶段三是对方版本。它适合脚本化统计冲突规模,或在图形工具不便使用时批量定位待处理文件。
基本信息
| 用途 | 列出索引中处于冲突状态的文件 |
|---|---|
| 语法 | git ls-files -u,等价写法是 --unmerged |
| 输出字段 | 模式、对象编号、阶段编号、文件名 |
| 阶段含义 | 1 共同祖先、2 我方、3 对方 |
| 扩展用法 | 支持路径参数,只查看指定目录下的冲突 |
典型使用场景
- 冲突文件很多时先统计规模再决定处理顺序
- 脚本里逐个拉取待解决的冲突文件清单
- 确认还有哪些文件没有处理完
- 图形工具显示不全时用命令兜底
- 自动化流程判断合并是否可以继续
常用示例
常用示例
git ls-files -u # 列出全部冲突条目
git ls-files -u | awk '{print $4}' | sort -u # 去重后的冲突文件名
git diff --name-only --diff-filter=U # 另一种列出冲突文件的方式
git ls-files -u src/ # 只看某个目录下的冲突
git add src/app.js && git ls-files -u # 解决后确认它已从列表消失输出逐列读法
| 列 | 含义 |
|---|---|
| 模式 | 文件权限位,普通文件通常为 100644 |
| 对象编号 | 该阶段对应的内容哈希 |
| 阶段编号 | 1 共同祖先、2 我方、3 对方 |
| 文件名 | 处于冲突状态的路径 |
冲突解决并登记到索引后,该文件就从输出中消失,可以据此写循环脚本逐个确认剩余冲突。
只有在合并或变基暂停期间才会出现冲突阶段,仓库状态干净时该命令没有任何输出。
结合阶段编号可以判断冲突类型:只有两个阶段的条目通常是内容冲突,出现额外阶段则可能是重命名或删除与修改之间的冲突。
把输出交给逐行处理工具时注意保留文件名中的空格,路径带空格的仓库会让简单按列切分的脚本出错。