プッシュしようとするとGitエラー— pre-receiveフックが拒否されました


206

コミットした変更をプッシュしようとすると、次のエラーが表示されます...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

どうしたの?


8
事前受信フックオンmycogitには何がありますか?
rob mayoff

大きなファイルをgithubにプッシュしようとしていませんか?
アダムF

参考までに:今日、私の同僚全員にこのエラーメッセージが表示されました。最終的にはstashサーバーを再起動することにし、魔法のように修正されました。問題が実際に何であったかはわかりません。
T_D

回答:


125

でリポジトリを管理している人に質問してくださいgit@mycogit/cit_pplus.git

コミットはそのリポジトリのpre-receiveフックによって拒否されました(これは、受信したコミットを分析し、それらがリポジトリに受け入れられるのに十分かどうかを判断するためのユーザー設定可能なスクリプトです)。

その人にフックを更新するよう依頼することも良い考えです。そうすれば拒否の理由を出力します。

メンテナーがあなた自身である場合、サーバー側の設定に問題があるようです。詳細を教えてください。


7
私の場合、BitBucketはコミットメッセージの内容を検証し、その時点でオフラインだったJIRAチケットに直面していました。
ビトー・ニールAvelino

1
それがオンラインになったとき、修正されましたか?
シャリーフ2016年

5
私の場合、コミットが生成されたユーザー名とBitBucketのユーザー名が一致していませんでした。BitBucketユーザー名を更新する権限がなかったため、コミットをリセットして、更新したユーザー名で再度コミットする必要がありました。このコマンドでgitユーザー名を更新できますgit config user.name 'UpdatedUserName'
MM

3
私たちの場合、bitbucketは誰もがこのブランチにプッシュすることを許可しませんでした。
Ramon Fincken

私の場合、bitbucketでリポジトリ設定を見つけて、フック設定で確認コミッターを無効にする必要がありました。
Sizons

78

私はあなたが非早送りプッシュを試みていて、フックがそれをブロックしていると思います。その場合は、git pull --rebaseプッシュする前に実行して、ローカルの変更を最新のコードベースにリベースします。


これは素晴らしいです。これで再びプッシュおよびプルできますが、その前にアップストリームをとして設定する必要がありgit branch --set-upstream-to=origin/myBranchます。あなたの答えのために+1。
AlokeT

新しいリポジトリで(マスターではなく)ブランチをプッシュし、それをリベースしてプッシュ中にエラーが発生しました。ウェブフックが見つかりませんでした。私は実行しgit pull --rebase、再度リベースする必要があり、ブランチをプッシュすることができました。最後に、自分のブランチが保護されていることがわかりました。
CoolMind

60

ファイルサイズは重要です。1つのファイルに最大120MBの制限があります。私の場合、Visual Studioを使用した.gitignoreではファイルがリストされていましたが、ファイルはまだコミットされていました。git cliを使用すると、エラーに関する詳細情報を取得できます。

受信前フックが拒否されたのは、大きなファイルが原因です。基本的にプッシュを検証します。

それを解決するために、私は最後のコミットを次のように削除しました:

git reset --soft HEAD~1

次に、ファイルをコミットから除外しました。

注:以前のN回のコミットに戻るには、HEAD〜Nを使用します。(つまり、3、4)フォルダの変更を維持するには、常に--softスイッチを使用します

それが役に立てば幸い。


私の問題は不要なSQLダンプファイル(ファイルサイズが155mb)が(偶然に)プッシュされていたため、これは役に立ちました。
Mehrdad Dastgir 16

1
ファイルサイズの制限は、ホスティングプロバイダーによって異なります。GitHubにはそのサイズの前後に制限があり、他のユーザーにはさまざまです。また、セルフホストgitには当然そのような制限はありません。
1615903

1
拒否されたプッシュの後ですでにいくつかのコミットがある場合はどうしますか?これは私のケースです私が以前のコミットの1つに不要な大きなファイル(627MB)があり、リポジトリにプッシュしようとする前に
leeCoder

