2009-12-07 2 views
7

Il ya 2 semaines, j'ai config config de mon application qui avait mon mot de passe, ce n'est pas très utile. Comment puis-je supprimer le fichier de l'historique de validation et m'assurer qu'il ne soit pas réactivé?Git - supprimer et exclure le fichier de configuration

Je souhaite supprimer le fichier de tous les arbres de validation car il contient mes mots de passe.

+0

Qu'est-ce que vous essayez de faire exactement? Voulez-vous annuler un seul commit qui a eu lieu il y a 2 semaines? – BastiBen

Répondre

18

Vous pouvez

git rm myConfigFile 
echo myConfigFile > .gitignore 
git add .gitignore 
git commit -m "from now on, no more myConfigFile" 

L'autre approche extrême (dangereux, surtout si vous avez déjà poussé votre repo à une distance) serait de supprimer entièrement ce fichier de l'histoire de ladite pension :

git filter-branch --index-filter 'git update-index --remove myConfigFile' HEAD 

(à utiliser avec précaution, et avec une première sauvegarde)

La question How do I remove sensitive files from git’s history a plus sur ce sujet sensible.

Les problèmes avec ce processus sont de deux ordres:

  1. Si votre pension a déjà cloné est, vous ne pouvez jamais garantir les informations confidentielles seront vraiment « gone » de toutes les autres prises en pension.
  2. Lorsque d'autres utilisateurs essaient de retirer vos dernières modifications, ils reçoivent un message indiquant que les modifications ne peuvent pas être appliquées car il ne s'agit pas d'une avance rapide.
    Pour résoudre ce problème, ils devront soit supprimer leur référentiel existant et le recloner, soit suivre les instructions sous "RECOVERING FROM UPSTREAM REBASE" dans le git-rebase manpage.
    Dans les deux cas, vos informations confidentielles ne seront pas « tranquillement » remplacer ou ... effacé
+0

. Or, merci! . – IvRRimUm

0

Ajouter le nom du fichier dans un fichier .gitignore.

Link

1
cp my-config config.tmp 
git rm my-config 
git commit -m 'removed config' 
mv config.tmp my-config 
echo my-config >> .gitignore 
git add .gitignore 
git commit -m 'ignore config'