git 如何列出包含冲突标记的文件而不重复?

b4lqfgs4  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(118)

我使用git diff --name-only -S====来尝试列出带有冲突标记的文件,因为有时我在文本编辑器中解决了冲突,但忘记将其标记为合并。但问题是,如果文件有多个冲突,则文件会多次列出,每个冲突一次。有没有一种方法可以避免重复?
我更喜欢只使用git而不使用UNIX工具的解决方案,这样无论是在Windows命令提示符下还是在Bash shell下都可以运行。但是,如果只使用git是不可能的,那么使用UNIX工具的解决方案也可以。
此外,如果有更好的方法来检测冲突标记,那就太好了,因为字符串====可能会因为其他原因而出现,尽管对于我正在处理的特定代码库来说,这是非常罕见的。

omqzjyyz

omqzjyyz1#

您可以运行

git ls-files --unmerged

字符串
获取git认为存在冲突且尚未被git add标记为已解决的所有文件的列表。
这将为每个文件提供给予2或3行,而不管文件中的冲突数量。

git ls-files --unmerged | cut -d "      " -f2- | uniq
# A single tab character between the double quotes


请注意,这与搜索冲突标记(可能会意外添加并提交)略有不同,因此您可能可以将这两种方法合并组合到find-conflicted-files.sh脚本中:

#!/bin/sh

# A single tab character between the double quotes
(
        git ls-files --unmerged | cut -d "      " -f2-
        git diff --name-only -S====
) | sort -u


不过,我还是推荐using KDiff3 to resolve conflicts,因为这样的话,解决冲突的时候不可能忘记将其标记为合并。当冲突解决后,它就完成了。
除了一个适当的,完整的3路合并操作是上级只是一个2路冲突视图,是大多数IDE/编辑器提供。

相关问题