如何列出Git中最初引发合并冲突的文件(已部分解决后)
列出Git合并过程中所有最初的冲突文件(包括已解决的)
当你在合并过程中已经解决部分冲突,但想找回所有最初触发冲突的文件时,可以用以下方法:
利用Git索引阶段查询(精准方法)
Git合并时会把冲突文件的不同版本存在索引的不同阶段:阶段2对应当前分支(HEAD)的版本,阶段3对应待合并分支(MERGE_HEAD)的版本。哪怕你已经解决冲突并把文件加入暂存区,这些阶段记录依然存在。执行这条命令就能提取所有最初的冲突文件:
git ls-files --stage | awk '$2 ~ /2|3/ {print $4}' | sort -u
git ls-files --stage:输出索引内所有文件的阶段信息awk部分:筛选出阶段为2或3的文件,只保留文件名sort -u:去重,避免重复显示同一文件
分支差异对比(辅助验证)
如果需要确认这些文件确实是合并冲突的来源,可以对比当前分支和待合并分支的差异:
git diff --name-only HEAD...MERGE_HEAD
这条命令会列出两个分支从公共祖先开始所有有改动的文件,其中包含所有最初的冲突文件(冲突的核心就是双方都修改了同一文件)。不过它会包含所有差异文件,所以需要结合上面的精准方法来定位。
内容的提问来源于stack exchange,提问作者JesseTG
相关产品推荐
相关产品推荐

