🫠

あれ、俺が前いたブランチなんだっけ

2024/08/22に公開

ブランチ迷宮に入ってしまったあなたへ!!!

TL;DR

  • 直前のブランチに戻るには git switch -
  • ブランチ移動履歴を見るには git reflog

直前のブランチに戻りたい

1回 main に行ったけど直前の作業ブランチにまた戻りたい!
そんなときは、次のコマンドで戻れます。

$ git switch -
Switched to branch 'feature'

もっと前のブランチに戻りたい

複数の作業をしてるとブランチ名を忘れることが多々あると思います。
でも、 git branch だといっぱい出すぎてどれかわからん・・・
そんなときにおすすめなのが次のコマンド

$ git reflog
4351687 (HEAD -> feature-b) HEAD@{0}: checkout: moving from develop to feature-b
be40af9 (feature-a, develop) HEAD@{1}: merge feature-a: Fast-forward
d3eeaae (origin/main, main) HEAD@{2}: checkout: moving from feature-b to develop
4351687 (HEAD -> feature-b) HEAD@{3}: commit: mod1 on feature-b
be40af9 (feature-a, develop) HEAD@{4}: checkout: moving from develop to feature-b
d3eeaae (origin/main, main) HEAD@{5}: reset: moving to d3eeaa
be40af9 (feature-a, develop) HEAD@{6}: checkout: moving from feature-b to develop
be40af9 (feature-a, develop) HEAD@{7}: checkout: moving from develop to feature-b
...

git reset でミスったときなどに使われるコマンドですが、 git に関する多くの操作履歴が残っているので、ブランチ移動の履歴を見るのにも便利!軽率に使おう!

【ちなみに】 git reflog の履歴はいつまで残る?

git reflog の履歴ですが、デフォルトではいつまでも残るわけではありません。

https://git-scm.com/docs/git-gc#Documentation/git-gc.txt-gcreflogExpire

上記ドキュメントによれば、 git gc コマンド経由で 90 日経つと削除されるようです(デフォルト設定)。

gc.reflogExpire
git reflog expire removes reflog entries older than this time; defaults to 90 days.

変えたい場合は、git config で設定しましょう!

$ git config set gc.reflogExpire 30    # 30日
$ git config set gc.reflogExpire now   # 全消し!
$ git config set gc.reflogExpire never # ずっと消さない

# 確認
$ git config get gc.reflogExpire
never

おわりに

ラブグラフでは学生インターンを募集中⚡⚡
Ruby on Rails を中心にたくさんの開発経験を積むことができます。
僕も Web 開発未経験でしたが、今では DB 設計から UI 実装までできるようになりました!

学生のみなさん、ぜひご応募ください!

https://herp.careers/v1/lovegraph/TzHITy0TRbVQ

ラブグラフのエンジニアブログ

Discussion