2010-11-22 8 views
8

Il était une fois un méchant a supprimé une constante du code source géré par notre repo GIT.Comment trouver le code 'perdu' dans git

Personne ne l'a remarqué depuis un temps loooong .... jusqu'à maintenant.

Pourtant, je veux savoir dans quel commit cette constante a disparu, et qui est le méchant. Je ne connais que le nom de la constante

Quelque meilleure approche que git blame --reverse?

+0

qui était le méchant? – Dennis

Répondre

15

Ceci listera tous les commits qui ajoutés ou supprimés de la chaîne FOOBAR de tout fichier:

+0

fatal: argument non reconnu: --patch – astropanic

+1

Holy hell, vraiment? Quel âge a votre Git? Essayez avec '-p' au lieu de' --patch'. – cdhowie

+0

1.7.1, merci, génial! – astropanic

0

git log comme git log -- path/to/file/with/constant vous devriez obtenir tous les commits qui ont jamais touché ce fichier. Si le fichier ne change pas souvent et que votre équipe a l'habitude d'écrire de bons messages de validation, cela devrait vous aider à démarrer. Une fois que vous avez trouvé la révision où elle a disparu, vous avez votre contrevenant.

Une autre option serait git bisect pour rechercher la validation incriminée en utilisant un modèle de recherche binaire si le fichier change beaucoup. Quelque chose du genre:

$ git bisect start 
$ git bisect bad 
$ git bisect good <known-good-rev> 
$ fgrep -Hn "FOOBAR" file 
# Ah it is good! 
$ git bisect good 
$ fgrep -Hn "FOOBAR" file 
# Ah it is bad! 
$ git bisect bad 

Continuez à suivre les instructions jusqu'à ce que vous trouviez la révision qui a introduit l'erreur. Lisez le man page pour des instructions plus détaillées. Une autre bonne ressource à lire serait le relevant section of Pro Git.

Bonne chance.

Questions connexes