217 votes

Git recherche une chaîne dans un seul fichier historique

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 souhaite donc rechercher dans l'historique de foo.rb la chaîne bar pour voir si elle était jamais défini dans le passé.

J'ai trouvé cette recherche dans toute l'histoire de git pour string?

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

297voto

ralphtheninja Points 24346

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

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

22voto

Antoine Pelisse Points 5067

Ou peut-être pouvez-vous essayer celui-ci (à partir de questions connexes. Recherchez dans string tout l'historique de git )

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

En fait, il recherchera le contenu du fichier et ne commettra pas de messages / correctifs pour toute occurrence de barre.

2voto

Dmitriy Reznik Points 4226

Il y a un remplacement pour la commande git log (from manual ):

 $ git log Makefile      # commits that modify Makefile
 

Pour que vous puissiez utiliser:

 git log foo.rb | grep "bar"
 

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