首页/开发/Git 与协作速查/git ls-files -u 查看未合并条目
合并变基与冲突71 条

git ls-files -u 查看未合并条目

按索引冲突阶段列出所有未解决文件(stage 1 共同祖先、2 我方、3 对方),适合脚本化统计冲突规模与批量处理。

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

查看未合并条目的命令

按索引冲突阶段列出所有未解决的文件:阶段一是共同祖先版本、阶段二是我方版本、阶段三是对方版本。它适合脚本化统计冲突规模,或在图形工具不便使用时批量定位待处理文件。

基本信息

用途列出索引中处于冲突状态的文件
语法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 对方
文件名处于冲突状态的路径
冲突解决并登记到索引后,该文件就从输出中消失,可以据此写循环脚本逐个确认剩余冲突。
只有在合并或变基暂停期间才会出现冲突阶段,仓库状态干净时该命令没有任何输出。
结合阶段编号可以判断冲突类型:只有两个阶段的条目通常是内容冲突,出现额外阶段则可能是重命名或删除与修改之间的冲突。
把输出交给逐行处理工具时注意保留文件名中的空格,路径带空格的仓库会让简单按列切分的脚本出错。

易错点

  • 同一文件会出现多行(每个阶段一行),直接按行计数会高估冲突文件数量,先去重文件名
  • 解决冲突后忘记登记到索引,文件仍留在冲突列表里,合并流程无法继续
  • 把该命令的输出当成文件内容来读,它其实只是索引阶段记录,查看内容要另用其他命令
  • 在图形工具里处理完却忘了刷新索引状态,命令行仍显示冲突,先执行一次状态查询确认

数据来源与参考

  • Git 官方文档:git-ls-files(--unmerged)
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