Comment afficher l'historique du journal git pour un sous-répertoire d'un dépôt git?


228

Disons que j'ai un dépôt git qui ressemble à ceci.

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

Existe-t-il un moyen de demander à git log d'afficher uniquement les messages du journal pour un répertoire spécifique. Par exemple, je veux voir ce qui valide les fichiers touchés dans foo / A uniquement?

Réponses:


242

Depuis le répertoire foo/, utilisez

  git log -- A

Vous avez besoin du '-' pour vous séparer <path>..des <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
soit dit en passant, vous devriez rester dans le dossier "foo" avant de faire "git log - A B"
Sergey Leyko

22
Pour les personnes qui lisent, cela montre les changements dans A et B pas seulement Acomme l'OP l'a demandé
aidan

1
@GoZoner, existe-t-il un moyen de trouver toutes les validations dans lesquelles un nom de dossier spécifique a été modifié? le dossier aurait pu se déplacer, donc je préférerais ne pas avoir à chercher comment et où le dossier a été déplacé ..
alpha_989

3
^^ Mis à jour pour afficher les modifications Auniquement, comme l'OP l'a demandé.
GoZoner

Que faire si le répertoire a été supprimé dans l'en-tête actuel?
Aaron Franke

34

si vous voulez le voir graphiquement, vous pouvez utiliser

gitk -- foo/A

entrez la description de l'image ici


26

Vous pouvez utiliser git logavec les noms de chemin des dossiers respectifs:

git log A B

Le journal n'affichera que les validations effectuées dans Aet B. J'ai l'habitude --statde rendre les choses un peu plus jolies, ce qui permet des révisions de validation rapides.


26

Entrer

git log .

à partir du répertoire spécifique, il donne également des commits dans ce répertoire.


4
Pas travaillé pour moi .. Après avoir atterri dans un répertoire spécifique et donné le journal git. m'a donné tous les commits de la racine.
AKS

1
Travaille pour moi. Utilisation de git bash
buckley

2

Pour suivre les modifications apportées à un dossier dans lequel le dossier a été déplacé, j'ai commencé à utiliser:

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

Ce n'est pas parfait car il récupérera d'autres dossiers du même nom, mais s'il est unique, cela semble fonctionner.


0

Les autres réponses ne montrent que les fichiers modifiés.

git log -p DIRest très utile, si vous avez besoin du diff complet de tous les fichiers modifiés dans un sous-répertoire spécifique.

Exemple: afficher toutes les modifications détaillées dans une plage de versions spécifique

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
Je ne comprends pas comment cette réponse se rapporte à la question
Florian Leitgeb
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.