Question Afficher l'historique des modifications d'un fichier à l'aide de Git versioning


Comment puis-je voir l'historique des modifications d'un fichier individuel dans Git, les détails complets avec ce qui a changé?

J'ai jusqu'à:

git log -- [filename]

ce qui me montre l'histoire de commit du fichier, mais comment obtenir au contenu de chacun des changements de dossier?

J'essaie de faire la transition de MS SourceSafe et qui était une simple right-click → show history.


2502
2017-11-10 15:42


origine


Réponses:


Pour cela, j'utiliserais:

gitk [filename]

ou pour suivre les noms de fichiers passés

gitk --follow [filename]

1947
2017-08-24 12:05



Vous pouvez utiliser

git log -p filename

laisser git générer les correctifs pour chaque entrée de journal.

Voir

git help log

pour plus d'options - il peut effectivement faire beaucoup de belles choses :) Pour obtenir juste le diff pour un commit spécifique, vous pouvez

git show HEAD 

ou toute autre révision par identifiant. Ou utiliser

gitk

pour parcourir les changements visuellement.


1832
2017-11-10 15:56



git log --follow -p -- file

Cela montrera le tout l'historique du fichier (y compris l'historique au-delà des renom et avec des différences pour chaque changement).

En d'autres termes, si le fichier nommé bar était une fois nommé foo, puis git log -p bar (sans le --follow option) ne montrera que l'historique du fichier jusqu'au moment où il a été renommé - il ne montrera pas l'historique du fichier quand il était connu comme foo. En utilisant git log --follow -p bar affichera l'historique complet du fichier, y compris les modifications apportées au fichier lorsqu'il était connu foo. le -p L'option garantit que les différences sont incluses pour chaque changement.


1184
2018-03-30 23:25



Si vous préférez rester en mode texte, vous pouvez utiliser tig.

Installation rapide:

  • apt-get: # apt-get install tig 
  • Homebrew (OS X): $ brew install tig

Utilisez-le pour afficher l'historique sur un seul fichier: tig [filename]
Ou parcourez l'historique détaillé des pensions: tig

Semblable à gitk mais basé sur le texte. Prend en charge les couleurs dans le terminal!


146
2018-06-07 10:23



git whatchanged -p filename est également équivalent à git log -p filename dans ce cas.

Vous pouvez également voir quand une ligne de code spécifique dans un fichier a été modifiée avec git blame filename. Cela affichera un identifiant de validation court, l'auteur, l'horodatage et la ligne de code complète pour chaque ligne du fichier. C'est très utile après que vous ayez trouvé un bug et que vous vouliez savoir quand il a été introduit (ou de qui est-ce la faute).


101
2017-11-11 06:12



Utilisateurs de SourceTree

Si vous utilisez SourceTree pour visualiser votre dépôt (c'est gratuit et plutôt bon), vous pouvez faire un clic droit sur un fichier et sélectionner Journal sélectionné

enter image description here

L'affichage (ci-dessous) est beaucoup plus convivial que gitk et la plupart des autres options listées. Malheureusement (à ce moment) il n'y a pas de moyen facile de lancer cette vue à partir de la ligne de commande - l'interface CLI de SourceTree ouvre juste les repos.

enter image description here


91
2017-07-30 18:55



Pour montrer quelle révision et quel auteur ont modifié en dernier lieu chaque ligne d'un fichier:

git blame filename

ou si vous voulez utiliser la puissante interface graphique de blâme:

git gui blame filename

56
2017-08-11 13:01



Résumé des autres réponses après les avoir lues et avoir joué un peu:

La commande de ligne de commande habituelle serait

git log --follow --all -p dir/file.c

Mais vous pouvez aussi utiliser soit gitk (IUG) ou tig (texte-ui) pour donner des moyens beaucoup plus lisible par l'homme de regarder.

gitk --follow --all -p dir/file.c

tig --follow --all -p dir/file.c

Sous debian / ubuntu, la commande d'installation pour ces beaux outils est comme prévu:

sudo apt-get install gitk tig

Et j'utilise actuellement:

alias gdf='gitk --follow --all -p'

pour que je puisse taper gdf dir obtenir un historique ciblé de tout dans le sous-répertoire dir.


39
2017-12-05 18:38



Ajoutez cet alias à votre fichier .gitconfig:

[alias]
    lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

Et utilisez la commande comme ceci:

> git lg
> git lg -- filename

La sortie ressemblera presque exactement à la sortie gitk. Prendre plaisir.


22
2018-06-26 20:12