それが歴史の書き換えで悪いことだということはわかっています。
しかし、リモート ブランチからいくつかのコミットを永久に削除するにはどうすればよいでしょうか?
ベストアンサー1
ローカルgit reset --hard
ブランチで作業ツリーとインデックスから変更を削除し、git push --force
(またはgit push --force-with-lease
) 修正したローカル ブランチをリモートにコピーします。
(他の解決策はこちら(リモートブランチを削除して再度プッシュする)
これだから答えるは、特に人々が自分のローカルリポジトリのリモート履歴に依存している場合、このようなコマンドの危険性を示しています。
人々にアップストリームリベースからの回復のセクションgit rebase
マニュアルページ。
さらに、リンゴでコメントリモートブランチが強制プッシュから保護されている場合、次git revert
のようにこの答えが好ましいかもしれません。
Git 2.23(2019年8月、9年後)では、新しいコマンドを使用します。git switch
。
あれは:git switch -C mybranch origin/mybranch~n
(n
削除するコミットの数に置き換えてください)
これにより、インデックスと作業ツリーが復元されますgit reset --hard
。
ドキュメント追加:
-C <new-branch> --force-create <new-branch>
と似ています
--create
が、すでに存在する場合は<new-branch>
にリセットされます<start-point>
。
これは、次の便利なショートカットです。$ git branch -f <new-branch> $ git switch <new-branch>