Question

J'ai remarqué il y a un instant que mon fichier .gitconfig était public sur mon référentiel. Il contient mes jetons secrets.

Je git-add -u le fichier et validé. Je ne suis pas sûr que cette commande supprime aussi le fichier des commits précédents.

Je veux être sûr et effectuer une recherche dans le fichier de mes commits précédents, de sorte qu'il n'y en ait aucun dans mon historique.

Comment effectuer une recherche dans le fichier lors des validations précédentes?

je cours

git filter-branch --tree-filter 'rm .gitconfig' master     # Thanks to Greg!

je reçois

Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig

Le message d'erreur me suggère que je n'ai pas le fichier dans mon historique de validation.

Existe-t-il un moyen de rechercher le fichier dans mon historique de validation de sorte que je n'ai pas besoin de supprimer le fichier pour vérifier que je n'ai pas le fichier dans mon historique de validation?

Était-ce utile?

La solution

Réponse courte:

git filter-branch --tree-filter 'rm -f .gitconfig' master   

Notez le -f.

Réponse longue:

rm renverrait un code retour non nul lorsque le fichier n'existe pas. filter-branch pense que c'est une erreur et arrêtez la réécriture. Ajouter <=> éviter cela.

Remarque:

Il existe une commande alternative:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master

qui est beaucoup plus rapide. Cette commande est décrite dans la section EXEMPLE de la page de manuel.

Autres conseils

Pour supprimer un fichier de tout l'historique Git, vous devez réécrire tous les validations antérieures à l'aide de quelque chose comme git filter-branch . Cependant, cela rend votre nouvel arbre impossible à fusionner avec tous les arbres passés, faites-le avec précaution.

Réinitialisez tous les ewvisions du référentiel aux valeurs par défaut globales (.gitconfig).

git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top