2009-12-07 15 views
7

Vor 2 Wochen habe ich Config meiner Anwendung, die mein Passwort hatte, commited, es ist nicht sehr nützlich. Wie kann ich die Datei aus dem Commit-Verlauf entfernen und sicherstellen, dass sie nicht erneut übertragen wird?Git - Entfernen und Ausschließen der Konfigurationsdatei

Ich möchte die Datei aus allen Commits Baum entfernen, weil sie meine Passwörter enthält.

+0

Was Sie genau zu tun versuchen? Möchten Sie ein einzelnes Commit wiederherstellen, das vor 2 Wochen stattfand? – BastiBen

Antwort

18

Sie können

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

Den anderen Extrem Ansatz (gefährlich vor allem, wenn Sie bereits Ihre Repo zu einem entfernten einem geschoben) wären ganz die Datei aus der Geschichte des Repo zu entfernen :

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

(mit Vorsicht zu verwenden und mit einem Backup zuerst)

Die Frage How do I remove sensitive files from git’s history hat mehr zu diesem heiklen Thema.

Die Probleme mit diesem Verfahren gibt es zwei Gründe:

  1. Wenn Ihr Repo bereits geklont hat, können Sie nie die vertraulichen Informationen garantieren wird wirklich „weg“ von jedem anderen Repo.
  2. Wenn andere versuchen, Ihre letzten Änderungen nachher abzulegen, erhalten sie eine Meldung, dass die Änderungen nicht angewendet werden können, da es sich nicht um einen Schnellvorlauf handelt.
    Um dies zu beheben, müssen sie entweder ihr vorhandenes Repository löschen und es erneut klonen, oder folgen Sie den Anweisungen unter "RECOVERING FROM UPSTREAM REBASE" in der git-rebase manpage.
    In beiden Fällen Ihre vertraulichen Informationen nicht „ruhig“ ersetzt oder gelöscht werden ...
+0

. Gold, danke! . – IvRRimUm

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' 
Verwandte Themen