Gitのグラフをいちばん手軽に見るならターミナルです。git log --graph --oneline --all --decorate を実行すると、すべてのブランチが線で描かれ、1行に1コミット、ブランチ名やタグ名もコミットの横に表示されます。VS Codeなら、ソース管理ビューに標準で入っている「Source Control Graph」を使うか、Git Graph拡張を入れれば、もっと大きくてクリックできるグラフが見られます。どちらも記事の最後で詳しく説明します。
「進捗どうですか?」と聞かれて嬉しい人はいません。とはいえ、仕事でプロジェクトを率いる立場としては、進捗を知らないわけにもいきません。私の妥協点がGitグラフです。誰かに聞く前に、まずグラフを見る。たいていの場合、答えはすでにそこにあります。コミットの動き、ブランチ、マージがひと目で分かり、そのために誰も会議に出る必要がありません。
グラフから実際に何が読めるか#

じっくり見たことがない方のために説明すると、ノードひとつがコミット、枝分かれした線がブランチで、全体がプロジェクトの時系列になっています。このレイアウトには驚くほど情報が詰まっています。
- 一瞥するだけで、アクティブなブランチの数とコミットの頻度が分かります。
- 急に静かになったブランチや、何週間もマージされていないブランチは、たいてい誰かが詰まっているサインです。この早期警告には価値があります。
- マージの頻度はチームのコラボレーションの形を映します。マージが頻繁なら作業がきちんと統合されている証拠で、長生きしすぎたブランチは、孤立した作業になっている可能性が高いです。
中断は減り、会話は良くなる#
分かりやすいメリットは、誰の作業も中断せずに状況を把握できることです。それ以上に効くのは、いざ会話が必要になったときです。推測ではなく、グラフから話を始められます。「このブランチ、火曜日から動いてないけど、何か詰まってる?」は、「進捗どうですか?」よりずっとましな切り出し方です。
ルーチンを明示しておくのも効きます。私の場合は、ほぼ毎朝さっと眺めて、週に一度じっくり見る。チームもそのリズムを知っているので、誰も驚きません。
監視ツールにしないこと#
ここは自分にも言い聞かせ続けている部分です。コミット数は価値ではありません。よく考えられたコミット1つが、騒がしいコミット50個に勝つこともあります。すべてのコミットが見えるからといって、すべての判断に口を出していいわけではない。チームを信頼して、パターンが本当に怪しいときだけ介入する。そしてグラフを会話に持ち込むときは、フィードバックの出発点として使うこと。検察側の証拠にしてはいけません。
ターミナルでグラフを表示する#
必要なのはGitだけです。
git log --graph --oneline --all --decorateそれぞれのオプションの意味は次のとおりです。
--graph:左側にブランチとマージの線を描きます。--oneline:1コミットを1行で、短いハッシュとメッセージの1行目だけ表示します。--all:今いるブランチだけでなく、リモートを含むすべてのブランチとタグを表示します。--decorate:ブランチ名やタグ名を、それが指すコミットの横に表示します。最近のGitは出力先がターミナルなら何もしなくても表示しますが、このオプションを付けておけば、パイプで別のコマンドに渡したときも消えません。
毎朝これを打つのは面倒なので、エイリアスにしておきます。
git config --global alias.graph "log --graph --oneline --all --decorate"
git graph長く続いているリポジトリだと、グラフ全体はいつまでもスクロールが終わりません。絞り込む方法をいくつか挙げます。
git graph --since="2 weeks ago" # 直近2週間だけ
git graph -20 # 直近20コミットだけ
git log --graph --oneline main..feature # featureにあってmainにまだないもの
git log --graph --oneline --left-right main...feature # 両側を < と > で区別して表示最後の2つは2つのブランチの比較です。エイリアスではなく素の git log を使っているのは、--all が入っていると他のブランチまで全部戻ってきてしまうからです。ドット2つは「feature にあって main にないもの」を表示します。ドット3つに --left-right を付けると、お互いに相手にないものを両側とも表示するので、長生きしているブランチがどれだけ離れてしまったかをすぐ確認できます。
VS Codeでグラフを表示する#
VS Codeにはグラフが標準で入っています。ソース管理ビュー(Ctrl+Shift+G)を開くと、そのパネルの中に「Source Control Graph」のセクションがあります。バージョン1.93(2024年8月)からの機能です。初期状態では今のブランチとそのリモートを表示し、グラフのタイトルバーにあるブランチ選択で他のブランチを追加できます。さっと眺めるだけなら、これで十分です。
すべてのブランチを一度に見たいなら、mhutchie氏のGit Graph拡張を入れます(拡張機能ビューで「Git Graph」を検索)。開き方は、ステータスバーの「Git Graph」、ソース管理ビュー上部のGit Graphアイコン、またはコマンドパレットの Git Graph: View Git Graph (git log) のいずれかです。コミットをクリックすると変更されたファイルが見られ、あるコミットをクリックしてから別のコミットをCtrl/Cmd+クリックすると2つを比較できます。ただ、この拡張は2021年からリリースが止まっているので、標準のグラフも知っておいて損はありません。
Git Graphのボタンが出てこない場合は、拡張機能がリポジトリを見つけられていない可能性が高いです。初期設定では開いたフォルダそのものしか探さず、サブフォルダまでは見に行きません。リポジトリのフォルダを直接開くか、設定で git-graph.maxDepthOfRepoSearch の値を上げてください。
その他のツール#
たいていのGitツールには、どこかにグラフがあります。gitk --all はGit自身の履歴ブラウザです。GitHub、GitLab、Bitbucketには、リポジトリページに「ネットワーク」や「グラフ」のビューがあります。デスクトップクライアントでも、SourceTree(Atlassianの無料ツール)、GitKraken、Tower、WindowsならTortoiseGitに、どれもグラフ表示があります。
どれを選んでも、目的は同じです。進捗を理解すること。コミットを数えることではありません。
