このチュートリアルの1〜6の手順に従って、gitlabhq Railsサーバーを仮想マシンで実行しました。 https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README .md でRailsサーバーを起動し、コマンドSudo -u git -H bundle exec Rails s -e production
を実行します。その後、管理ツールを使用してユーザーを作成し、このユーザーの下に新しいプロジェクトを作成しました。それから私はいつものようにこのリポジトリに既存のプロジェクトをプッシュしようとしています。しかし最後のステップで、git Push Origin master
はエラーで失敗します
[リモート拒否]マスター - >マスター(受信前フックは拒否されました)
追加情報:
1)サーバー側でポストサービスを設定していないため、このマニュアルではその方法を見つけられなかったため、電子メールアクティベーションリンクを介してユーザー(プロジェクト所有者)をアクティベートしていません。
2)Gitlabサーバーがプロジェクトをリポジトリにプッシュする方法のヒントを生成し、パスにrepositories/
がありません。私はそれが正しいgit@mygitlabhost:user/repo.git
の代わりにgit@mygitlabhost:repositories/user/repo.git
を生成することを意味します。
3)私がそれをデバッグしようとしたとき、私はサーバ上のリポジトリの中でpre-receive
スクリプトを開き、変数を出力しようとしました(refs = ARGF.read
、key_id = ENV['GL_ID']
そしてrepo_path = Dir.pwd
)たぶん、問題はここにあります...もしそうなら、それをどのように修正するかについて私に提案をお願いします。ありがとう
問題はsidekiqのようないくつかのサービスにあるようです。 Sudo -u git -H bundle exec rake gitlab:check Rails_ENV=production
を実行すると、configに関するすべての問題が出力されます。
GitLabはデフォルトでmaster
ブランチをprotected
としてマークします( https://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
私のローカルマシンで以下の問題を解決しました:
A.まず、Bitbucket Serverに接続するために詳細に関する正しいログを使用していることを確認してください(つまり、自分に属するユーザー名/パスワード/ SSHキー)。
B.それから、名前/メールアドレスがあなたのローカルGit設定で正しく設定されていることを確認してください。あなたがプッシュしようとしているアカウントのあなたのローカルGit設定を設定してください。これは、名前と電子メールアドレスの両方で大文字と小文字が区別されることに注意してください。*スペースも区別されます - 一部の企業アカウントでは、名前に余分なスペースや文字が含まれます。 "Contractor/ space space(LDN)
"。 Bitbucket Serverと同じ数のスペースを設定に含める必要があります。動かない場合は、メモ帳でこれを確認してください。
C.間違ったアカウントを使用していた場合は、アカウントの認証情報(ユーザー名/パスワード/ SSHキー)を切り替えてもう一度プッシュしてください。
D.そうでなければ、あなたのローカル設定が間違っているなら、あなたはそれを修正する必要があるでしょう。
Mac用
open -a TextEdit.app ~/.gitconfig
注:プッシュしようとしていた古いコミットを修正する必要があります。
最後のコミットを修正します。
> git commit --amend --reset-author
<save and quit the commit file text editor that opens, if Vim then
:wq to save and quit>
コミットを再プッシュしてみてください。
> git Push
あなたはプロジェクトやマスターブランチへの開発者アクセス権を持っていないかもしれません。あなたはPush new work upへのdevアクセスが必要です。
新しい仕事は新しいブランチとコミットを意味します。
そうではないかもしれませんが、これは私の「受信前フック拒否」エラーの解決策でした。
プルリクエストによる変更のみを許可するリポジトリがいくつかあります。これはあなたがしなければならないことを意味します
私はこの問題を解決するために、remote 'Origin' url
の.git/config
をhttp
からgit
プロトコルに変更しました。
[プロジェクトの設定]-> [フック]->(下)事前受信フックに移動します
Cpを無効にし、コミットで問題の参照を要求する
あなたはあなたのgitアカウントにあなたのsshキーを追加する必要があります。