ログをコミットの変更に制限するために<path>
引数を使用すると、選択したコミットを表示するときに、変更された唯一のファイルとしてgit リストが表示されます。代わりに、選択したコミットごとに変更されたすべてのパスを一覧表示したいと思います。git log --stat
<path>
<path>
例えば:
$ echo test > a.txt
$ echo test > b.txt
$ git add a.txt b.txt
$ git commit -m test
[...]
2 files changed, 2 insertions(+), 0 deletions(-)
[...]
$ git log -n1 --stat
[...]
a.txt | 1 +
b.txt | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
$ git log -n1 --stat -- a.txt
[...]
a.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
git log
パス引数を指定した 2 番目の ではa.txt
、実際には「2 つのファイルが変更されました」が、「1 つのファイルが変更されました」と表示されることに注意してください。path に基づいてコミットを選択したにもかかわらず、a.txt
との両方が変更されたことを git に教えてもらいたいと思います。b.txt
a.txt
更新: @jacknagel が私の質問に答えましたが、彼の解決策は私の実際のユースケースでは機能しないことがわかりました。私の実際の使用例では、2 つの関連するプロジェクトが分岐した場合に、名前変更を含め、ファイルを変更したすべてのコミットを探しています。あるプロジェクトのどの変更が、他のプロジェクトの対応する変更 (私が行う必要がある) を意味するかを把握する必要があります。残念ながら、同時に使用しようとするとgit
文句を言います。--full-diff
--follow
だから、私の実際の状況では、実行しようとしています:
git log --stat --follow -- a.txt
この場合に機能する解決策は次のとおりです。
git log --format='%H' --follow -- a.txt | xargs git show --stat -C