blog.yuzu441.com

間違えて削除した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