Unfähig .gitconfig zu finden in alten Git verpflichtet
-
20-08-2019 - |
Frage
bemerkte ich einen Moment vor, dass mein .gitconfig -Dateien an meinem Repo Öffentlichkeit. Es enthält meine geheimen Token.
I git-add -u
die Datei und engagiert. Ich bin nicht sicher, ob dieser Befehl löscht die Datei aus dem vorherigen zu verpflichtet.
ich sicher sein will, und die Datei in meinem vorherigen Commits suchen, so dass es keine solche Datei in meiner Geschichte ist.
Wie können Sie die Datei in früheren Commits suchen?
Ich betreiben
git filter-branch --tree-filter 'rm .gitconfig' master # Thanks to Greg!
ich
Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig
Die Fehlermeldung deutet darauf hin, dass ich mich nicht auf die Datei an meinem begehen Geschichte haben.
Gibt es eine Möglichkeit, die Datei in meiner begehen Geschichte , so dass ich nicht brauchen zu suchen, um die Entfernung zu laufen, um zu sehen, dass ich die Datei nicht in meiner begehen Geschichte?
Lösung
Kurze Antwort:
git filter-branch --tree-filter 'rm -f .gitconfig' master
Beachten Sie die -f
.
Lange Antwort:
rm
zurückkehren würde einen Nicht-Null-Return-Code, wenn die Datei nicht existiert. filter-branch
denken dies ein Fehler ist und die Rewrite zu stoppen. Hinzufügen -f
dies vermeiden.
Hinweis:
Es gibt eine Alternative Befehl:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master
Das ist viel schneller. Dieser Befehl wird in dem Beispiel Abschnitt der Manpage dokumentiert.
Andere Tipps
Um eine Datei aus allen bisherigen Git Geschichte zu entfernen, müssen Sie alle Vergangenheit umschreiben verpflichtet wie etwas mit git filter-branch
. Allerdings tun dies macht Ihren neuen Baum nicht zusammenführbaren mit allen vergangenen Bäumen, so tun dies mit Vorsicht.
Zurücksetzen aller ewvisions in Repository globale Standardeinstellungen (.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