[GitHub 100日チャレンジ] Day 69 - Git Reflogで復旧する
resetやrebaseで見えなくなったコミットをgit reflogから探し、安全に復旧する手順を学びます。
[GitHub 100日チャレンジ] Day 69 - Git Reflogで復旧する
git reflogとは
git reflogは、HEADやブランチが過去にどこを指していたかを記録するローカルの履歴です。
1
2
3
git reflog
# abc1234 HEAD@{0}: commit: add profile
# def5678 HEAD@{1}: reset: moving to HEAD~1
git logで見えないコミットでも、reflogに残っていれば復旧できることがあります。
resetを戻す
1
2
3
git reset --hard HEAD~3
git reflog
git switch -c recover-work abc1234
いきなり元ブランチを動かすより、復旧用ブランチを作って内容を確認する方が安全です。
ブランチ削除を戻す
1
2
3
git branch -D feature/login
git reflog
git switch -c feature/login def5678
ブランチ名を消しても、コミットがすぐ消えるわけではありません。
rebase失敗の復旧
rebase前の地点をreflogで見つけ、そこから新しいブランチを作ります。
1
2
git reflog
git switch -c recover-before-rebase 456wxyz
今日のゴール
reflogはローカルの安全網です。慌てたときは git status、git reflog、復旧ブランチ作成の順で落ち着いて確認しましょう。
この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。
