2016-12-30 4 views
1

gitでpre-receiveフックを作成しようとしていますが、期待どおりに動作しています。拒否されたgit pushが 'git status'に表示されないのはなぜですか?

しかし、フックが失敗すると(つまり、スクリプト内で検証に失敗した) 'git push'は期待どおりに拒否され、関連するエラーメッセージが表示されます(エラー:作業ディレクトリの「status」には、プッシュが失敗したことを示す何も表示されません。

開発者は自分のプッシュが失敗したことに気づかなかった場合は、彼らが何か問題があったことを「Gitの状態」の出力から知ることはできません。

どのコマンド私はすべてのコードが押されたかどうかを確認するために使用することができますか?

+1

まあ、_gitステータス_はローカルレポの状態を確認するためである、と_git push_は、リモートリポジトリで作業するためのものです。私はあなたの質問への答えが何であるかわからないが、gitは設計どおりに働いている。プッシュしたときにエラーメッセージが表示され、ローカルのrepo_のステータスが正しいことを示します。 – TriskalJM

+1

@ TriskalJMさんのコメント以外にも、ローカルブランチを "origin/master"を "track"に設定している場合、 'git status'はあなたがGitの他のGitの記憶値の先や後ろにいるコミット数を表示します'master'(あなたの' origin/master'はあなたのGitのこれの記憶です)。 Gitのメモリを更新するには、 'git fetch origin'を実行してください。' git status'は正確な(現在のところ)カウントを与えます。あなたが 'git push 'を実行するときには誰かが新しいコンテンツをプッシュしているかもしれないことを忘れないでください。誰でも最速にプッシュすると勝利する。 – torek

答えて

2

あなたはmaster枝上にある場合は、お近くのmaster分岐マッチリモートリポジトリ内masterの状態かどうかを確認するには、次のコマンドを使用できます。プッシュはしていなければならないという違いがありません場合は

git diff origin/master 

働いた。いくつかの異なるファイルが表示されている場合、プッシュは機能しませんでした。または、他の何らかの理由(新しい未コミットのローカルコードなど)で、ローカル状態が発信元(つまり、リモートのレポ)と一致しません。名前MY_BRANCHとブランチを比較したい場合は

より一般的にgit diff origin/MY_BRANCHを使用しています。

関連する問題