Come mostrare la cronologia dei log git per una sottodirectory di un repository git?


228

Diciamo che ho un repository git che assomiglia a questo.

foo/
  .git/
  A/
   ... big tree here
  B/
   ... big tree here

C'è un modo per chiedere a git log di mostrare solo i messaggi di registro per una directory specifica. Ad esempio, voglio vedere cosa commette i file toccati solo in foo / A?

Risposte:


242

Dalla directory foo/, utilizzare

  git log -- A

È necessario il '-' per separarsi <path>..dai <since>..<until>refspecs.

# Show changes for src/nvfs
$ git log --oneline -- src/nvfs
d6f6b3b Changes for Mac OS X
803fcc3 Initial Commit

# Show all changes (one additional commit besides in src/nvfs).
$ git log --oneline
d6f6b3b Changes for Mac OS X
96cbb79 gitignore
803fcc3 Initial Commit

1
a proposito, dovresti rimanere nel "pippo" prima di fare "git log - A B"
Sergey Leyko

22
Per le persone che leggono le scremature, questo mostra cambiamenti in A e B , non solo Acome richiesto da OP
aidan

1
@GoZoner, c'è un modo per trovare tutti i commit in cui è stato cambiato un nome di cartella specifico? la cartella avrebbe potuto spostarsi, quindi preferirei non dover dare la caccia a come e dove si spostava la cartella ..
alpha_989

3
^^ Aggiornato per mostrare Asolo le modifiche , come richiesto dall'OP.
GoZoner,

Che cosa succede se la directory è stata eliminata nell'intestazione corrente?
Aaron Franke,

34

se vuoi vederlo graficamente puoi usarlo

gitk -- foo/A

inserisci qui la descrizione dell'immagine


26

È possibile utilizzare git logcon i percorsi delle rispettive cartelle:

git log A B

Il registro mostrerà solo i commit effettuati in Ae B. Di solito mi lancio --statper rendere le cose un po 'più carine, il che aiuta a fare rapidamente delle recensioni.


26

accedere

git log .

dalla directory specifica, dà anche commit in quella directory.


4
Non ha funzionato per me..Dopo l'atterraggio in una directory specifica e dando il registro git. mi ha dato tutti i commit dalla radice.
AKS

1
Per me va bene. Usando git bash
buckley il

2

Per tenere traccia delle modifiche in una cartella in cui è stata spostata la cartella, ho iniziato a utilizzare:

git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"

Questo non è perfetto in quanto prenderà altre cartelle con lo stesso nome, ma se è univoco, allora sembra funzionare.


0

Le altre risposte mostrano solo i file modificati.

git log -p DIRè molto utile, se è necessario il diff completo di tutti i file modificati in una sottodirectory specifica.

Esempio: mostra tutte le modifiche dettagliate in un intervallo di versioni specifico

git log -p 8a5fb..HEAD -- A B

commit 62ad8c5d
Author: Scott Tiger
Date:   Mon Nov 27 14:25:29 2017 +0100

    My comment

...
@@ -216,6 +216,10 @@ public class MyClass {

+  Added
-  Deleted

1
Non capisco come questa risposta si riferisca alla domanda
Florian Leitgeb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.