868 Stimmen

.gitignore alle .DS_Store-Dateien in jedem Ordner und Unterordner

Ich habe die .DS_Store-Datei zur .gitignore-Datei hinzugefügt, aber anscheinend ignoriert sie nur .DS_Store im Stammverzeichnis und nicht in jedem Ordner und Unterordner.

Wie kann ich das beheben?

1010voto

Edward Newell Punkte 14866

Ich denke, das Problem, das Sie haben, ist, dass Sie in einem früheren Commit versehentlich .DS_Store-Dateien zum Repository hinzugefügt haben. Natürlich wird eine Datei, die in Ihrem Repository verfolgt wird, weiterhin verfolgt, auch wenn sie mit einem Eintrag in einer entsprechenden .gitignore-Datei übereinstimmt.

Sie müssen die .DS_Store-Dateien manuell aus Ihrem Repository entfernen. Sie können verwenden

git rm --cached .DS_Store

Nach dem Entfernen sollte git es ignorieren. Sie sollten nur die folgende Zeile in Ihrer root .gitignore-Datei benötigen: .DS_Store. Vergessen Sie den Punkt nicht!

git rm --cached .DS_Store

entfernt nur .DS_Store aus dem aktuellen Verzeichnis. Sie können verwenden

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

um alle .DS_Stores aus dem Repository zu entfernen.

Filzstift: Da Sie wahrscheinlich nie .DS_Store-Dateien einschließen möchten, erstellen Sie eine globale Regel. Erstellen Sie zunächst eine globale .gitignore-Datei irgendwo, z. B.

echo .DS_Store >> ~/.gitignore_global

Sagen Sie nun git, dass es für alle Repositories verwendet werden soll:

git config --global core.excludesfile ~/.gitignore_global

Diese Seite hat mir geholfen, Ihre Frage zu beantworten.

463voto

ronald8192 Punkte 5033

Fügen Sie `/.DS_Storein.gitignore` für das Unterverzeichnis hinzu**


Wenn .DS_Store bereits übernommen wurde:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

Um sie im gesamten Repository zu ignorieren: (manchmal heißt es ._.DS_Store)

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

259voto

drjorgepolanco Punkte 5859

Wenn .DS_Store nie zu Ihrem Git-Repository hinzugefügt wurde, fügen Sie es einfach Ihrer .gitignore-Datei hinzu.

Wenn Sie keine haben, erstellen Sie eine Datei namens

.gitignore

Im Stammverzeichnis Ihrer App und schreiben Sie einfach

**/.DS_Store

Darin. Dies wird verhindern, dass die .DS_Store-Datei in Ihr Git gelangt.

Aber wenn sie bereits vorhanden ist, geben Sie in Ihrem Terminal ein:

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

dann committen und pushen Sie die Änderungen, um die .DS_Store von Ihrem Remote-Repository zu entfernen:

git commit -m "Entferne .DS_Store überall"

git push origin master

Und fügen Sie nun .DS_Store zu Ihrer .gitignore-Datei hinzu und committen und pushen Sie erneut mit den 2 letzten Code-Schnipseln (git commit..., git push...)

107voto

Yarin Punkte 157128

Ihre .gitignore Datei sollte wie folgt aussehen:

# Ignorieren von Mac DS_Store-Dateien
.DS_Store

Solange Sie keinen Schrägstrich einfügen, wird es mit dem Dateinamen in allen Verzeichnissen abgeglichen. (von hier)

92voto

stevec Punkte 25346

Platzieren Sie dies einfach in einer neuen Zeile in .gitignore

**/.DS_Store

Von Git-Dokumentation

  • Ein führendes "**" gefolgt von einem Schrägstrich bedeutet Treffer in allen Verzeichnissen. Zum Beispiel passt "**/foo" auf Datei oder Verzeichnis "foo" überall, genauso wie das Muster "foo". "**/foo/bar" passt auf Datei oder Verzeichnis "bar" überall, das direkt unter dem Verzeichnis "foo" liegt.

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