私は は、選択したコミットを表示するときにのみ変更されたファイルとして<path>
、gitのリスト<path>
を変更 コミットにログを制限するgit log --stat
と<path>
引数を使用します。私は代わりに、すべてが に変更されたことを確認したいと思うでしょう。例えば`git log --stat - <path>` show * all *ファイルを選択したコミットにするには?
:二git log
は、パス引数a.txt
で、実際には "2つのファイルが変更さ" とき 、 "1つのファイルが変更され、" 言うことを
$ 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(-)
注意。私は のa.txt
とb.txt
の両方が、a.txt
に基づいてコミットを選択したにもかかわらず、変更されたと言いました。
更新:@ jacknagelが私の質問に答えましたが、彼の解決策は私の実際の使用例では機能しません。私の実際のユースケースでは、関連する2つのプロジェクトが分岐した場合に、名前を含むファイルを変更したすべてのコミットを探しています。あるプロジェクトのどのような変更が、他のプロジェクトの対応する変更を示唆しているかを把握する必要があります。残念ながら、--full-diff
と--follow
を同時に使用しようとすると、git
が苦情を言います。
だから、私の実際の状況では、私が実行しようとしている:
git log --stat --follow -- a.txt
をして、この場合に機能するソリューションです:あなたは、コマンドが動作するように期待するにはどうすればよい
git log --format='%H' --follow -- a.txt | xargs git show --stat -C
あなたは私にはあまり意味がありませんお願いし、これまでどのような。あなたはコマンドが意図したのとは異なる方法で行動することをどのように期待していますか?ファイル名を指定すると、そのファイルの詳細だけを取得するようgitに指示します。両方のものを表示したい場合は、コマンドを使用してください。 – positron
@positron:ファイル名を使用して関心のコミットを識別していますが、それらのコミットに対して完全な情報が必要です。本質的に、私は与えられたファイル名を使って他の*未知*のファイル名を特定しています。だから私は彼らが何であるか分からないので、 'git'に他のファイルを伝えることはできません。 – ntc2
あなたの*質問*を編集して回答を追加するのではなく、自分の質問であっても、回答を追加するのがStackOverflowです。私は正解を追加する自由を取ったが、あなたが投稿した場合は喜んでそれを削除するだろう。 – djeikyb