Wie kann ich diese lästigen Mac OS X .DS_Store
Dateien aus einem Git-Repository?
Antworten
Zu viele Anzeigen?Entfernen Sie vorhandene Dateien aus dem Repository:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Fügen Sie diese Zeile hinzu:
.DS_Store
zur Datei .gitignore
die sich auf der obersten Ebene Ihres Repositorys befindet (oder erstellen Sie die Datei, wenn sie dort noch nicht vorhanden ist). Sie können dies einfach mit diesem Befehl im obersten Verzeichnis tun:
echo .DS_Store >> .gitignore
Übertragen Sie dann die Datei an das Projektarchiv:
git add .gitignore
git commit -m '.DS_Store banished!'
Kombination der Antworten von benzado und webmat, Aktualisierung mit git rm
, keine Fehlschläge bei gefundenen Dateien, die nicht im Projektarchiv sind, und die generische Einfügemöglichkeit für jeden Benutzer:
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
Die beste Lösung für dieses Problem besteht darin, diese Dateien global in allen Git-Repos auf Ihrem System zu ignorieren. Dies kann durch die Erstellung einer globalen Gitignore-Datei wie folgt geschehen:
vi ~/.gitignore_global
Hinzufügen von Regeln zum Ignorieren von Dateien wie:
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Fügen Sie nun diese Datei zu Ihrer globalen Git-Konfiguration hinzu:
git config --global core.excludesfile ~/.gitignore_global
Edit :
Icons wurden entfernt, da sie möglicherweise als Anwendungs-Assets übertragen werden müssen.
In manchen Situationen kann es auch sinnvoll sein, einige Dateien global zu ignorieren. Für mich ist .DS_Store eine dieser Dateien. So geht's:
git config --global core.excludesfile /Users/mat/.gitignore
(Oder eine beliebige Datei Ihrer Wahl)
Dann bearbeiten Sie die Datei genau wie die .gitignore-Datei eines Repos. Beachten Sie, dass Sie meiner Meinung nach einen absoluten Pfad verwenden müssen.
Manchmal sind .DS_Store-Dateien im entfernten Repository vorhanden, aber in Ihren lokalen Projektordnern nicht sichtbar. Um dies zu beheben, müssen wir alle zwischengespeicherten Dateien entfernen und erneut hinzufügen.
Schritt 1: Fügen Sie dies der Datei .gitignore hinzu.
# Ignore Mac DS_Store files
.DS_Store
**/.DS_Store
Schritt 2: Entfernen Sie die zwischengespeicherten Dateien und fügen Sie sie mit diesen Befehlen erneut hinzu.
git rm -r --cached .
git add .
git commit -am "Removed git ignored files"
git push -f origin master
- See previous answers
- Weitere Antworten anzeigen