誤ってCSVファイルをアップロードしてしまいました。だから私の場合、エラーはそれが原因でした。
tonhozi

複数のコミットがある場合は、インデックスを増やして、ヘッドをそのコミットにリセットします。たとえば、HEAD〜3を使用して、前の3つのコミットに戻ります。フォルダの変更を維持するには、常に--softスイッチを使用します。
ozkary

13

これは、コミットをのようなブランチにプッシュするアクセス権を持っていなかったためと考えられますmaster。メンテナにコミットをプッシュする権利を与えるよう依頼することができます。


これは正しいと思いますが、興味深いのは、VSがリモートへの実際のブランチ名ではなく、親ブランチにプッシュしようとしているようです。したがって、親ブランチが保護されている場合、これは発生しているように見えますが、VSでこれを修正する方法が見当たらず、cmd行に切り替える必要があります。
マーク・


8

GitLabサーバーに変更が加えられているときにこのメッセージが表示されました。翌日のプッシュはうまくいきました。とにかく、他の人が指摘したように、メンテナに確認してください。


1
ちょうどこの問題があり、GitLabが変更を加えていたと思います。それを10分与えたとそれは働いた。何も変えなかった。
woter324

ちょうどこの問題もありました。これが当てはまるかどうかを確認したい人のために:status.gitlab.com
Renan Ferrari

5

リモートリポジトリで許可されているサイズよりも大きいファイルサイズの変更をマージしようとすると、この問題が発生しました(私の場合はGitHubでした)


2
私の場合も、ファイルを削除した後のGitHubはまだ訴えた...しかし、この答えは、トリックでしstackoverflow.com/questions/19573031/...
CodenameDuchess

5

これと同じ問題が発生しました。
私にとってそれを解決したのは、別のブランチに切り替えてから、元のブランチに戻すことでした。

下線の原因が何かはわかりませんが、これで修正されました。


新しいブランチにもプッシュできませんでした
zabop '22


2

それが誰かを助ける場合:

