Ich habe .DS_Store zur .gitignore-Datei hinzugefügt, aber es scheint, dass .DS_Store nur im Stammverzeichnis ignoriert wird, nicht in jedem Ordner und Unterordner.
Wie behebe ich das?
Ich habe .DS_Store zur .gitignore-Datei hinzugefügt, aber es scheint, dass .DS_Store nur im Stammverzeichnis ignoriert wird, nicht in jedem Ordner und Unterordner.
Wie behebe ich das?
Antworten:
Ich denke, das Problem, das Sie haben, ist, dass Sie in einem früheren Commit versehentlich .DS_Store-Dateien zum Repository hinzugefügt haben. Sobald eine Datei in Ihrem Repository verfolgt wurde, wird sie natürlich auch dann weiter verfolgt, wenn sie mit einem Eintrag in einer entsprechenden Gitignore-Datei übereinstimmt.
Sie müssen die .DS_Store-Dateien, die Ihrem Repository hinzugefügt wurden, manuell entfernen. Sie können verwenden git rm --cached .DS_Store
. Einmal entfernt, sollte Git es ignorieren. Sie sollten nur die folgende Zeile in Ihrer Root-Gitignore-Datei benötigen : .DS_Store
. Vergiss die Zeit nicht!
git rm --cached .DS_Store
wird nur .DS_Store
aus dem aktuellen Verzeichnis entfernt. Sie können find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
damit alle .DS_Stores
aus dem Repository entfernen .
Filztipp: Da Sie wahrscheinlich nie .DS_Store-Dateien einschließen möchten, erstellen Sie eine globale Regel. Erstellen Sie zunächst irgendwo eine globale .gitignore-Datei, z echo .DS_Store >> ~/.gitignore_global
. Sagen Sie git nun, dass es für alle Repositorys verwendet werden soll : git config --global core.excludesfile ~/.gitignore_global
.
Diese Seite hat mir geholfen, Ihre Frage zu beantworten: https://help.github.com/articles/ignoring-files
Fügen Sie **/.DS_Store
in .gitignore
für das Unterverzeichnis
Wenn .DS_Store
bereits festgelegt:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
So ignorieren Sie sie in allen Repositorys: (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
git rm --cached your_file
zuerst verwenden
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, von: stackoverflow.com/questions/18393498/…
-f
erforderlich ist, wenn Sie offene Dateien in den relavent Ordnern haben:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Wenn .DS_Store Ihrem Git-Repository nie hinzugefügt wurde, fügen Sie es einfach Ihrer .gitignore-Datei hinzu.
Wenn Sie keine haben, erstellen Sie eine Datei mit dem Namen
.gitignore
Im Stammverzeichnis Ihrer App und einfach schreiben
**/.DS_Store
Drin. Dadurch kann sich die .DS_Store-Datei niemals in Ihr Git einschleichen.
Aber wenn es schon da ist, schreiben Sie in Ihr Terminal:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Übernehmen Sie dann die Änderungen und übertragen Sie sie, um den .DS_Store von Ihrem Remote-Repo zu entfernen:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
Fügen Sie nun .DS_Store zu Ihrer .gitignore-Datei hinzu und schreiben Sie die beiden letzten Codeteile erneut fest und pushen Sie sie (git commit ..., git push ...).
*
oder **
hängt davon ab, was Sie erreichen möchten. Auf diese Weise können Sie der Shell mitteilen, wie sie in Verzeichnissen navigieren soll. Diese Stackoverflow-Antwort erklärt es vollständig stackoverflow.com/a/28199633/4092170
Ihre .gitignore- Datei sollte folgendermaßen aussehen:
# Ignore Mac DS_Store files
.DS_Store
Solange Sie keinen Schrägstrich einfügen, wird dieser in allen Verzeichnissen mit dem Dateinamen abgeglichen. (von hier )
git rm --cached path/to/file/here
Schritt 1, löschen Sie alle *.DS_store
Dateien. Man kann rennen
git rm -f *.DS_Store
Aber sei rm -f
dir bewusst, dass das ein bisschen gefährlich sein kann, wenn du einen Tippfehler hast! Schritt zwei: hinzufügen
*.DS_Store
.DS_Store
zu .gitignore. Das hat bei mir funktioniert!
Sie können das --cached
Flag auch zur Antwort von auco hinzufügen , um lokale .DS_store-Dateien zu verwalten, wie Edward Newell in seiner ursprünglichen Antwort erwähnt hat. Der geänderte Befehl sieht folgendermaßen aus: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers und danke!
Schritt: 1) Entfernen Sie die vorhandenen Dateien mit diesem Befehl
finden . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Schritt: 2) Fügen Sie .DS_Store in Ihre .gitignore-Datei ein
Schritt: 3) Übernehmen Sie Ihre Änderungen in .gitignore git. Fügen Sie .gitignore git commit -m "entfernt .DS_Store" hinzu.
$ git rm ./*.DS_Store
- Entfernen Sie alle .DS_Store aus Git$ echo \.DS_Store >> .gitignore
- Ignoriere .DS_Store in ZukunftCommit & Push