zenet_logo

-株式会社ゼネット技術ブログ-

git log --decorate --all --graph --oneline --color のすゝめ

 

お疲れ様です、システム事業部の坂本です。

突然ですが、システム開発を行っているとバージョン管理が欠かせませんが、
定番のバージョン管理ツールといえばgitですね。

git-scm.com


そして、開発中にgitのログを確認することも多々あると思います。

ログの確認は基本「git log」で出来ますが、私はずっと
記事タイトルにも記載した次のコマンドを開発時に愛用しています。

git log --decorate --all --graph --oneline --color

では、このコマンドを利用すると何が良いのか?を
実際のハードコピーを見ながら確認していきましょう。

※諸注意

gitの基本操作が基本最低限出来る方にフォーカスを当てた内容のため、
gitのインストール方法や、それ以外のコマンドの使用方法に関しての説明は本記事では省きます。

下準備

まずは本記事作成にあたって、GitHubからオープンソースのSNSの一つである
Mastodonのソースをgit cloneしました。

github.com

では、ここから実際に色々なコマンドでログを見てみましょう。

git log

まずはデフォルトです。
このコマンドを使えば、今のブランチに対するコミットの履歴を見ることが出来ます。

git logの結果

では、ここに2つオプションを加えてみましょう。

git log --decorate --color

git log --decorate --colorの結果

すると、まず「--decorate」によってコミットの横に
(HEAD -> main, origin/main, origin/HEAD)と表示されるようになりました。

また、「--color」の追加により一部の項目は色付きで表示されるようになりました。
※gitの設定次第では自動で色が付くため、「--color」が不要なことがあります。

この時、コミットの横に記載されている文言は以下の通りとなります。

  • 青色の「HEAD」
    • 矢印の先に記載されているブランチが、
      現在チェックアウトしているブランチであることを意味しています。
  • 緑色で記載されたブランチ名
    • ローカルブランチが、現在このコミットの状態であることを指しています。
  • 赤色で記載されたブランチ名
    • リモートリポジトリのブランチ名が、現在このコミットの状態であることを指しています。

ではここで、例えば「main」ブランチから新しく「20230519_test_branch」を切って
何か変更を加えてコミットしてみます。
その後、もう一度「git log --decorate --color」を実行してみます。

コミット後、もう一度同じコマンドでログを確認

そうすると、「20230519_test_branch」ブランチは「main」ブランチに対して
コミットが1つ進んでいることがログから読み取ることが出来ます。

では、このまま続いてまた一つオプションを追加してみましょう。

git log --decorate --oneline --color

git log --decorate --online --color

「--oneline」によって、コミットとコミットに対するメッセージが
1行で表示されるようになりました。

ただしこのオプションは1行目だけ表示されるという仕様故に、以下の場合は意図的に使わないのも手です。

  • コミットの内容を細かく確認したい(2行目以降が表示されないため)
  • コミットの作成日、作成者まで確認したい

では最後にオプションを2つ追加して、記事タイトルにも記載した次のコマンドを叩いてみましょう。

git log --decorate --all --graph --oneline --color

git log --decorate --all --graph --oneline --color

こうなります。

「--all」オプションを付けることでローカル・リモート含む全てのブランチを表示し、
「--graph」オプションを付けることでコミットの流れがグラフで表示されます。

「git log --decorate --all --graph --oneline --color」で嬉しいこと

まずこのメソッドを利用すると、複数のブランチと
ブランチが切られたタイミングが一画面で確認可能になります。
また、どのタイミングでマージが発生したのかを確認することも出来ます。

そのため、複数メンバーで開発を行っているような案件では、
他メンバーのブランチの状況を一括で確認出来るメリットがあります。

また、特定のコミットだけを取り出すメソッド「cherry-pick」とも相性が良いです。
全てのブランチの状況を見ながら、cherry-pickを行うべき対象のコミットを確認することが出来ます。

 


 

短い内容でしたが、「git log --decorate --all --graph --oneline --color」
ログを見る際に非常に便利ですので、是非使ってみて下さい。

ちなみに普段使う時は、毎回このコマンドを打ち込むのは大変なので
エイリアスに登録して「lg」だけで呼び出せるようにしています。
※エイリアスへの登録方法はここでは省きます。気になる方は調べてみて下さい。

gitを利用して何か開発に携わっている方の参考になれば幸いです。