En utilisant git, comment pourrais-je rechercher une chaîne dans toutes les twigs?

En utilisant git, comment pourrais-je rechercher dans tous les fichiers de toutes les twigs locales une chaîne donnée?

Github spécifique: est-il possible d’effectuer la recherche ci-dessus dans toutes les twigs github? (Il y a plusieurs twigs distantes sur mon repo github distant que idéalement je n’aurais pas à baisser pour cette recherche ..)

Vous pouvez le faire sur un repo Git:

git grep "ssortingng/regexp" $(git rev-list --all) 

La recherche avancée Github a une capacité de recherche de code:

La recherche de code va parcourir tout le code hébergé publiquement sur GitHub. Vous pouvez également filtrer par:

  • la langue: language:
  • le nom du référentiel (y compris le nom d’utilisateur): repo:
  • le chemin du fichier: path:

Si vous utilisez la commande @manojlds git grep et obtenez une erreur:

 -bash: /usr/bin/git: Argument list too long" 

alors vous devriez utiliser xargs:

 git rev-list --all | xargs git grep "ssortingng/regexp" 

Voir aussi Comment grep (rechercher) du code commis dans l’historique git?

Dans de nombreux cas, git rev-list --all peut renvoyer un grand nombre de validations, et ce, pour toujours. Si, au lieu de chercher dans chaque engagement de chaque twig de l’historique de votre repository, vous souhaitez simplement rechercher tous les conseils de twig, vous pouvez le remplacer par git show-ref --heads . Donc au total:

 git grep "ssortingng" `git show-ref --heads` 

ou:

 git show-ref --heads | xargs git grep "ssortingng" 

Conseil: Vous pouvez écrire une sortie dans un fichier pour la voir dans l’éditeur.

 nano ~/history.txt git show-ref --heads | xargs git grep "search ssortingng here" >> ~/history.txt 

Il y a peu de problèmes avec les solutions listées ici (même acceptées).

  1. Vous n’avez pas besoin de lister tous les hachages car vous aurez des doublons, cela prend plus de temps.

Il construit sur ceci où vous pouvez rechercher une chaîne "test -f /" sur plusieurs twigs master et dev as

 git grep "test -f /" master dev 

qui est la même que

 printf "master\ndev" | xargs git grep "test -f /" 

Alors voilà.

Cela trouve les hachages pour la pointe de toutes les twigs locales et les recherches uniquement dans ces validations.

 git branch -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "ssortingng/regexp" 

Si vous devez également rechercher dans des twigs distantes, ajoutez -a :

 git branch -a -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "ssortingng/regexp" 

Mettre à jour:

 # search in local twigs git branch | cut -c3- | xargs git grep "ssortingng" # search in remote twigs git branch -r | cut -c3- | xargs git grep "ssortingng" # search in all (local and remote) twigs git branch -a | cut -c3- | xargs git grep "ssortingng" # search in twigs, and tags git show-ref | grep -v "refs/stash" | cut -d' ' -f2 | xargs git grep "ssortingng" 

Vous pouvez essayer ceci

 git log -Sxxxx #search all commits git log -Sxxxx --twigs[=] #search twigs 

J’utilise la commande suivante pour obtenir une twig par sa chaîne

 git branch -a | grep "your ssortingng"