169 votes

Comment afficher VRAIMENT les journaux des fichiers renommés avec git?

Je suis relativement nouveau à git, j'ai utilisé la Subversion avant.

J'ai remarqué que la plupart de l'interface graphique de git frontaux et IDE plugins ne semblent pas être en mesure d'afficher l'historique d'un fichier si le fichier a été renommé. Lorsque j'utilise

git log --follow

sur la ligne de commande, je peux voir l'ensemble du journal à travers renomme.

Selon Linus Torvalds --suivez commutateur est un "SVN noob" pleaser, sérieux git utilisateurs ne l'utilisent pas:

- suivre un total de hack, signifiait seulement satisfaire, ex-SVN utilisateurs qui n'ont jamais savait rien à propos de choses comme la parentalité ou de nice révision des graphiques de toute façon.

Ce n'est pas tout à fait fondamental, mais l' actuel de la mise en œuvre de "--suivre" est vraiment un moyen rapide de prétraitement chose boulonné sur la révision de la marche logique, plutôt que de n'être rien vraiment intégrale.

Elle a littéralement été conçu comme une "SVN noob" pleaser, non pas comme un "vrai git la fonctionnalité" chose. L'idée était que vous obtenez loin de la (cassé) état d'esprit de la pensée qui renomme question dans la grande image.

Ma Question: Comment faire le hardcore git parmi vous, accéder à l'historique d'un fichier lorsqu'il a été renommé? Qu'est-ce que la "vraie" façon de le faire?

80voto

Charles Bailey Points 244082

Je pense que le lecteur générale derrière Linus point, c'est que - et ce avec une pincée de sel - hardcore git utilisateurs ne sont pas toujours des soins à propos de l'histoire d'un "fichier". Vous de mettre du contenu dans un dépôt git parce que le contenu dans son ensemble a un sens de l'histoire.

Un changement de nom de fichier est un petit cas particulier de "contenu" se déplaçant entre les chemins. Vous pourriez avoir une fonction qui se déplace entre les fichiers qui un git utilisateur peut trackdown avec "pioche" functionalitly (par exemple, log -S).

D'autres "chemin" modifications comprennent l'association et fractionnement des fichiers; git n'a pas vraiment de soins de fichier que vous envisagez de renommé et que l'on vous envisagez de copier (ou de renommer et de supprimer) il juste des pistes le contenu complet de votre arbre.

git encourage "l'arbre tout entier" réflexion où, comme beaucoup de systèmes de contrôle de version sont très centrée sur le fichier. C'est pourquoi git fait référence à des "chemins" le plus souvent il se réfère à "des noms de fichiers".

40voto

Alberto Bacchelli Points 138

J'ai exactement le même problème que vous rencontrez. Même si je ne peux vous donner aucune réponse, je crois que vous pouvez lire cet e-mail écrit par Linus en 2005, il est très pertinent et pourrait vous donner un indice sur la façon de traiter le problème:

http://article.gmane.org/gmane.comp.version-control.git/217

Je l'ai trouvé référencé par ce blog, qui pourrait également être utile pour vous de trouver une solution viable:

http://gitster.livejournal.com/35628.html

S'il vous plaît, gardez-nous au courant de vos progrès sur ce point.

16voto

Michael Parker Points 566

J'ai remarqué que la plupart de l'interface graphique de git frontaux et IDE plugins ne semblent pas être en mesure d'afficher l'historique d'un fichier si le fichier a été renommé

Vous serez heureux de savoir que la plupart des populaires Git de l'INTERFACE utilisateur des outils de soutien. Il existe des dizaines de Git de l'INTERFACE utilisateur des outils disponibles donc je ne vais pas les énumérer toutes, mais par exemple:

  • SourceTree, lors de la visualisation d'un fichier journal, a une case à cocher "Suivre renommé les fichiers" en bas à gauche
  • TortoiseGit a un "suivez renomme" case à cocher dans la fenêtre de log en bas à gauche.

Plus d'infos sur le Git de l'INTERFACE utilisateur des outils:

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