1. ホーム
  2. git

[解決済み] git でプッシュした後にコミットを破棄するには?

2022-03-14 07:44:52

質問

複数のコミットをつぶすことについての良い説明です。

http://git-scm.com/book/en/Git-Branching-Rebasing

が、すでにプッシュされているコミットに対しては機能しません。ローカルとリモートの両方のリポジトリにある直近の数コミットを潰すにはどうしたらいいでしょうか?

を実行すると git rebase -i origin/master~4 master として、最初のものを維持します。 pick として設定し、他の3つを squash で、終了すると(emacsのc-x c-cで)、こうなります。

$ git rebase -i origin/master~4 master
# Not currently on any branch.
nothing to commit (working directory clean)

Could not apply 2f40e2c... Revert "issue 4427: bpf device permission change option added"
$ git rebase -i origin/master~4 master
Interactive rebase already started

ここで、2f40 は pick をコミットします。そして現在、4つのコミットはどれも git log . 私は、コミットメッセージを入力できるようにエディタが再起動されることを期待していました。私は何を間違えているのでしょうか?

解決方法を教えてください。

でローカルにコミットします。

git rebase -i origin/master~4 master

で強制的にプッシュします。

git push origin +master


の違い --force+

のドキュメントより git push :

注意事項 --force はプッシュされたすべての参照に適用されます。 と一緒に push.default に設定します。 matching または複数のプッシュ で設定されたデスティネーションは remote.*.push を上書きすることがあります。 現在のブランチ以外(厳密には背後にあるローカルな参照も含む)の を使用します)。強制的にひとつのブランチのみにプッシュするには + をプッシュする参照仕様の前に置く(例えば git push origin +master で強制的に にプッシュします。 master ブランチ)を作成します。