8100 Stimmen

Wie kann ich Git dazu bringen, eine Datei zu "vergessen", die verfolgt wurde, aber jetzt in .gitignore ist?

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?

5voto

Khushhal Punkte 470

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

3voto

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!

3voto

curiousBoy Punkte 5332

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.

3voto

RajVimalC Punkte 349

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

3voto

DC.Skells Punkte 710

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.com

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.

Powered by:

X