3

特定のブランチからマージする場合にのみ実行されるマージ後のフック スクリプトを作成しようとしています。特定のコミットのブランチ変更の名前を特定するにはどうすればよいですか?

例えば

if $from_specific_branch == 1 then 

git diff --name-status HEAD@{1} HEAD "some_folder" | 
   while read st file; do
      #skip deleted
      if [ "$st" == 'D' ]; then continue; fi

      # .. do something with those files
   end
4

3 に答える 3

2

まず、任意のコミットを現在のコミットにマージする可能性があることに注意してください。実際、どのブランチにある必要もありません。

マージを作成するとき、最初の親 ( HEAD^1) は常にマージ時にいたブランチであると思います。したがって、(タコのマージの場合は、おそらく も) を見て、それらHEAD^2が特定のブランチにあるかどうかをテストできます。HEAD^3HEAD^4

HEAD^2がブランチ上にあるかどうかをテストするには、 が と同じfooかどうかをテストできます。git merge-base HEAD^2 foogit rev-parse --verify HEAD^2

于 2011-08-31T19:45:49.613 に答える
1

フックで $GIT_REFLOG_ACTION を使用するだけです。これには、merge some_branch_name や pull origin some_branch_name などのテキストが含まれます。

于 2015-06-09T14:19:44.050 に答える
0

git branch --contains <commit>すべてのブランチを一覧表示するために使用できます。そのコミットを含むすべてのブランチをリストするので、あなたが望むものを正確に達成できるかどうかはわかりませんが、新しいコミットでマージしていると仮定すると、うまくいくかもしれません...

于 2011-08-31T20:33:07.483 に答える