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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top