440 votes

Comment puis-je Rechercher Git des branches pour un fichier ou un répertoire ?

Git, comment pourrais Rechercher un fichier ou un répertoire de chemin d’accès à travers un certain nombre de branches ?

J’ai écrit quelque chose dans une branche, mais je ne me souviens pas lequel. Maintenant, j’ai besoin de le trouver.

Précisions: je suis à la recherche d’un fichier que j’ai créé sur une de mes branches. Je tiens à le trouver par chemin d’accès et non par son contenu, car je ne me souviens pas le contenu.

601voto

Dustin Points 35205

git log il trouvera pour vous :

80voto

ididak Points 4208

git ls-arbre pourrait aider. Pour rechercher dans toutes les branches existantes :

L’avantage de ceci est que vous pouvez également Rechercher avec des expressions régulières pour le nom du fichier.

27voto

albfan Points 2333

Bien que @ididak réponse est assez cool, et @Handyman5 fournit un script pour l'utiliser, j'ai trouvé peu restreint qui l'approche.

Parfois, vous avez besoin de chercher quelque chose qui peut apparaître/disparaître au fil du temps, alors pourquoi ne pas rechercher à l'encontre de tous les commits? Sans compter que, parfois, vous avez besoin d'une réponse en clair, d'autres fois seulement commettre des matchs. Voici les deux options.

Mettre ces scripts sur votre chemin

git-find-file

for branch in $(git rev-list --all)
do
  if (git ls-tree -r --name-only $branch | grep --quiet "$1") 
  then
     echo $branch
  fi
done

git-find-file-verbose

for branch in $(git rev-list --all)
do
  git ls-tree -r --name-only $branch | grep "$1" | sed 's/^/'$branch': /'
done

Maintenant vous pouvez le faire

$ git find-file <regex>
sha1
sha2

$ git find-file-verbose <regex>
sha1: path/to/<regex>/searched
sha1: path/to/another/<regex>/in/same/sha
sha2: path/to/other/<regex>/in/other/sha

Voir que l'utilisation de getopt vous pouvez modifier ce script pour alterner la recherche de tous les commits, refs, refs/heads, été détaillé, etc, mais c'est une autre histoire...

$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --target=refs/heads <regex>

16voto

Greg Hewgill Points 356191

Vous pouvez utiliser `` et recherchez s’engage « toucher les chemins d’accès » et le chemin d’accès vous intéresse.

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