間違えて削除したgit branchを戻す
tags: git
作業ブランチを間違えて消してしまって、そのブランチを復元するために方法を調べようと思ったreflog見たら戻れそうだったので試したら普通に戻れたが一応メモ
結論
git reflog
で対象のコミットを探すgit branch <ブランチ名> <commit hash>
でブランチを復活git switch <ブランチ名>
で戻せる
やってみる
確認用にmain
, branch-1
, branch-2
を用意した
* 01f31a0 (HEAD -> branch-2) commit 2
| * 7241500 (branch-1) commit 1
|/
* 7df1e5f (main) init
この状態でbranch-1
を削除する
git branch -D branch-1
git logを確認すると消えている
* 01f31a0 (HEAD -> branch-2) commit 2
* 7df1e5f (main) init
復元作業
ここからブランチを復元する。最初にreflogを見る
git reflog
実行するとこんな感じ
01f31a0 (HEAD -> branch-2) HEAD@{0}: commit: commit 2
7df1e5f (main) HEAD@{1}: checkout: moving from main to branch-2
7df1e5f (main) HEAD@{2}: checkout: moving from branch-1 to main
7241500 HEAD@{3}: commit: commit 1
7df1e5f (main) HEAD@{4}: checkout: moving from main to branch-1
7df1e5f (main) HEAD@{5}: commit (initial): init
今回はbranch-1
つまりは「commit 1」を復元する
git branch branch-1 7241500
これで再度ログを確認するとbranch-1
が復元できている
* 01f31a0 (HEAD -> branch-2) commit 2
| * 7241500 (branch-1) commit 1
|/
* 7df1e5f (main) init
ちなみに
ログの表示は以下のオプションで表示している
git log --oneline --decorate --graph --branches --tags --remotes