次のコマンドを実行しています。
git log --name-only –pretty="format:%H %s" -- *.sql --grep="JIRA-154"
結果を次の形式で返します。
[commitid1] [comment]
path/to/file1/file1.sql
path/to/file2/file2.sql
path/to/file3/file3.sql
[commitid2] [comment]
path/to/file2/file2.sql
path/to/file4/file4.sql
出力はファイルにリダイレクトされ、形式はまさに私が探しているものですが、マージコミットは問題です。マージの一部として変更されたファイルはリストされません。代わりに、次のような結果になります。
[commitid3] [merge comment]
[commitid4] [comment]
path/to/file3/file3.sql
マージ中に変更されたファイルが一覧表示されることを期待しているため、ここで何かを明らかに誤解しています。これらのファイルを出力に含める方法はありますか?
この動作を観察している理由は、マージコミットの場合、変更されたファイルのセットが2つあり、それぞれが各親からのものであるためです。ここでの1つのオプションは、--first-parent -m
を実行するときにgit log
オプションを使用することです。
git log --name-only --grep="JIRA-154" --first-parent -m –-pretty="format:%H %s" -- "*.sql"
これにより、Gitは、マージが行われているメインブランチに焦点を合わせ、このコミットのファイルセットのみを表示するようになります。