投稿

[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 の下でライセンスされています。