协慌网

登录 贡献 社区

在 Git 中列出冲突文件的最简单方法是什么?

我只需要一个简单的冲突文件列表。

还有什么比以下更简单的了:

git ls-files -u  | cut -f 2 | sort -u

或者:

git ls-files -u  | awk '{print $4}' | sort | uniq

我想我可以alias ,但是想知道专业人士是如何做到的。我会用它来编写 shell 循环,例如自动解决冲突等。也许通过插入mergetool.cmd替换该循环?

答案

git diff --name-only --diff-filter=U

git diff --check

将显示包含冲突标记(包括行号)的文件列表。

例如:

> git diff --check
index-localhost.html:85: leftover conflict marker
index-localhost.html:87: leftover conflict marker
index-localhost.html:89: leftover conflict marker
index.html:85: leftover conflict marker
index.html:87: leftover conflict marker
index.html:89: leftover conflict marker

来源: https://ardalis.com/detect-git-conflict-markers

试图回答我的问题:

不,似乎没有比问题中的方法更简单的方法了。

在多次输入之后,只需将较短的内容粘贴到名为 “git-conflicts” 的可执行文件中,即可使用 git 进行访问,现在我可以: git conflicts获得我想要的列表。

更新:按照 Richard 的建议,您可以设置 git 别名,以替代可执行文件

git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'

在别名上使用可执行文件的一个优点是,您可以与团队成员共享该脚本(在仓库的 bin 目录中)。