1

ブランチ「x」にいて、ブランチ「y」からプルしようとしている場合、git に警告を発行させるにはどうすればよいですか?

例を挙げると、

私の現在のローカル作業ブランチが x で、次を発行しているとします。

git pull origin y

この時点で、「別のブランチを現在の作業ブランチにフェッチしてマージしています。続行しますか? (y/n)」のような警告を git に発行させたいと思います。

これは可能ですか?いくつかの設定オプションが含まれている可能性がありますか?

この間違いを元に戻す方法は知っていますが、そのような間違いをする前に警告を受けたいです。

4

2 に答える 2

2

プルリクエストの前にgit処理を停止して、ユーザー入力を受け取ることはできません。つまり、それは可能ですが、そのためには、gitにいくつかの変更を加えて、ソースからビルドする必要があります。私はこの道を進んでいません。

gitフック内で条件ステートメントを使用するための気の利いた小さなトリックがあります。gitフック内でRuby(または他の言語)を使用して、条件付きにすることができます。pre-commitこれは、実際の処理が行われる前に呼び出されるフックまたはフックで最適に機能します。の場合、git pullラッチできる唯一のフックはpost-mergeフックであり、それも処理全体が完了した後にのみ呼び出されます。したがって、ブランチがマージされた後に別のブランチをマージするかどうかをユーザーに実際に尋ねる意味はありません。そうです:)ただし、メッセージを表示することはできます。

これには、次のようなものを使用します。

#!/usr/bin/env ruby

branch=$(git rev-parse --symbolic --abbrev-ref $1)
if branch != $GIT_DIR/ORIG_HEAD
  puts "You merged a different branch dim wit"
end

今、私がやろうとしているのは、マージされたブランチが元のブランチ名と同じであるかどうかを比較し、そうでない場合はユーザーにメッセージを表示することです。これはremote、gitマージの概要に表示されます。

繰り返しになりますが、これが機能するかどうかはわかりませんgit rev-parse --symbolic --abbrev-ref $1。ブランチ名が表示されるかどうかはわかりません。

これもまた、単なる提案であり、あなたの質問に対する解決策ではありません:(

于 2012-09-30T21:18:20.800 に答える
1

現在のブランチが(のように)アップストリームブランチを追跡するように設定されている場合git branch --set-upstream test origin/testは、次のことを行う必要があります。

 git pull origin

(間違いの可能性を回避する)

注:gitのバージョンによっては、プッシュ操作にも影響があります。「の違いgit checkout --track origin/branchgit checkout -b branch origin/branch」を参照してください。

したがって、あなたの質問に正確に答えるために:gitでその警告を取得する組み込みの方法はありませんrizwaniqbal回答
(賛成)で 推奨されているフックスクリプトをバージョン管理することもできますが、各ユーザーは自分のリポジトリでそのフックを宣言する必要があります。

于 2012-09-30T18:37:20.410 に答える