Question Rechercher toute l'histoire de Git pour une chaîne? [dupliquer]


Cette question a déjà une réponse ici:

J'ai une base de code que je veux pousser sur GitHub en open source. Dans cet arbre source git-contrôlé, j'ai certains fichiers de configuration qui contiennent des mots de passe. Je me suis assuré de ne pas suivre ce fichier et je l'ai également ajouté à la .gitignore fichier. Cependant, je veux être absolument certain qu'aucune information sensible ne sera poussée, peut-être si quelque chose se glisse entre les commits ou quelque chose. Je doute que j'étais assez insouciant pour le faire, mais je veux être positif.

Y at-il un moyen de "grep" tout git? Je sais que ça a l'air bizarre, mais par "tout" je suppose que je veux dire chaque version de fichier qui a été. Je suppose que s'il y a une commande qui déverse le fichier diff pour chaque commit, cela pourrait fonctionner?


544
2017-12-17 06:49


origine


Réponses:


Git peut rechercher des diffs avec l'option -S (ça s'appelle pickaxe dans les docs)

git log -Spassword

Cela va trouver n'importe quel commit qui a ajouté ou enlevé la chaîne password. Voici quelques options:

  • -p: montrera les diffs. Si vous fournissez un fichier (-p file), il va générer un patch pour vous.
  • -G: recherche les différences dont la ligne ajoutée ou supprimée correspond à l'expression rationnelle donnée, par opposition à -S, qui "recherche les différences qui introduisent ou suppriment une instance de chaîne".
  • --all: recherche dans toutes les branches et étiquettes; alternativement, utiliser --branches[=<pattern>] ou --tags[=<pattern>] 

850
2017-12-17 15:57



git rev-list --all | (
    while read revision; do
        git grep -F 'password' $revision
    done
)

71
2017-12-17 06:58



Essayez les commandes suivantes pour rechercher la chaîne dans tous les fichiers suivis précédents:

git log --patch  | less +/searching_string

ou

git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string'

qui doit être exécuté à partir du répertoire parent où vous souhaitez effectuer la recherche.


20
2018-06-03 15:07