2009-06-28 10 views
1

J'ai remarqué il ya quelques instants que mon .gitconfig -file était public à mon repo. Il contient mes jetons secrets.Impossible de trouver .gitconfig dans le vieux Git commits

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

Je veux être sûr et rechercher le fichier dans mes précédents commits de sorte qu'il n'y a pas un tel fichier dans mon histoire.

Comment pouvez-vous rechercher le fichier dans les 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 donne à penser que je n'ai pas le dossier à mon engagement historique.

Y at-il un moyen de rechercher le fichier dans mon historique de validation de sorte que je n'ai pas besoin d'exécuter la suppression pour voir que je n'ai pas le fichier dans mon historique de validation?

+0

Merci pour vos réponses! –

Répondre

4

Réponse courte:

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

Notez le -f.

Réponse longue:

rm retourneraient un code de retour non nul lorsque le fichier n'existe pas. filter-branch pense que c'est une erreur et arrête la réécriture. En ajoutant -f, évitez ceci.

Note:

Il y a une autre commande:

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

qui est beaucoup plus rapide. Cette commande est documentée dans la section EXAMPLE de la page de manuel.

+0

@ J-16: Vos deux commandes me donnent le même message d'erreur que dans ma question. Cela me suggère que j'ai supprimé le fichier par accident par une commande déjà. --- Savez-vous comment vous pouvez rechercher .gitconfig dans l'histoire de Git de telle sorte que je peux être sûr qu'il n'y a pas un tel fichier? –

+0

juste 'git log .gitconfig' devrait montrer l'histoire. NOTE: .git/config (et tout ce qui est sous .git /) est * NOT * versionné, seulement .gitconfig. –

+0

@ J-16: Je reçois l'information que les commits 57d6 et 0d97 contiennent mes jetons secrets. (1) Comment puis-je voir ces commits? (2) Comment puis-je supprimer ces fichiers .gitconfig de ces commits? –

4

Pour supprimer un fichier de tous les historiques Git précédents, vous devrez réécrire tous les validations passées en utilisant quelque chose comme git filter-branch. Cependant, cela rend votre nouvel arbre non fusionnable avec tous les arbres du passé, alors faites-le avec soin.

+0

Je voudrais jouer avec les fichiers Git dans/tmp. --- J'ai joué sans succès avec eux après avoir copié .git dans/tmp. --- Cela me suggère que j'ai besoin de copier tous les fichiers dans/tmp avec .git. --- @ Comment feriez-vous une deuxième copie telle que vous pouvez tester la commande? –

+1

Vous pouvez cloner un dépôt avec "git clone". Tout ce que vous faites au référentiel cloné n'affecte pas le référentiel d'origine (à moins que vous n'appuyiez sur vos modifications, bien sûr). –

1

Réinitialise 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 "[email protected]";' HEAD 
Questions connexes