(Gitlabで)保護を解除するマスターブランチのない空のリポジトリがあったため、実行する前に git push -u origin --all

  • 私は走らなければなりませんでした git push -u origin master最初、
  • マスターブランチの保護を一時的に解除する
  • 残りを押します(--all--tags

2

私は同じエラーに直面しました。チェックすると、開発者アクセス権があり、新しいブランチを公開できませんでした。より高いアクセス権を追加すると、この問題が解決しました。(Gitlab)


2

GitHub gistでこのエラーが発生しました。サブディレクトリにあるファイルでコミットをプッシュしようとしました。判明した要点は、ルートディレクトリにのみファイルを持つことができます。


これも手に入れました。リポジトリには、"snippets\\csharp.json"Windowsでgitを使用するのに苦労したファイルがあったことがわかりました。
カールウォルシュ

2

保護されたブランチオプションを削除するか、開発者や管理者などの追加の役割に、このエラーが発生したこれらのユーザーがマージとプッシュを実行できるようにします。


1

私の場合、コミットメッセージ用のフックがあり、サーバースクリプトは、コミットメッセージ用の特別な形式がある場合にコミットを受け入れます"<JIRA ID><Message>"。それぞれのJiraチケットが存在しない場合、またはコミットメッセージに特別な記号が含まれている場合、それはフックを拒否します。コミットメッセージに/、[、>などを追加すると、このエラーが発生し、それらを正常に削除できます。


元の投稿者(および将来アクセスする人)は、事前受信フックとして構成された別のスクリプトを持っているため、この回答は役に立ちそうにありません。
aronisstav

1

これは実際には、BitBucketのサーバー側でYACCが有効になっているときに発生します。YACCは、JIRA課題名をコミットメッセージで言及できるようにします。したがって、少なくとも何かをコミットするときはいつでも、JIRA番号をコミットメッセージに保持し、さらに独自のメッセージを追加できます。


1

私はGitKrakenを使用していて、ローカルブランチを作成し、その中に2つのリモートブランチをマージしてから、ローカルブランチをオリジンにプッシュしようとしました。同じエラーメッセージでは機能しませんでした。

解決策はしていた地元のブランチを作成し、それを最初に押して原点にして、マージを行います。


1

問題:「PUSH Failed refs / head /-pre-receiveフックが拒否されました」

リポジトリのサイズが2 GBのハード制限を超えていたため、特定のプロジェクトリポジトリのオリジンブランチやマスターブランチに変更をプッシュできないという問題に直面しました。エラーが発生していました。これは、他のテストブランチから無意識のうちにテストデータをbitbucketにプッシュしたためです。

PUSH Failed refs / head /-pre-receiveフックが拒否されました

そのため、他のプロジェクトリポジトリと同じように確認したところ、問題はありませんでした。

修正:

私の同僚は、プロジェクトをローカルに複製したときに、プロジェクトのサイズが110MBであることに気付きました。そこで、以前にマージしたブランチと不要になったアクティブなブランチのクリーニングを開始しました。いくつかのブランチでそのクリーニングが完了すると、リポジトリのサイズが2GBから120MBに大幅に減少したことに気付きました。次に、変更を私のブランチにプッシュしようとしましたが、うまくいきました。


1

私の場合、新しいリポジトリがあり、ブランチ( 'master'ではなく 'UCA-46')をプッシュし、それをリベースし、再度強制的にプッシュしてエラーが発生しました。Webフックはありませんでした。@ThiefMasterのアドバイスどおりに実行git pull --rebaseし、再度リベースする必要があり、ブランチをプッシュすることができました。しかし、それは奇妙で難しい方法でした。

次に、Gitプッシュエラーの事前受信フックが拒否されるのを確認しました。私の枝は保護されていることがわかりました。保護を解除し、強制的に再度押すことができました。

ここに画像の説明を入力してください


0

dokkuインスタンスにプッシュしようとすると、これが発生しました。サーバーのディスクがいっぱいであることがわかりました。

ラン: du -f

そして結果は:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

私にとっては、リモートgitサーバーでの承認により問題が解決します。 ここに画像の説明を入力してください


0

私の場合は、コミットされていないプッシュに誤って巨大なファイルを追加したためです。プルやリセット、またはrmを実行しても、それを取り除くことができませんでした。

私の汚い解決策ですが、実行可能な解決策は、現在のディレクトリの名前を変更し、ディレクトリをローカルに再クローンして、再クローンされたローカルディレクトリに手動で変更を反映することです...

それは良く聞こえませんが動作します...


1
私は同じ問題に直面し、@ ozkaryが示唆したように$ git reset --soft HEAD〜1を使用しました。
jarrettyeo 2018年

0

私のエラーは、プロジェクトにはブランチが作成されておらず、私の役割は開発者であったため、ブランチを作成できず、適切な権限とすべてを今すぐに提供するように要求できなかったことです。


0

masterリモートのデフォルトのブランチ(など)はまだ存在しません。したがって、最初にmastergitリモートサーバーにブランチを作成(たとえば、デフォルトREADME.mdファイルを作成)する必要があります。次にpush、次のコマンドを使用して、既存のすべてのローカルブランチにアクセスしてみます。

git push -u origin --all

0

私にとって、Bitbucketが今日(2020年4月21日)にポリシーを自動的に変更するまで、すべてが問題なく機能していました。これは、最近導入されたワークスペースと呼ばれる新機能と偶然に一致しているので、それに何らかの関係があると思います。

回避策:私(管理者として)の指示に従って、UIでユーザーにメールアドレスを追加しました(使用しているメールは見つかります)git config --list

ここに画像の説明を入力してください


-7

node.jsバージョンを指定すると、次のような問題を解決できます

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.