普段はあまりそんな状況ないんですがふと今の作業ブランチだけでなくて、すべてのブランチを対象に最新のcommit情報をその更新時刻付きで表示したくなり「うーん、うまいやり方ないかなー」と思ってググったらgit for-each-ref
が使えるとのこと。知らなかった。
公式ドキュメント
Git - git-for-each-ref Documentation
【例】
git for-each-ref \ --sort=-committerdate \ --count=10 \ --format=" Date: %(color:red)%(authordate:iso)%(color:reset) %(color:green)[%(authorname)]%(color:reset) Ref: %(color:yellow)%(refname:short)%(color:reset) Subject: %(subject)" \ refs/heads refs/remotes
上の例だと
- 最新のコミット順
- 10件
- 日付とブランチ名とユーザ名とcommitメッセージ含め
て表示してくれる。 (色とかつけてるからごちゃごちゃしてるけど、整理すればシンプル。)
for-each-ref
は単体で使うよりこれを使ってブランチ一覧を取得してその上で何かする、みたいな状況で利用されることが多いらしい。
とはいえ、上の例を参考に上手く使えば
「さっき作業してたブランチなんだっけ?」
とか
「あのブランチって誰がいつ切ったの?」
みたいな調査が楽にできそう。
長いので.gitconfigにaliasを追加しておけば良さそう。
[alias] history = for-each-ref --sort=-committerdate --count=10 --format='Date: %(color:red)%(authordate:iso)%(color:reset)\t%(color:green)[%(authorname)]%(color:reset)\nRef: %(color:yellow)%(refname:short)%(color:reset)\nSubject: %(subject)\n' refs/heads refs/remotes
(RedashのRepo.で試しにやってみた図)
...と思ったらすでにこういうのがあるらしい。 まあ、誰かしら作ってるとは思ったけど。