誤ってGitのコミット破棄した時、かなり焦りましたが、復元は可能です。
Git Bashを使用して間違って破棄したコミットを復元する手順は、以下のようになります。
この例では、Gitのreflog
とcheckout
コマンドを活用して、破棄されたコミットを見つけ、それを新しいブランチに復元します。
ステップ1 git reflog
を使用してコミットを見つける
- Git Bashを開きます。
- 変更を破棄したGitリポジトリのディレクトリに移動します。
git reflog
コマンドを実行して、最近のコミット履歴を表示します。
cd "your-repository-path"
git reflog
この出力には、HEADが過去に指していた各コミットの短縮ハッシュ、コミットのタイプ(例えば、commit
、reset
など)、コミットメッセージが含まれます。
メッセージなどを参考に、破棄したと思われるコミットを探します。
ステップ2 破棄されたコミットを新しいブランチに復元する
破棄されたコミットを見つけたら、そのコミットのハッシュ(99cf999 など)を使用して新しいブランチを作成し、そこにチェックアウトします。これにより、そのコミットの状態を安全に復元できます。
- コミットハッシュを使用して新しいブランチを作成し、チェックアウトします。以下のコマンドを実行し、
your-commit-hash
を見つけたコミットのハッシュに、new-branch-name
を好みのブランチ名に置き換えてください。
git checkout -b new-branch-name your-commit-hash
ステップ3 復元したコミットを確認
新しいブランチにチェックアウトした後は、変更内容を確認します。
必要に応じて、このブランチで作業を続けたり、他のブランチにマージしたりすることができます。
- 変更内容を確認するには、
git log
やgit diff
コマンドを使用します。 - 問題なければ、このブランチをメインブランチにマージするか、さらに作業を続けることができます。
git log -1
注意点
git reflog
によって提供される情報は、ローカルリポジトリに特有のものです。したがって、他の開発者と作業を共有している場合は、復元した変更をプッシュする前に、他の開発者とのコンフリクトがないか確認することが重要です。- 復元作業を行う前に、現在の作業ディレクトリとステージングエリアがクリーンであること(未コミットの変更がないこと)を確認してください。必要であれば、
git stash
を使用して変更を一時的に保存してから、復元作業を進めることができます。