Für alle praktischen Zwecke ist das erste , worüber Sie sich Sorgen machen sollten, das Ändern Ihrer Passwörter! Aus Ihrer Frage geht nicht hervor, ob Ihr Git-Repository vollständig lokal ist oder ob Sie noch ein Remote-Repository an einem anderen Ort haben. Wenn es entfernt und nicht vor anderen geschützt ist, haben Sie ein Problem. Wenn jemand dieses Repository geklont hat, bevor Sie dies beheben, hat er eine Kopie Ihrer Kennwörter auf seinem lokalen Computer, und Sie können ihn auf keinen Fall zwingen, auf Ihre "feste" Version zu aktualisieren, wenn diese aus dem Verlauf verschwunden ist. Das einzig sichere, was Sie tun können, ist, Ihr Passwort überall dort, wo Sie es verwendet haben, in etwas anderes zu ändern.
Hier erfahren Sie, wie Sie das Problem beheben können. GitHub beantwortete genau diese Frage als FAQ :
Hinweis für Windows-Benutzer : Verwenden Sie in diesem Befehl doppelte Anführungszeichen (") anstelle von einfachen Anführungszeichen
git filter-branch --index-filter \
'git update-index --remove PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force
Update 2019:
Dies ist der aktuelle Code aus den FAQ:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
--prune-empty --tag-name-filter cat -- --all
git push --force --verbose --dry-run
git push --force
Denken Sie daran, dass Sie sich jetzt in einer Situation befinden, in der Sie den Verlauf neu schreiben, sobald Sie diesen Code in ein Remote-Repository wie GitHub übertragen haben und andere dieses Remote-Repository geklont haben. Wenn andere versuchen, Ihre letzten Änderungen abzurufen, erhalten sie eine Meldung, dass die Änderungen nicht übernommen werden können, da es sich nicht um einen schnellen Vorlauf handelt.
Um dies zu beheben, müssen sie entweder ihr vorhandenes Repository löschen und es erneut klonen oder die Anweisungen unter "WIEDERHERSTELLEN VON UPSTREAM REBASE" in der git-rebase-Manpage befolgen .
Tipp : Ausführengit rebase --interactive
Wenn Sie in Zukunft versehentlich einige Änderungen mit vertraulichen Informationen festschreiben, diese jedoch vor dem Verschieben in ein Remote-Repository bemerken , gibt es einige einfachere Korrekturen. Wenn Sie beim letzten Commit die vertraulichen Informationen hinzugefügt haben, können Sie die vertraulichen Informationen einfach entfernen und dann Folgendes ausführen:
git commit -a --amend
Dadurch wird das vorherige Commit mit allen neuen Änderungen geändert, die Sie vorgenommen haben, einschließlich des vollständigen Entfernens von Dateien, die mit a vorgenommen wurden git rm
. Wenn die Änderungen weiter zurück in der Historie liegen, aber immer noch nicht in ein Remote-Repository übertragen werden, können Sie eine interaktive Rebase durchführen:
git rebase -i origin/master
Dadurch wird ein Editor mit den Commits geöffnet, die Sie seit Ihrem letzten gemeinsamen Vorfahren mit dem Remote-Repository vorgenommen haben. Ändern Sie "pick" in "edit" in allen Zeilen, die ein Commit mit vertraulichen Informationen darstellen, und speichern und beenden Sie es. Git wird die Änderungen durchgehen und Sie an einem Ort zurücklassen, an dem Sie:
$EDITOR file-to-fix
git commit -a --amend
git rebase --continue
Für jede Änderung mit vertraulichen Informationen. Schließlich landen Sie wieder in Ihrer Filiale und können die neuen Änderungen sicher übertragen.