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:
language:
repo:
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).
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"