はじめに
本記事では、以下の状態のリポジトリを参考に解説していきます。
範囲指定
(1)指定なし
HEADから参照できる全てのコミットを表示します。
git log
(⇒コミット1,2,4,5を表示)
(2)ブランチ指定
指定したブランチから参照できる全てのコミットを表示します。
git log origin/main
(⇒コミット1,2,3を表示)
(3)複数指定
指定した全てのブランチから参照できる全てのコミットを表示します。
git log origin/main origin/develop
(⇒コミット1,2,3,4を表示)
(4)「^」特定の範囲を除いて指定
キャレット「^」を指定したブランチから参照できるコミットを除いて表示します。
git log develop ^main
(⇒コミット4,5を表示)
(5)「..」ここからここで指定
特定の範囲を指定して表示します。
(※正確には(4)「git log develop ^main」の省略形)
git log main..develop
(⇒コミット4,5を表示)
(6)「...」分岐以降を比較するように指定
指定したブランチ同士の、分岐以降のコミットを表示します。
git log origin/main…develop
(⇒コミット3,4,5を表示)
これまで「origin/main」と指定してきた箇所は、「origin」だけでも同一の動きをするので問題ありません。
なぜなら、ブランチ名を省略するとHEADを見にいくので、「origin/HEAD」を指定=「origin/main」を指定となるためです。
ファイル指定
(1)単一ファイル指定
削除済みのファイルを指定する時は、以下の通りファイルパスの前に「--」を付与する必要があります。
git log -- a.txt
(2)複数ファイル指定
git log a.txt b.txt
(⇒コミット1,2,4,5を表示)
ファイルの指定は、gitリポジトリのルートディレクトリからの相対パスになります。
(本記事のサンプルでは、ルートディレクトリにファイルを置いているため、実質的にファイル指定となりました)
合わせ技
範囲指定しつつファイル指定をすると、例えばこんな感じになります。
git log origin...develop b.txt
(⇒コミット3,4を表示)
おわりに
git logコマンドの範囲指定とファイル指定の方法についてまとめてみました。
華麗にログを表示して開発に活かしていただけると幸いです!
オプション周りについては本記事では触れていないので、他の記事などを参考にしていただければと思います。
また、質問やご指摘など、少しでもお送りいただけると力になりますので助かります。
ご一読いただき、ありがとうございました!