ブランチ履歴からコミットを削除するにはどうすればよいですか? を使用する必要がありますかgit reset --hard HEAD
?
ベストアンサー1
注意: git reset --hard
作業ディレクトリの変更は削除されます。このコマンドを実行する前に、保持しておきたいローカルの変更を必ず保存してください。
あなたがそのコミットに座っていると仮定すると、このコマンドはそれを破壊します...
git reset --hard HEAD~1
HEAD~1
ヘッドの前のコミットを意味します。
または、 の出力を確認しgit log
、バックアップするコミットのコミット ID を見つけて、次のように実行することもできます。
git reset --hard <sha1-commit-id>
すでにプッシュしている場合は、強制プッシュして削除する必要があります...
git push origin HEAD --force
ただし、他の人がそれをプルしている可能性がある場合は、新しいブランチを開始した方がよいでしょう。なぜなら、他の人がプルすると、そのブランチの作業内容が自分の作業内容にマージされ、再びプッシュアップされるからです。
すでにプッシュしている場合は、 を使用して変更を元に戻す「ミラー イメージ」コミットを作成する方がよい場合がありますgit revert
。ただし、両方のコミットがログに残ります。
FYI:git reset --hard HEAD
は、WORK IN PROGRESS を削除したい場合に最適です。最新のコミットにリセットされ、作業ツリーとインデックス内のすべての変更が消去されます。
git stash
は、ハードモードでリセットして永久に削除するのではなく、必要に応じて後で復元できることを除いて同じですgit stash list
。と を使用してスタッシュを確認します。git stash show 'stash@123'
最後に、「削除」したコミットを見つける必要がある場合、git reflog
リポジトリをガベージ コレクションしていない限り、通常はそこに存在します。