web-dev-qa-db-ja.com

マージ中に変更されたファイルを表示するためのgitlogの使用

次のコマンドを実行しています。

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

マージ中に変更されたファイルが一覧表示されることを期待しているため、ここで何かを明らかに誤解しています。これらのファイルを出力に含める方法はありますか?

16
Blue

この動作を観察している理由は、マージコミットの場合、変更されたファイルのセットが2つあり、それぞれが各親からのものであるためです。ここでの1つのオプションは、--first-parent -mを実行するときにgit logオプションを使用することです。

git log --name-only --grep="JIRA-154" --first-parent -m –-pretty="format:%H %s" -- "*.sql"

これにより、Gitは、マージが行われているメインブランチに焦点を合わせ、このコミットのファイルセットのみを表示するようになります。

ドキュメントについては here を、すばらしいブログ投稿については here を確認してください。

1
Tim Biegeleisen