100

私たちのリモートマスターブランチはどういうわけか台無しになりました。現在の開発コードは、最新のコミットとともにマスターブランチにあります。明らかに、開発コードはマスターブランチの準備ができていません。

そのため、ローカルリポジトリで、最新のタグにリセットしましたgit reset --hard (Tag)。これで、マスターブランチがローカルリポジトリで正しくなりました。変更をリモートリポジトリにプッシュしようとするとgit push origin master、エラーが発生します。

To (REMOTE GIT REPOSITORY LOCATION)
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

それで、周りを見回した後、私は--forceオプションを見つけました。そのため、リモートリポジトリに強制的にプッシュしましたが、git push --force origin masterそれでもエラーが発生しました。

Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To (REMOTE GIT REPOSITORY LOCATION)
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'

マスターにできない開発コードが含まれているため、マスターをプルできません。

4

10 に答える 10

158

このメッセージは、早送り以外のプッシュが許可されていないことを意味します。

denyNonFastforwards = trueあなたのリモートリポジトリは、その設定にある可能性が最も高いです。それを変更すると、git push --force動作するはずです。

設定を変更するには、リモート リポジトリがあるマシンにアクセスする必要があります。そこから、 を行いますgit config receive.denynonfastforwards false

于 2012-05-11T01:40:23.177 に答える
16

リモートでは、早送り以外は許可されていません。

あなたの最善の選択肢は、git revertそこにあるべきではないすべてのコミットであり、今後はより注意を払うことです。

git revert [commit]行ったことを元に戻す新しいコミットを作成[commit]します。

于 2012-05-11T01:29:04.430 に答える
12

-fフラグを使用して、リモートブランチ名の後に配置してみてください。

git push origin master -f

于 2012-05-11T01:12:14.743 に答える
2

早送りではない git push を実行することは許可されていません。

  1. リモートが GitHub の場合はhttps://github.com/$USER/$REPO/settings/branches、問題のブランチにアクセスして保護を解除します。

    ここに画像の説明を入力

    これを行うには、リポジトリの管理者である必要があります。

  2. リモートが独自の git サーバーである場合は、git config receive.denynonfastforwards falseそこで実行します。

于 2016-10-25T13:14:07.730 に答える