in git, comment trouver les identifiants SHA-1 de tous les blobs de la base de données d'objets contenant un modèle de chaîne? git-grep code> fournit uniquement les chemins de fichiers et non les identifiants SHA1. P>
3 Réponses :
Vous pouvez essayer un journal git à l'aide de l'option Pickaxe: voir " Comment trouver commettre SHA1 d'un arbre contenant un fichier contenant une chaîne donnée " p> < / p>
Ce n'est que des recherches à travers les réfs. Tous les objets comme l'OP ne veulent pas. Une fois qu'une STAND / BRANCHE est supprimée, votre recherche ne fonctionnera pas. J'ai posté une réponse en utilisant une version modifiée de votre solution.
Edit: Mise à jour en fonction de nouveaux résultats de test à l'aide de la version 2.7.4
ressemble à la solution que j'ai publiée uniquement sur le reflex. Donc, si vous supprimez une entrée de reflèvement, cette entrée ne sera pas recherchée - même si l'objet existe toujours. P>
Donc, vous devrez faire quelque chose comme: P>
git log --reflog --grep=pattern
Je n'ai généralement pas besoin de chercher par élément supprimé (n'oubliez pas que le reflogue est local à votre repo: si vous le clonez à nouveau, le reflou sera vide). Mais pour une recherche locale dans le même repo, cela fonctionnera effectivement. +1
Droite, je suis d'accord que ce n'est pas courant de chercher à travers tous les objets. Cependant, c'est ce que l'OP veut. Peut être utile, un exemple que je peux penser, c'est si vous avez commis un mot de passe à tort et que vous souhaitez vous en débarrasser du référentiel local. Un autre serait si vous avez supprimé quelque chose sur le reflèvement et que vous voulez le récupérer (en supposant qu'un GC n'a pas supprimé le blob).
J'ai essayé mais cela n'a pas fonctionné (GREP ne fonctionne tout simplement pas de cette affaire, le document indique que Git-Rev-List --Grep est pour commettre un message mais pas de contenu blob, c'est peut-être la raison?). Mais j'ai trouvé une autre solution à la suite de la direction: Git Grep 'Text' $ (GIT FSCK --UNRÉHAISABLABLE | GREP '^ BLOB inaccessible' | Cut -D '' -F3) CODE> a effectué la recherche de tous les blobs inaccessibles pour le texte
J'ai fait ce qui suit pour comprendre si un code que j'avais écrit a été perdu pour toujours, ou était peut-être caché dans un commit "inaccessible": ceci produira une sortie si Tout objet GIT em> contient