2016-02-25 6 views
8

早期のコンフリクト検出の方法として、私と他のすべての共通の修正されたファイルのgitブランチを検索したいと思います。 gitを使って私がこれを行うことを可能にする方法がありますか(またはシェルスクリプトを使って)見落としていますか?gitブランチを共通のファイルで検索する

私は今のところ考えてきた方法は、ポストコミットフックとして、次のとおりです。

  1. 私が探しすることがありますすべてのファイルを決定するために、私はにいる枝にgit diff --name-only masterを実行します他の支店に戻る
  2. 検索中/リモートリポジトリにgit diff --name-only origin/<remote branch> origin/masterを経由してすべての人の他のリモート支店で(前のステップで)私が得てきたファイルごとにgrep'ing
  3. (矛盾枝のリストを生成するために) 1つまたは複数のファイルtを含むブランチのリスト帽子の競合、私の検索/ grepの結果に基づいて。

答えて

4

利用可能な方法のほとんどは、「How can I preview a merge in git?

に記載されていますあなたが言及第二段階は、

git diff --name-status origin/abranch 

(実際--no-ff--no-commitでマージを行うと比較して)最速の一つであります(デフォルトでHEADと比較されます)

add a status filterあなたは変更されたファイル(branche s変更の場合)

最初の手順は不要です:2番目の手順は、HEADと比較して共通の変更ファイルを直接一覧表示します。

git diff --name-status --diff-filter=M origin/abranch 
+0

私は私の質問を改訂しましたが、http://stackoverflow.com/a/33267627/1034537のコマンドは、基本的に私は希望bashスクリプトの例です。私のシナリオで作成する(私はすべてのリモートブランチをループすることを除いて)。 – BLaZuRE

+0

@BLaZuREはリモート追跡ブランチをループし、それぞれに対して 'git diff --name-status --diff-filter = M origin/abranch'を実行します。共通の修正ファイル(潜在的な競合の可能性がある候補)の一覧が表示されます – VonC

3
potentially-conflicting-changes-between() { 
     local base=`git merge-base $1 $2` 
     { git diff --name-only $base $1 
      git diff --name-only $base $2 
     } | sort | uniq -d 
} 

競合を調べるでしょうマージすべてのファイルが表示されますが、それは、引用文献を実行しているだけの問題だ、最も簡単なあなたはまた、低を行うことができます

for other in `git branch -r`; do 
     printf '--- \n%s %s\n' master $other 
     potentially-conflicting-changes-between master $other 
done 

かもしれません-level merge prepを使用すると、同じ変更で誤検出を排除することができます。これにより、時間が大幅に節約できますが、潜在的な競合のインデックスの詳細が一覧表示され、私は不明であったと感じので、コミットされていない作業にompingは

potentially-conflicting-changes-between() 
{ 
    (export GIT_INDEX_FILE=`git rev-parse --git-dir`/scratch-index; 
    git read-tree --empty; 
    git read-tree -m $(git merge-base $1 $2) $1 $2; 
    git ls-files -u) 
} 
+0

素敵なスクリプトです。 +1 – VonC

+0

ありがとうございます。 。 。 。 hm。それは私のお気に入りのコマンドはここのチケットです私に発生します。 – jthill

+0

git merge-base? (http://stackoverflow.com/a/24376032/6309) – VonC

関連する問題