我只需要一份冲突文件列表。

还有什么比:

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

or:

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

我想我可以为此设置一个方便的别名,但我想知道专业人士是如何做到的。我会用它来写shell循环,比如自动解决冲突等等。也许可以通过插入mergetool.cmd来替换这个循环?


当前回答

git status --short | grep "^UU "

其他回答

对我来说,公认的答案并不管用。为了防止捕获

警告:[]中的LF将被CRLF取代。 该文件在您的工作目录中有其原始的行结束符

在Powershell中我使用了这种方法:

git ls-files -u| ForEach{($_.Split("`t"))|Select-Object -Last 1}| get-unique

试图回答我的问题:

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

在键入太多次之后,只是将较短的一个粘贴到一个名为“git-conflicts”的可执行文件中,让git可以访问,现在我可以: git冲突来获得我想要的列表。

更新:正如Richard所建议的,你可以设置一个git别名,作为可执行文件的替代

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

通过别名使用可执行文件的一个优点是,您可以与团队成员共享该脚本(在repo的bin dir部分)。

我一直只使用git状态。

可以在最后添加awk来获得文件名吗

git status -s | grep ^U | awk '{print $2}'

我在这里的2美分(即使有很多很酷/有用的回应)

我在.gitconfig中创建了这个别名

[alias]
 ...
 conflicts = !git diff --name-only --diff-filter=U | grep -oE '[^/ ]+$'

它只会显示有冲突的文件的名称。不是他们的全部路线:)

查尔斯·贝利的回答略有变化,提供了更多信息:

git diff --name-only --diff-filter=U | xargs git status