1. ホーム
  2. git

[解決済み] Git でブランチからコミットを削除する

2022-03-16 04:24:52

質問

コミットを削除する方法を知りたいのですが。

By delete つまり、そのコミットを行わなかったかのように、将来プッシュを行ったときに、私の変更がリモートブランチにプッシュされないということです。

gitのヘルプを読んで、私が使うべきコマンドは次の通りだと思います。 git reset --hard HEAD . これは正しいのでしょうか?

解決方法は?

注意すること git reset --hard を実行すると、作業ディレクトリの変更が削除されます。 . 必ず ローカルに残しておきたい変更点はすべて隠しておく このコマンドを実行する前に

そのコミットが残っていると仮定すると、このコマンドはそれを破棄することになります...。

git reset --hard HEAD~1

HEAD~1 はheadの前のコミットを意味します。

あるいは、出力された git log で、バックアップしたいコミットのコミットIDを見つけてから、このようにします。

git reset --hard <sha1-commit-id>


すでにプッシュしている場合は、強制プッシュで消す必要があります...。

git push origin HEAD --force

しかし もし他の人がそれをプルしたのなら、新しいブランチを作成したほうがいいでしょう。 なぜなら、他の人がプルすると、その人の作業にマージされ、あなたは再びプッシュされることになるからです。

すでにプッシュしている場合は git revert を作成し、その変更を取り消すことができます。 しかし、両方のコミットがログに残ります。


参考までに--。 git reset --hard HEAD は、WORK IN PROGRESSを取り除きたい場合に最適です。 これは最新のコミットに戻し、作業ツリーとインデックスにあるすべての変更を消去します。


最後に、もしあなたが "削除したコミットを見つける必要があるなら、それは通常 git reflog リポジトリをガベージコレクションしていない限り、です。