158 votes

Git - Afficher l'historique d'un fichier?

Double Possible:
Afficher l'historique des modifications d'un fichier à l'aide de versioning Git

Parfois j'ai envie de faire une étape dans l'histoire d'un fichier particulier. Dans le passé j'ai utilisé P4V et cela a été très rapide et intuitive.

  1. Clic droit sur un fichier et sélectionnez historique.
  2. Faire défiler les dates et voir une belle diff de ce qui a été changé en que fichier sur cette date. Simple.

Le passage à git c'est maintenant une tâche éreintante.

  1. "git log nom de fichier"
  2. Regardez l'histoire et choisissez une date, une copie de hachage
  3. "git diff de hachage"
  4. Faites défiler diff pour les choses qui ont changé dans le fichier qui m'intéressent.
  5. Nope, ce n'est pas elle, permet d'essayer une autre date - retour à l'étape 2, rincer et répéter.

J'ai cherché SI, et j'en ai essayé quelques-uns des souvent suggéré d'interfaces graphiques: github, gitk, gitg, git-gui.

Ces tous supprimer la nécessité d'exécuter manuellement les commandes, mais le flux de travail est la même pour cela. Afficher l'historique du fichier; la vue de commettre l'infraction; recherche par le biais de diff de beaucoup de pertinence des fichiers. C'est lent et répétitif.

Toutes les données sont dans le repo donc je ne vois pas la raison de cette simple utilisation ne pouvait pas être plus simple.

Peut-on recommander un outil qui fait ça - ou d'une façon plus efficace d'utiliser la ligne de commande pour faire ce que je veux?

Merci pour toutes les suggestions.

179voto

ralphtheninja Points 24346

Vous pouvez utiliser git log pour afficher les différences lors de la recherche:

 git log -p -- path/to/file
 

144voto

Pierre Mage Points 526

Avez-vous essayé ceci:

 gitk path/to/file
 

53voto

Jeff Ferland Points 9485

git log -p permettra de générer de l'un patch (diff) pour chaque livraison sélectionné. Pour un seul fichier, utilisez git log --follow -p $file.

Si vous êtes à la recherche pour un changement particulier, utilisez git bisect pour trouver la variation en log(n) vues en divisant le nombre de commits dans la moitié jusqu'à ce que vous trouver où ce que vous êtes à la recherche pour changé.

Également envisager de regarder en arrière dans l'histoire, à l'aide de git blame à la suite de changements de la ligne en question, si vous savez ce que c'est. Cette commande affiche la révision la plus récente à affecter une certaine ligne. Vous pourriez avoir à revenir quelques versions de trouver le premier changement où quelque chose a été introduit si quelqu'un a peaufiné au fil du temps, mais qui pourrait vous donner un bon départ.

Enfin, gitk comme une interface graphique ne montre-moi le patch immédiatement pour toute commettre des que je clique sur.

Exemple enter image description here:

12voto

LiKao Points 4825

La principale question pour moi, de quoi êtes-vous en train d'essayer de trouver? Êtes-vous essayer de savoir, qu'un certain nombre de modifications a été introduit dans ce fichier?

Vous pouvez utiliser git blame pour cela, il va anotate chaque ligne avec un SHA1 et une date à laquelle il a été changé. git blame pouvez aussi vous dire que lorsqu'une ligne a été supprimé ou où il a été transféré si vous êtes intéressé par ce.

Si vous essayez de trouver, lorsqu'un certain bug a été introduit, git bisect est un très puissant outil. git bisect va faire une recherche binaire sur votre histoire. Vous pouvez utiliser git bisect start pour commencer coupant, puis git bisect bad , marque de s'engager où le bug est présent et git bisect good marquer un commit qui n'a pas le bug. git va commander une s'engager entre les deux et demandez-vous si c'est bon ou mauvais. Vous pouvez généralement trouver le fautif s'engager dans un délai de quelques étapes.

Depuis que j'utilise git, je n'ai pratiquement jamais constaté la nécessité de rechercher manuellement par le biais de patch histoires à trouver quelque chose, puisque le plus souvent git me propose une manière simple de rechercher les informations dont j'ai besoin.

Si vous essayez de penser à de moins en moins de la façon de faire un certain flux de travail, mais plus dans ce que l'information dont vous avez besoin, vous aurez probablement de nombreux flux de travail qui (à mon avis) sont beaucoup plus simple et plus rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X