1. ホーム
  2. Git

[git push] 解決策: ! [リモート拒否] master -> master (受信前のフックは拒否されました)

2022-01-22 03:06:59
<パス

質問の説明

今日、あるプロジェクトをGitLabにアップロードしようと思ったのですが、何度やってもアップロードできず、以下のようなエラーが報告されました。

The first one: ! [rejected] master -> master (fetch first)
The second: ! [rejected] master -> master (non-fast-forward)
Third: ! [remote rejected] master -> master (pre-receive hook declined)


最初はユーザー名とパスワードが間違っているのかと思いましたが、何度も試してみたり、Webで検索しても明確な結果は出ませんでしたが、ようやく解決策が見つかりました。

分析

git push 上がらないのは push ブランチのパーミッションが protected プロジェクトの管理者、もしくは管理者から適切な権限を与えられた人だけが push を実行するには、プロジェクトの push は、次の2つの方法があります。

解決策 ①:「震災復興

  • プッシュするコンテンツがあるブランチの保護されたパーミッションをオフにします。

(1)プロジェクトの settings

(2). をクリックすると Protected branches をクリックします。 unprotected 意志 master を分岐させる、つまり master protected パーミッション
(3)では git pull 最初にローカルリポジトリをリモートリポジトリと同じバージョンに更新しますが、後からローカルリポジトリに加えた変更は上書きされる可能性があることに注意してください、そのためには git fetch (which does not automatically merge) を使用して更新をチェックし、オプションでそれらをマージするか、またはローカルリポジトリの変更されたファイルを最初にバックアップします。 git pull を作り直し、その後に
(4)の後、実行 git push と入力すれば、動作します。

解決策 ②.

  • 他の項目で新しいブランチを作成する push を新しいブランチに移動させ、後から merge

(1)、新支店

git branch Branch name


(2)、ブランチの切り替え

git checkout branch name


(3), プロジェクトのアップロードを行う

git add .
git commit -m "Committed message"
git remote add origin remote repository address # You can also add -f to force a push
git push -u origin branch name


解決策 ③.

  • バイオレンスタイプのソリューションです。

git は、強制的にアップロードする方法を提供しています。 git push -f これは、バージョンの不一致などの問題を無視するものです。 forces を使うとローカルライブラリをリモートライブラリにアップロードできますが must be used with caution なぜなら -f はネイティブのライブラリ override the リモートライブラリから

リモートリポジトリに重要な更新があった場合、または他の仲間によって変更された場合は will also be overwritten ので、重大な影響がないことを確認した場合のみ、このアクションを使用するようにしてください。