10

競合のリスト(競合するファイルの名前とその中の競合の数)を確認する方法はありますか?

私が発見した唯一のことは、事前に作成された.git/MERGE_MSGファイルを確認することです...しかし、これは私が実際に検索しているものではありません...

4

4 に答える 4

20

編集:もちろん、kostixが指摘git statusしているように、簡単で、明白で、過剰に設計された無料の答えはです。これの欠点は、作業コピーと比較してインデックスのステータスをチェックすることです。これは低速ですが、以下はインデックスのみをチェックするため、操作がはるかに高速になります。 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

簡単にするために、~/.gitconfigファイルには次のものがあります(クレジットを請求することはできませんが、元のソースを思い出せません)。

[alias]
    conflicts = !git ls-files --unmerged | cut -f2 | sort -u

これは私に与えます:

$ git conflicts
path/to/conflicted_file

1つのファイル内の競合の数を計算するには、競合マーカーgrepの一部に使用します。=======

$ grep -c '^=======$' path/to/conflicted_file
2

上記の行~/.gitconfigだけでなく、次の行も追加できます。conflicts

[alias]
    count-conflicts = !grep -c '^=======$'
    count-all-conflicts = !grep -c '^=======$' $(git conflicts)

これはあなたに与えるでしょう:

$ 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
于 2012-06-13T12:08:32.300 に答える
1

git statusは、自動的にマージできず、競合しているファイルを、そのようなファイルの解決された状態を記録する方法のヒントとともに示しています。

于 2012-06-13T12:41:06.153 に答える
1

TL; DR:

このコマンドは、競合が発生したすべてのファイルと各ファイルの競合の数のリストを表示します。

git --no-pager diff --name-only --diff-filter=U |xargs grep -c '^=======$'



競合の影響を受けるすべてのファイルを一覧表示します。

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

これにより、マージされていないすべてのファイルのリストが表示されます(ソース


競合の影響を受けるファイルの数を取得します。

git --no-pager diff --name-only --diff-filter=U | wc -l

競合の影響を受けるすべてのファイルと各ファイルの競合の数を一覧表示します。

git --no-pager diff --name-only --diff-filter=U |xargs grep -c '^=======$'

これにより、次のような出力が得られます(foo.txtには2つの競合があり、bar.txtには5つの競合があります)。

path/to/foo.txt:2
path/to/bar.txt:5


また、@ me_andが彼の回答で示唆しているように、エイリアスを作成することも役立つ場合があります。

于 2019-08-16T17:18:24.910 に答える
0

これはbash4で機能する便利なものです。これにあらゆる種類の単一ファイル統計を追加できます。たとえば、競合の数を表すコードの行数などです。

#!/usr/bin/env bash

shopt -s globstar
for theFile in ./**/*; do
   if [ -f "$theFile" ]
     then
        conflicts=`grep -c '^=======$' "$theFile"`
        if [ "$conflicts" != "0" ]
          then
            echo "$theFile $conflicts"
        fi
   fi
done
于 2014-03-27T16:16:15.923 に答える