获取冲突文件列表的最简单方法是什么?

我只需要一个普通的冲突文件列表。

有什么比以下更简单的:

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

要么

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

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

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

试图回答我的问题:

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

在input太多次之后,只需将较短的一个粘贴到名为“git-conflicts”的可执行文件中,使其可以被git访问,现在我只需要: git conflicts来获取我想要的列表。

更新:正如理查德所说,你可以设置一个git别名,作为可执行文件的替代品

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

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

 git status --short | grep "^UU " 

这是一个傻瓜式的方法:

 grep -H -r "<<<<<<< HEAD" /path/to/project/dir 

git status会在有冲突的文件旁边显示“both modified”,而不是“modified”或“new file”等

你可能会在你的命令行上打git ls-files -u它列出冲突的文件

这适用于我:

git grep '<<<<<<< HEAD'

要么

git grep '<<<<<<< HEAD' | less -N

如果你尝试提交,如果有冲突,那么git会给你列出当前未解决的冲突…但不是一个普通的列表。 这通常是交互式工作时所需要的,因为在解决冲突时,列表变短。

也许这已经添加到Git中,但是尚未parsing的文件在状态消息(git status)中列出,如下所示:

 # # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: syssw/target/libs/makefile # 

请注意,这是“未合并path”部分。

我一直只使用git status

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

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

查尔斯·贝利(Charles Bailey)答案的细微变化给出了更多信息:

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