git reflog
で削除を確認する
このステップでは、失われたコミットやブランチを復元するための強力なツールである git reflog
コマンドを調べます。reflog
(参照ログ)は、ローカルリポジトリ内のブランチの先端やその他の参照の更新を記録します。これは、コミット、マージ、リベース、さらにはブランチの削除など、リポジトリ内で行ったほぼすべての変更を記録することを意味します。
まず、プロジェクトディレクトリにいることを確認します。
cd ~/project/my-time-machine
次に、後で削除する新しいブランチを作成しましょう。これにより、reflog
で探す対象ができます。
git branch feature/new-feature
このコマンドは、現在のコミットを指す feature/new-feature
という名前の新しいブランチを作成します。存在を確認しましょう。
git branch
これで、両方のブランチが表示されるはずです。
* master
feature/new-feature
次に、-d
フラグを使用して feature/new-feature
ブランチを削除しましょう。これは「安全な」削除です(ブランチに未マージの変更がある場合は削除を防止します)。
git branch -d feature/new-feature
削除が確認される出力が表示されるはずです。
Deleted branch feature/new-feature (was <commit-id>).
<commit-id>
をターミナルに表示された実際のコミット ID に置き換えてください。
次に、削除が記録されているかどうかを確認するために reflog
をチェックしましょう。
git reflog
出力にはアクションの履歴が表示されます。ブランチの削除に関連するエントリが、次のように表示されるはずです(正確な出力は異なる場合があります)。
<commit-id> HEAD@{0}: branch: deleted feature/new-feature
<commit-id> HEAD@{1}: branch: Created from <another-commit-id>
... (other reflog entries)
reflog
のエントリ HEAD@{0}: branch: deleted feature/new-feature
は、feature/new-feature
ブランチが削除されたことを示しています。HEAD@{0}
は最も最近のアクションを指します。これは、git branch
からブランチが消えていても、その削除が reflog
に記録されているため、潜在的に復元可能であることを示しています。
git reflog
を理解することは重要です。なぜなら、これは安全網として機能するからです。誤ってブランチを削除したり、リベースやその他の操作でコミットを失った場合でも、reflog
を使って作業を復元するために必要なコミット ID を見つけることができます。