🐸
【GitHub】reset と rebase でコミットを整理・破棄する手順
「GitHubにプッシュしてしまったコミットの整理や破棄をしたい。」
そんな時の手順説明です。
まずは注意点
- 正しい手順を踏まないと、意図せぬ変更が発生する可能性があります。必要に応じてバックアップを取ってから操作を行ってください。
- 共同開発でリセットやリベースを行い、リモートリポジトリへの強制プッシュを行う際は特に慎重に操作してください。他の開発者の作業に影響を与える可能性があるため、実行前にしっかりとコミュニケーションを取ることが重要です。
1. 最新のコミットのみを破棄したい場合
ローカルの最新コミットを破棄し、その状態をリモートに強制的にプッシュします。
git reset --hard HEAD^
git push -f origin <branch-name>
2. 任意のコミットを選んで破棄したい場合
複数のコミットをリベースで編集できます。
例えば以下のコマンドは、"最新〜4個"のコミットを編集します(途中でインタラクティブなリベース)
git rebase -i HEAD~4
このコマンドでインタラクティブなリベースが開始されます。
コミットを破棄したい場合は、破棄したいコミット行の前の picks
を drop
(d
でも可)に変更することで、そのコミットを削除できます。このファイル下部のコメント説明にある通り、破棄以外にも色々な操作が可能です。
編集できたらエディタを保存、ウインドウを閉じると、コミット履歴が設定した通りに更新されます。
Github上のリポジトリに反映させるため、リモートの main ブランチに強制的にプッシュします。
git push -f origin main
あとがき
コミットをいじるの、慣れてないと不安いっぱいですよね。
特に共同開発だと緊張感が半端ありません。
普段からコミットを綺麗に整理するクセをつけ慣れておきたいものです。
Discussion