Duplicate possible:
Afficher l'historique des modifications d'un fichier à l'aide du contrôle de version de Git
Parfois, je veux parcourir l'historique d'un fichier particulier. Dans le passé, j'utilisais P4V, ce qui était très rapide et intuitif.
Passer à Git est maintenant une tâche éreintante.
J'ai fait une recherche SO, et j'ai essayé quelques uns des guis couramment suggérés: github, gitk, gitg, git-gui.
Tous ces éléments suppriment la nécessité d’exécuter manuellement des commandes, mais le flux de travail est le même pour cela. Voir l'historique du fichier; voir commit; rechercher dans diff de nombreux fichiers non pertinents. C'est lent et répétitif.
Toutes les données sont dans le référentiel, je ne vois donc aucune raison pour que ce cas d'utilisation simple et commun ne puisse être plus simple.
Quelqu'un peut-il recommander un outil qui fait cela - ou un moyen plus efficace d'utiliser la ligne de commande pour faire ce que je veux?
Merci pour vos suggestions.
Avez-vous essayé ceci:
gitk path/to/file
Vous pouvez utiliser git log pour afficher les diffs lors de la recherche:
git log -p -- path/to/file
git log -p
générera le correctif (le diff) pour chaque commit sélectionné. Pour un fichier unique, utilisez git log --follow -p $file
.
Si vous recherchez un changement particulier, utilisez git bisect
pour trouver le changement dans les affichages log (n) en divisant le nombre de validations par deux jusqu'à ce que vous trouviez où vous cherchez. pour changé.
Pensez également à revenir en arrière dans l'historique en utilisant git blame
à suivez les modifications apportées à la ligne en question si vous savez de quoi il s'agit. Cette commande affiche la révision la plus récente affectant une certaine ligne. Vous devrez peut-être revenir en arrière dans quelques versions pour trouver le premier changement où quelque chose a été introduit si quelqu'un l'a modifié avec le temps, mais cela pourrait vous donner un bon départ.
Enfin, gitk
en tant qu'interface graphique me montre immédiatement le correctif pour tout commit sur lequel je clique.
Exemple :
La principale question pour moi serait de savoir ce que vous essayez réellement de savoir. Essayez-vous de savoir quand un certain ensemble de modifications a été introduit dans ce fichier?
Vous pouvez utiliser git blame
pour cela, il annotera chaque ligne avec un SHA1 et une date à laquelle elle a été modifiée. git blame
peut également vous dire quand une certaine ligne a été supprimée ou à quel endroit elle a été déplacée si cela vous intéresse.
Si vous essayez de savoir quand un certain bogue a été introduit, git bisect
est un outil très puissant. git bisect
effectuera une recherche binaire sur votre historique. Vous pouvez utiliser git bisect start
pour commencer la division en deux, puis git bisect bad
pour marquer un commit où le bogue est présent et git bisect good
pour marquer un commit qui ne contient pas le bogue. git vérifiera un commit entre les deux et vous demandera s'il est bon ou mauvais. Vous pouvez généralement trouver le commit défectueux en quelques étapes.
Depuis que j'ai utilisé git, je n'ai presque jamais trouvé le besoin de parcourir manuellement l'historique des correctifs pour trouver quelque chose, car le plus souvent, git m'offre un moyen de rechercher les informations dont j'ai besoin.
Si vous essayez de penser moins à la façon de faire un certain flux de travail, mais plus en ce qui concerne les informations dont vous avez besoin, vous aurez probablement de nombreux flux de travail qui (à mon avis) sont beaucoup plus simples et rapides.