git发现了工作文件夹中的冲突数/冲突列表

shy*_*kov 9 git dvcs

有没有办法检查冲突列表(冲突文件的名称和冲突数量)?

我发现的唯一的事情是审查预先创建的.git/MERGE_MSG文件......但这不是我真正寻找的...

me_*_*and 18

编辑:当然git status,正如kostix 所说,简单,明显和过度工程的免费答案.这样做的缺点是git status检查索引的状态与工作副本相比较慢,而下面只检查索引,这是一个更快的操作.

要获取冲突文件的名称,请使用git ls-files --unmerged.

$ git ls-files --unmerged
100755 f50c20668c7221fa6f8beea26b7a8eb9c0ae36e4 1       path/to/conflicted_file
100755 d0f6000e67d81ad1909500a4abca6138d18139fa 2       path/to/conflicted_file
100755 4cb5ada73fbe1c314f68c905a62180c8e93af3ba 3       path/to/conflicted_file
Run Code Online (Sandbox Code Playgroud)

为了方便起见,我在我的~/.gitconfig文件中有以下内容(我无法申请信用,但我不记得原始来源):

[alias]
    conflicts = !git ls-files --unmerged | cut -f2 | sort -u
Run Code Online (Sandbox Code Playgroud)

这给了我:

$ git conflicts
path/to/conflicted_file
Run Code Online (Sandbox Code Playgroud)

为了解决单个文件中的冲突数量,我只使用冲突标记grep=======一部分:

$ grep -c '^=======$' path/to/conflicted_file
2
Run Code Online (Sandbox Code Playgroud)

您可以将以下内容添加到您的~/.gitconfig以及conflicts上面的行中:

[alias]
    count-conflicts = !grep -c '^=======$'
    count-all-conflicts = !grep -c '^=======$' $(git conflicts)
Run Code Online (Sandbox Code Playgroud)

这会给你:

$ git conflicts
path/to/a/conflicted_file
path/to/another/different_conflicted_file

$ git count-conflicts path/to/a/conflicted_file
2

$ git count-all-conflicts
5
Run Code Online (Sandbox Code Playgroud)