Gitプッシュエラーの事前受信フックが拒否されました


167

仮想マシンでgitlabhq railsサーバーを実行し、このチュートリアルのhttps://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.mdの 1〜6ステップに従ってコマンドを実行し、railsサーバーを起動しますsudo -u git -H bundle exec rails s -e production。その後、管理ツールを使用してユーザーを作成し、このユーザーの下に新しいプロジェクトを作成しました。次に、いつものように既存のプロジェクトをこのリポジトリにプッシュしようとしています。しかし、最後のステップgit push origin masterで、エラーで失敗します

[リモート拒否]マスター->マスター(事前受信フックは拒否されました)

追加情報:

1)メールアクティベーションリンクでユーザー(プロジェクトオーナー)をアクティベートしていません。サーバー側でポストサービスを設定しておらず、その方法もこのマニュアルに記載されていなかったためです。

2)Gitlabサーバーはプロジェクトをリポジトリにプッシュする方法のヒントを生成しますがrepositories/、パスがありません。私はそれが正しいgit@mygitlabhost:user/repo.gitgit@mygitlabhost:repositories/user/repo.gitではなく生成することを意味します。

私はそれをデバッグしようとしたとき3)、私が開いてpre-receive、サーバー上のレポ内のスクリプトを、出力変数に試してみました(それらの3があります): refs = ARGF.readkey_id = ENV['GL_ID']repo_path = Dir.pwdとのkey_idは常に空であることを発見しました。多分問題はここにあります...もしそうなら、それを修正する方法についての提案をお願いします。ありがとう


13
すべてのソフトウェア開発チームに少なくとも1人は毎日目覚め、他の開発者の生活をより困難にする方法を考えています。
samayo

ほとんどの人に役立つはずの非常に人気のある答えがあるようです。しかし、私の場合、誤ってプッシュしようとしたときに別のマシンから別のプッシュがすでに進行しているときに、Git Hubから同じメッセージが受信されました。
Hack-R

回答:


230

GitLabはデフォルトでmasterブランチにマークを付けますprotectedhttps://about.gitlab.com/2014/11/26/keeping-your-code-protected/の一部Protecting your codeを参照)。もしそうなら、これはそれを助けることができます:

プロジェクト>設定>リポジトリを開き、「保護されたブランチ」に移動して、リストから「マスター」ブランチを見つけ、「保護解除」をクリックして、もう一度やり直してください。

https://gitlab.com/gitlab-com/support-forum/issues/40経由

バージョン8.11以降のハウツーの場合:https : //docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users


8
UIが少し変更されました。プロジェクトの[設定]の後に、[リポジトリ]タブをクリックします。それから「保護された枝」
Donn Lee

OPと同じ問題が発生していましたが、この解決策でうまくいきました。しかし、今、私は疑問に思っています、なぜですか?私はしばらくgitlabを使用していますが、突然これをしましたか?何が変わったの?
Andrew Lamarra 2017年

2
GitLab 8.11オプションが少し変更されたので、詳細をここ
Arghya C '29 / 03/18

同じ問題に直面しています。ここでは、他のブランチをプッシュすることもできません。私はそれを初めて押しています。
Santosh Kadam

1
保護されていないものを削除しましたが、どうなりますか?世界中の誰でもこのレポで作業できますか?
Flutterer

14

私のローカルマシンで解決された問題に続いて:

A.まず、正しいログオン詳細を使用してBitbucket Serverに接続していることを確認します(つまり、自分に属するユーザー名/パスワード/ SSHキー) 

B.次に、名前/電子メールアドレスがローカルGit構成で正しく設定されていることを確認します。プッシュしようとしているアカウントのローカルGit構成を設定します(チェックは、あなたがファイルをコミットした人物であると断言します)*これは、名前と電子メールアドレスの両方で大文字と小文字が区別されることに注意してください。*スペースも区別されます-一部の企業アカウントには、名前に余分なスペース/文字があります。「Contractor/ space space(LDN)」Bitbucket Serverと同じ数のスペースを構成に含める必要があります。動かなくなった場合は、メモ帳で確認してください。

