Es gibt eine Datei, die von Git verfolgt wurde, aber jetzt ist die Datei in der .gitignore
Liste.
Diese Datei taucht jedoch weiterhin in git status
nachdem es bearbeitet wurde. Wie kann man Git zwingen, es komplett zu vergessen?
Es gibt eine Datei, die von Git verfolgt wurde, aber jetzt ist die Datei in der .gitignore
Liste.
Diese Datei taucht jedoch weiterhin in git status
nachdem es bearbeitet wurde. Wie kann man Git zwingen, es komplett zu vergessen?
So habe ich mein Problem gelöst:
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push
In diesem Fall versuchen wir im Grunde, die Geschichte dieser bestimmten Datei auch in früheren Übertragungen neu zu schreiben.
Weitere Informationen finden Sie in der Manpage der Filterverzweigung aquí .
出典 Entfernen sensibler Daten aus einem Repository - mit filter-branch
出典 Git: Wie man eine große Datei entfernt, die falsch übergeben wurde
Im Falle von bereits gebundenen DS_Store
:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Ignorieren Sie sie:
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
Machen Sie endlich einen Commit!
Vor allem für die IDE-basierten Dateien verwende ich dies:
Die Datei slnx.sqlite habe ich zum Beispiel wie folgt komplett entfernt:
git rm {PATH_OF_THE_FILE}/slnx.sqlite -f
git commit -m "remove slnx.sqlite"
Denken Sie daran, dass einige dieser Dateien lokale Benutzereinstellungen und Präferenzen für Projekte speichern (z. B. welche Dateien Sie geöffnet hatten). Jedes Mal, wenn Sie in Ihrer IDE navigieren oder Änderungen vornehmen, wird diese Datei geändert und daher als nicht übertragene Änderungen angezeigt.
Wenn jemand unter Windows Schwierigkeiten hat und den gesamten Ordner ignorieren möchte, gehen Sie im Dateiexplorer zu dem gewünschten "Ordner", klicken Sie mit der rechten Maustaste und wählen Sie "Git Bash Here" (Git für Windows sollte installiert sein).
Führen Sie diesen Befehl aus:
git ls-files -z | xargs -0 git update-index --assume-unchanged
In meinem Fall hatte ich mehrere .lock-Dateien in verschiedenen Verzeichnissen, die ich entfernen musste. Ich führte das folgende Programm aus und es funktionierte, ohne dass ich in jedes Verzeichnis gehen musste, um sie zu entfernen:
git rm -r --cached **/*.lock
Dabei ging ich in jeden Ordner unter dem "Stamm" meines Standortes und schloss alle Dateien aus, die dem Muster entsprachen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.