web-dev-qa-db-fra.com

Comment répertorier tous les commits ayant modifié un fichier spécifique?

Existe-t-il un moyen de répertorier tous les commits ayant modifié un fichier spécifique?

711
Daniel

_--follow_ fonctionne pour un fichier particulier

_git log --follow -- filename
_

Différence avec les autres solutions données

Notez que les autres solutions incluent _git log path_ (sans le _--follow_). Cette approche est pratique si vous souhaitez suivre, par exemple, changements dans un répertoire, mais trébuche quand les fichiers sont renommés (utilisez donc --follow filename).

967
jackrabb1t

git log path devrait faire ce que vous voulez. De la git log man :

[--] <path>…

Show only commits that affect any of the specified paths. To prevent confusion with 
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
121
Gabe Moothart

J’ai examiné cette question de près et toutes ces réponses ne semblent pas vraiment me montrer tous les engagements dans toutes les branches.

Voici ce que j’ai trouvé en jouant avec les options de la vue d’édition de gitk. Cela me montre tous les commits pour un fichier indépendamment de la branche, du local, du reflog et de la télécommande.

gitk --all --first-parent --remotes --reflog --author-date-order -- filename
48
BigMiner

Utilisez la commande ci-dessous pour obtenir des commits pour un fichier spécifique:

git log -p filename
41
Sankar Subburaj

Cela devrait être aussi simple que git log <somepath>; vérifiez la page de manuel (git-log(1)).

Personnellement, j'aime bien utiliser git log --stat <path> pour pouvoir voir l'impact de chaque commit sur le fichier.

35
rfunduk

Comme le soulignait jackrabb1t, --follow est plus robuste car il continue à lister l'historique au-delà des renames/déplacements. Donc, si vous recherchez un fichier qui ne se trouve pas actuellement dans le même chemin ou un fichier qui a été renommé tout au long de différentes commits, --follow le suivra.

Cela peut être une meilleure option si vous souhaitez visualiser les changements de nom/chemin:

git log --follow --name-status -- <path>

Mais si vous voulez une liste plus compacte avec seulement ce qui compte:

git log --follow --name-status --format='%H' -- <path>

ou même

git log --follow --name-only --format='%H' -- <path>

L'inconvénient est que --follow ne fonctionne que pour un seul fichier.

15
Roberto

Alternativement (depuis Git 1.8.4), il est également possible d’obtenir tous les commits qui ont changé une partie spécifique d’un fichier. Vous pouvez l'obtenir en passant la ligne de départ et le numéro de la ligne de fin.

Le résultat renvoyé serait la liste des commits qui ont modifié cette partie particulière. La commande va comme:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

upperLimit est le start_line_number et lowerLimit est le ending_line_number

Plus d'infos - https://www.techpurohit.com/list-some-useful-git-commands

14
jitendrapurohit

Si vous essayez de - suivez un fichier supprimé lors d'une précédente utilisation de commit

git log --follow -- filename
10
snovelli

Si vous voulez voir tous les commits qui ont changé un fichier, utilisez ceci dans toutes les branches:

git log --follow --all <filepath>
8
Always_Beginner

Si vous voulez rechercher tous les commits par filename et pas parfilepath, utilisez:

git log --all -- '*.wmv'
6
WonderLand

Utilisez git log --all <filename> pour afficher les validations ayant une influence sur <filename> dans toutes les branches.

5
Lebnik

Si vous souhaitez voir toutes les modifications effectuées dans les commits ayant modifié un fichier particulier (plutôt que les modifications apportées au fichier lui-même), vous pouvez transmettre --full-diff:

git log -p --full-diff [branch] -- <path>
5
Cubic
gitk <path_to_filename>

En supposant que le paquet "gitk" soit déjà installé.

S'il n'est pas installé, procédez comme suit:

Sudo apt-get install gitk

Et ensuite, essayez la commande ci-dessus. C'est pour Linux ... Cela pourrait aider les utilisateurs de Linux s'ils veulent une interface graphique.

3
Breen ho

Sous Linux, vous pouvez utiliser gitk pour cela.

Il peut être installé en utilisant "Sudo apt-get install git-gui gitk". Il peut être utilisé pour voir les validations d'un fichier spécifique par "gitk <nom de fichier>".

1
# Shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>

# Shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>

référence

1
AnshBikram