Git recherche une chaîne dans un historique de fichiers unique

Donc, si j’ai un fichier appelé foo.rb et qu’il me donne une erreur pour une méthode manquante appelée bar , je veux donc rechercher l’historique de foo.rb dans la bar chaînes pour voir si elle a déjà été définie.

J’ai trouvé cette recherche dans toute l’histoire de Git pour une chaîne?

Mais cela recherche tous les fichiers. Je veux juste chercher dans un fichier.

Pour cela, vous pouvez utiliser l’option -S pour git log:

 git log -S'bar' -- foo.rb 

Ou peut-être que vous pouvez essayer celui-ci (à partir de questions connexes Recherche toute l’histoire de git pour la chaîne )

 git rev-list --all foo.rb | ( while read revision; do git grep -F 'bar' $revision foo.rb done ) 

Il recherchera réellement le contenu du fichier et ne commettra aucun message / correctif pour toute occurrence de barre.

Il y a un remplacement pour la commande git log (à partir du manuel ):

 $ git log Makefile # commits that modify Makefile 

Donc, vous pouvez utiliser:

 git log foo.rb | grep "bar"