定期的に Git を使用する開発者にとって、履歴の操作は非常に一般的です。実際、開発者は多くの場合、Git 履歴からコミットを削除する必要があります。幸いなことに、Git にはこの操作を可能にする多くのコマンドが用意されています。
さあ、いきましょう😎。
ステップ 0 - 準備
Git 履歴を操作する前に、 git statusコマンドを使用して、作業ディレクトリに変更がないことを確認してください。
ステップ 1 - コミットをローカルで削除する
リモート サーバーからコミットを削除するには、まずローカル履歴からコミットを削除する必要があります。
1.1 上から連続コミットする場合
削除するコミットがコミット履歴の先頭にある場合は、 HEAD
オブジェクトと削除するコミットの数を指定してgit reset --hard
コマンドを使用します。
git reset --hard HEAD~1
このコマンドは最新のコミットを削除します。
git reset --hard HEAD~3
このコマンドは、最新の 3 つのコミットを削除します。
次のように、コミットのハッシュを使用して特定のコミットまでを削除することもできます。
git reset --hard <hash>
1.2 非連続コミットの場合
ただし、連続しないコミットを削除したい場合は、対話型リベースを使用する必要があります。
- [ ]
git reflog
コマンドを使用して、削除するすべてのコミットを含む最後のコミット ハッシュを見つけます。 - [ ]
git rebase -i <hash>
で対話型リベースを開始します。 - [ ]編集画面で、削除するコミット行を見つけて削除します。
- [ ]保存して終了します (競合を解決する必要がある場合があります)
- []
git rebase --continue
使用して対話型リベースを終了するか、リベースを中止して最初からやり直します。
ステップ 2 - リモートからコミットを削除する
リモートからコミットを削除するには、 git Pushコマンドを使用してローカルの変更をリモートにプッシュする必要があります。
git push origin HEAD --force
ローカル履歴はリモート履歴とは異なるため、 force
オプションを使用する必要があります。
最終的な考え
ご覧のとおり、Git を使用すると、リモート サーバーからコミットを簡単に削除できます。
ただし、注意しないと進行状況が失われる可能性があるため、 force
オプションを指定してgit push
コマンドを使用する場合は注意が必要です。
読んでくれてありがとう!