1. ホーム
  2. git

[解決済み] Gitのプッシュを正しく強制する方法は?

2022-03-19 03:25:15

質問

私はリモートの非公開の "main" レポをセットアップし、それを私のコンピュータにクローンしました。ローカルでいくつか変更を加え、ローカルリポジトリを更新し、その変更をリモートリポジトリにプッシュバックしました。それまではうまくいっていたのです。

さて、私はリモートレポの何かを変更しなければなりませんでした。そして、自分のローカルレポで何かを変更しました。リモートレポへの変更は必要ないことに気づきました。そこで、私は git push をローカルレポからリモートレポに転送するのですが、以下のようなエラーが発生しました。

履歴を失わないために、ファストフォワードでない更新は reject リモートの変更をマージしてから再度プッシュしてください。 注意事項」を参照してください。 の「ファストフォワードについて」の項を参照してください。 git push --help を参照してください。

は、たぶん、そうなんだろうなと思いました。

git push --force

は、私のローカルコピーに変更をリモートコピーにプッシュさせ、それを同じにすることを強制します。 強制的にアップデートされます しかし、リモートリポジトリに戻ってコミットすると、ファイルに古い変更(メインのリモートリポジトリが以前に持っていたもの)が含まれていることに気づきます。

で述べたように ある回答へのコメント :

<ブロッククオート

[I]forceを試してみましたが、変更を保存するためにマスターサーバーに戻ると、古いステージングが表示されます。したがって、私がコミットするとき、リポジトリは同じではありません。そして、再びgit pushを使おうとすると、同じエラーが発生します。

この問題を解決するにはどうしたらよいですか?

解決方法は?

やるだけです。

git push origin <your_branch_name> --force

または特定のレポがある場合。

git push https://git.... --force

これは、以前のコミットを削除し、現在のコミットをプッシュします。

もし、このページにたどり着いた人が、簡単な解決策を望んでいるとしたら...。

ショートフラッグ

また、以下のことに注意してください。 -f--force ということで

git push origin <your_branch_name> -f

も動作します。