リモートの非ベアな「メイン」リポジトリを設定し、それを自分のコンピューターにクローンしました。ローカルでいくつかの変更を加え、ローカル リポジトリを更新し、変更をリモート リポジトリにプッシュしました。その時点までは問題ありませんでした。
さて、リモート リポジトリで何かを変更する必要がありました。その後、ローカル リポジトリで何かを変更しました。リモート リポジトリへの変更は不要であることに気付きました。そこで、git push
ローカル リポジトリからリモート リポジトリに変更しようとしましたが、次のようなエラーが発生しました。
履歴が失われないように、高速転送以外の更新は拒否されました。再度プッシュする前にリモートの変更をマージしてください。
git push --help
詳細については、「高速転送に関する注意」セクションを参照してください。
私はおそらく
git push --force
ローカル コピーを強制的にリモート コピーに変更をプッシュして、同じにします。更新は強制されますが、リモート リポジトリに戻ってコミットすると、ファイルに古い変更 (メインのリモート リポジトリに以前あった変更) が含まれていることに気付きます。
前にも述べたように回答の1つに対するコメント:
[私は] 強制的に実行しようとしましたが、マスター サーバーに戻って変更を保存すると、古いステージングが表示されます。そのため、コミットするとリポジトリは同じではありません。また、git push を再度使用しようとすると、同じエラーが発生します。
この問題を解決するにはどうすればいいでしょうか?
ベストアンサー1
ただこうしてください:
git push origin <your_branch_name> --force
または特定のリポジトリがある場合:
git push https://git.... --force
これにより、以前のコミットが削除され、現在のコミットがプッシュされます。
適切ではないかもしれませんが、このページに偶然出会った人は、簡単な解決策が欲しいと思うかもしれないと思いました...
ショートフラグ
また、 は-f
の略な--force
ので、
git push origin <your_branch_name> -f
も動作します。