C.間違ったアカウントを使用していた場合は、アカウントの認証情報(ユーザー名/パスワード/ SSHキー)を切り替えて、もう一度プッシュしてみてください。

D.それ以外の場合、ローカル構成が正しくない場合は修正する必要があります。

Mac用

open -a TextEdit.app ~/.gitconfig

注:プッシュしようとしていた古いコミットを修正する必要があります。

  1. 最後のコミットを修正します。

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. コミットを再プッシュしてみてください:

    > git push
    

12

私の場合は、レポを作成した(レポは空だった)ととして私を割り当てるに私のチームのリード開発者は、私が直接私が直面していたエラーをマスターするためのコードにプッシュしてたときに! [remote rejected] master -> master (pre-receive hook declined)、それが彼のように私に割り当てられていることを固定し、どのようにしメンテナ Iので、コードをマスターに直接プッシュすることができました


10

問題はsidekiqのようないくつかのサービスにあるようです。実行sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productionすると、configに関するすべての問題が出力されます。



2

プロジェクトまたはマスターブランチへの開発者アクセス権がない可能性があります。新しい作業を進めるには、開発者のアクセス権が必要です。

新しい作業は、新しいブランチとコミットを意味します。


2

そうではないかもしれませんが、これが私の「事前受信フックが拒否されました」エラーの解決策でした。

プルリクエストによる変更のみを許可するリポジトリがいくつかあります。これはあなたがしなければならないことを意味します

  1. 変更をプッシュするブランチをベースとして、新しいブランチを作成します。
  2. コミットして、変更を新しいブランチにプッシュします。
  3. プルリクエストを開いて、ブランチを元のブランチとマージします。

0

sshキーをgitアカウントに追加する必要があります。エラーがスローされた場合は、以前のsshキーを削除し、新しいsshキーを作成してから追加してください。


それは助けにはならなかった。:(両方のアカウントでテスト済み-VMおよびローカルマシンレスポンスのrootおよびmyuser
Hroft

git remote -vを確認してください。gitリポジトリが追加されているかどうかを確認してください。
Hardik Hardiya、2015

'git remote -v'の出力:origin git @ mygitlabhost:repositories / user / repo.git(fetch)origin git @ mygitlabhost:repositories / user / repo.git(push)
Hroft

ホストされたgitlabを使用している場合、問題はおそらく側にあります。数分後にもう一度やり直してください。
Erik Aronesty、2018

0

私は変更することで、この問題を解決したremote 'origin' urlからhttpgitしてプロトコル.git/config


0

プロジェクト設定->フック->(下)プリ受信フックに移動します。

コミットを無効にする


0

BitBucketを使用して同じエラーに遭遇しました。オンラインでバックアップしたいローカルGitリポジトリがあるため、(Webインターフェイスを使用して)BitBucketアカウントから新しいリポジトリを作成しました。

を実行した後git remote add origin git@bitbucket.org:StatMarianne/<a private repo>.gitgit push origin master無駄に走りました(プッシュとプルの際に完全なリポジトリ名とブランチ名を入力することを気にしないため、通常は-uオプションを使用しgit pushません)。

読み取ったエラー:

remote: You're not allowed to write to this repository.
To bitbucket.org:StatMarianne/<a private repo>.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:StatMarianne/<a private repo>.git'

しかし、実行すると、ローカルブランチが正常にプッシュされましたgit push -u origin master(厳密にはBitBucketの指示に従いました)。

とにかく-u--set-upstream)は「上流(追跡)参照を追加...」するだけなので、私はそれを意外と思います。


-1

私は同じ問題に直面しました。これは、自分のコードをマスターブランチに直接プッシュしているためで、これに対する権限がありません。そこで、コードを新しいブランチにプッシュし、その後、マスターとマージするプルリクエストを作成しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.