競合のリスト(競合するファイルの名前と競合の数)を確認する方法はありますか?gitは作業フォルダ内の競合の数/競合のリストを見つけた
私が発見した唯一のことは、事前に作成.git/MERGE_MSG
ファイルを確認することです...しかし、これは私が本当に...
競合のリスト(競合するファイルの名前と競合の数)を確認する方法はありますか?gitは作業フォルダ内の競合の数/競合のリストを見つけた
私が発見した唯一のことは、事前に作成.git/MERGE_MSG
ファイルを確認することです...しかし、これは私が本当に...
編集探しものではありません。もちろん、簡単に明らかとオーバー - 工学無料回答はgit status
、kostixnotesです。これの短所は、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
は、私はちょうど競合マーカーの
=======
一部に
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
git status
がマージに失敗しているファイルを示しそのようなファイルの解決された状態を記録する方法のヒントと共に、自動的に衝突を起こします。
これは、bash 4で動作する便利な機能です。これには、あらゆる種類の単一ファイルの統計情報を追加できます。競合の数を表すコード行数。
#!/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
はい、でも...競合するファイルのみを表示するスイッチはありますか? – shytikov
@AlexeyShytikov、私はお手元にはわかりませんが、マニュアルからは 'git status --short'は2文字を使ってリストアップされた各ファイルの状態をコード化することができます。出力の関連するビットだけを 'sed'または' grep'するシェルスクリプトで 'git status --short'を呼び出すことは可能です。 – kostix
一方、@me_andと答えた方は、とにかくスクリプトを書く必要がありますので、彼のアプローチをとることがより論理的かもしれません(そして独自の磁器コマンドを実装する)。 – kostix