Question

Je suis sur le point de déplacer une tonne de fichiers autour d'un projet existant. Avant de le faire, je voudrais avoir une prise ferme sur certaines techniques utilisées pour analyser le code qui a une histoire de plusieurs fichiers.

Comment puis-je utiliser git pour demander: « d'où vient cette ligne de code viennent » lorsque le contenu est déplacé à travers plusieurs fichiers qu'il est temps de la vie?

Je sais que git ne détecte pas renomme explicitement (pour une bonne raison) il semble que je devrais être en mesure de demander, je ne suis pas sûr de savoir comment. S'il y a la méthode de visualiser ce qui serait génial de savoir aussi.

Était-ce utile?

La solution

Je recommande la recherche à trois outils dans la boîte à outils git. Le premier est le blâme, ce qui est sensiblement la même que dans cvs. Il montre que la date de dernière touchèrent ligne dans un fichier. Si vous voulez regarder voir ce qu'il y avait avant, vous pouvez prendre le commettras qui a touché la ligne et regarder la précédente commettre.

git show <sha1_of_interesting_commit>^ -- file/path

Vous pouvez répéter le blâme pour voir ce qui est arrivé avant.

git blame <sha1_of_interesting_commit>^ -- file/path

Le deuxième outil utilise --follow pour le suivi des dossiers passés renomme.

git log --follow -- file/path

Le troisième - et peut-être l'outil le plus utile - est l'option pickaxe pour ouvrir une session. Cette recherche historique des changements, les lignes supprimées ou modifiées introduites qui comprennent un peu donné de texte. Ceci est particulièrement utile pour des choses comme le suivi des noms de fonction. Il peut être nouveau dans un fichier dans un commit particulier, mais est-il venu d'un fichier source différent? Était un appel à elle ajouté en même temps, ou avant son transfert?

git log -S"Interesting_Function"

Si vous utilisez un patch ou une option stat (par exemple de -p ou --stat), la sortie sera limitée aux fichiers dont les changements réellement impliqués la chaîne de recherche sauf si vous utilisez également --pickaxe-all où tout le changement est affiché.

Combiné avec git grep pour montrer où toutes les occurrences actuelles d'une chaîne sont Pioche est un outil d'exploration de l'histoire extrêmement utile.

Autres conseils

git blame est ce que vous utiliseriez pour demander « d'où vient cette ligne de code venir? ». Je ne sais pas si elle gère renomme. Probablement le fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top