2017-02-05 7 views
4

コミットマッサージで与えられた文字列を含むコミットをgitが押さないようにするにはどうすればいいですか? "プッシュしないでください"?`git`が与えられたコミットメッセージでコミットを押さないようにする

/ユースケースコンテキスト:

私の典型的なワークフローは次のとおりです。 私はハックをハック、分割作業ミクロにコミットし、 物事は、私は彼らが合理的と後で大きな意味のあるに押しつぶしグループにコミットの順番を変更し、歴史を書き換える作業後ピース。 作業が完了したら、物事をプッシュする準備が整いました!

私はgitが誤ってまだ進行中のリポジトリコミットに押し込まれないようにしたいと思います。 私はコミットメッセージの一部として "DO NOT PUSH"を保持すると考えました。 git pushの後にコミットに達するとgitが自動的にプッシュするのを防ぐ方法を教えてください。 (事前に受け取るためのフックソリューションに:のは、その「エンタープライズ」版を除いて、私の知る限りdoes not allow pre-recevie hooks例サービスとしてgithubのを考えてみましょう)

あなたはpre-pushフックを使用することができます

+0

[git stash](https://git-scm.com/book/) en/v1/Git-Tools-Stashing)あなたのために仕事をしますか? – michalronin

+0

答えに何か不足していますか? – VonC

+0

*私は複数の草案マイクロコミットの複数の支店を持っており、それらをテストします。それらを比較してください。 * 'git rebase -i'は私にとってうまくいくものです。いったん私が望む形に達すると、私は編集して、コミットします。 –

答えて

4

が、それはどのローカルフックのままバイパスすることができます。
このpre-push example which does look at each commit message

# Check for foo commit 
     commit=`git rev-list -n 1 --grep '^foo' "$range"` 
     if [ -n "$commit" ] 
     then 
echo "ERROR: git pre-push hook found commit message starting with 'foo' in $local_ref" 

しかし、しかし、サーバー側でpre-receive hook残って最善の方法を参照してください。そうすれば、ポリシーはすべての寄稿者に適用されます。これは常に可能ではありません(GitHub、BitBucket、GitLab.comなどのリモートサーバに直接アクセスできない場合)

+0

@リオン確かに、追加されました。 – VonC

+0

上記のとおり、これは正解ですが、検証はサーバー側で行う必要があります。どの開発者もローカルフックを無効にすることができるので、サーバー上で確認する必要があります。あなたが確認する必要があるのは、最後のコミットだけをチェックする '-n 1'を使用するということです。ユーザは一度に複数のコミットをプッシュできるので、すべてのコミットでそれを行う必要があります。 – CodeWizard

関連する問題