Quando uso un argomento <path>
con git log --stat
per limitare il registro per commit modifica <path>
, liste Git <path>
come unico file modificato quando visualizzazione dei commit selezionati. Vorrei invece vedere tutti i modificati i percorsi elencati per ciascun commit selezionato.Come rendere `git log --stat - <path>` mostra * tutti * i file nei commit selezionati?
Ad esempio:
$ 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(-)
Nota che il secondo git log
, con l'argomento percorso a.txt
, dice "1 file modificati", quando in realtà "2 file modificati". Vorrei git per dirmi che entrambi a.txt
e b.txt
sono stati modificati, anche se I ha selezionato il commit in base al percorso a.txt
.
AGGIORNAMENTO: @jacknagel ha risposto alla mia domanda, ma risulta che la sua soluzione non funziona nel mio caso d'uso reale. Nel mio caso d'uso reale, sto cercando tutti i commit che hanno modificato un file, compresi i nomi, in un caso in cui due progetti correlati si sono divergenti. Devo capire quali cambiamenti in un progetto implicano cambiamenti corrispondenti (che devo fare) nell'altro progetto. Sfortunatamente, git
si lamenta quando provo a usare --full-diff
e --follow
allo stesso tempo.
Quindi, a mio situazione reale, che sto provando a fare funzionare:
git log --stat --follow -- a.txt
e una soluzione che funziona in questo caso è:
git log --format='%H' --follow -- a.txt | xargs git show --stat -C
Che cosa mai si chiede non ha molto senso per me. Come ti aspetti che un comando si comporti diversamente da come è previsto? Quando dai il nome del file stai dicendo a git di ottenere da solo i dettagli di quel file. Se vuoi che mostri entrambe le cose, usa il comando – positron
@positron: sto usando il nome del file per identificare i commit di interessi, ma per quei commit voglio le informazioni complete. In sostanza, sto utilizzando il nome file specificato per identificare altri nomi di file * sconosciuti * di interesse. Quindi, non posso dire 'git' gli altri file, perché non so cosa siano. – ntc2
Invece di modificare la * domanda * per aggiungere una risposta, il modo StackOverflow è di aggiungere una risposta, anche se è una tua domanda. Mi sono permesso di aggiungere la risposta corretta, ma lo eliminerò volentieri se lo pubblichi da solo – djeikyb