Wie kann ich .DS_Store Dateien von einer Git-Repository entfernen?
Frage
Wie kann ich die lästigen Mac OS X .DS_Store
Dateien aus einer Git-Repository entfernen?
Lösung
Entfernen vorhandene Dateien aus dem Repository:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Fügen Sie die Zeile
.DS_Store
in die Datei .gitignore
, die auf der obersten Ebene Ihres Repositorys gefunden werden können (oder erstellt, wenn sie nicht da sind schon). Sie können im obersten Verzeichnis mit diesem Befehl dies ganz einfach
echo .DS_Store >> .gitignore
Dann
git add .gitignore
git commit -m '.DS_Store banished!'
Andere Tipps
benzado und webmat die Antworten Kombination, die Aktualisierung mit git rm
, wurde nicht gefunden Fehler auf Dateien, die nicht in Repo sind, und macht es pasten Lage allgemein 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, um dieses Problem zu lösen ist, um global diese Dateien von allen git repos auf Ihrem System ignorieren. Dies kann durch die Schaffung einer globalen gitignore Datei wie getan werden:
vi ~/.gitignore_global
Hinzufügen von Regeln für das 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
Nun fügen Sie diese Datei zum globalen git config:
git config --global core.excludesfile ~/.gitignore_global
Edit:
Icons entfernt, da sie benötigen könnten als Anwendung Vermögen begangen werden.
In einigen Situationen können Sie auch global einige Dateien ignoriert werden sollen. Für mich ist .DS_Store einer von ihnen. Hier ist, wie:
git config --global core.excludesfile /Users/mat/.gitignore
(oder eine beliebige Datei Ihrer Wahl)
Dann bearbeiten Sie die Datei wie ein .gitignore Repo. Beachten Sie, dass ich glaube, Sie haben einen absoluten Pfad verwenden.
Wenn Sie nicht auf die Dateien zu entfernen, weil sie Änderungen haben statt Verwendung:
git rm --cached -f *.DS_Store
Ich hatte git-rm ändern rm in der obigen git, um es an die Arbeit:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
Öffnen Sie das Terminal und geben Sie "cd
-
Entfernen vorhandene Dateien:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
-
nano .gitignore
-
Fügen Sie diese
.DS_Store
-
Geben Sie "Strg + x"
-
Geben Sie "y"
-
Geben Sie Datei
speichern
-
git add .gitignore
-
git commit -m '.DS_Store removed.'
Top gestimmt Antwort ist genial, aber die Rookies wie ich aushelfen, hier ist, wie die .gitignore-Datei zu erstellen, bearbeiten, speichern, entfernen Sie die Dateien, die Sie vielleicht schon zu git hinzugefügt haben, dann die Datei schieben bis zu Github.
Erstellen Sie die .gitignore Datei
eine .gitignore Datei zu erstellen, können Sie einfach die Datei touch
, die mit dem angegebenen Namen eine leere Datei erstellt. Wir wollen die Datei erstellen namens .gitignore so können wir den Befehl:
touch .gitignore
Ignorieren Sie die Dateien
Nun müssen Sie die Zeile, die git die DS Store-Dateien auf Ihre .gitignore zu ignorieren erzählt. Sie können den Nano-Editor, dies zu tun verwenden.
nano .gitignore
Nano ist schön, weil es Anweisungen darüber enthält, wie aus ihm heraus zu bekommen. ( Strg - O speichern, Strg - X zum Beenden)
Kopieren und einige der Ideen aus dieser Github Kern einfügen, die einige gemeinsame Dateien auflistet, zu ignorieren . Die wichtigsten, diese Frage zu beantworten, wäre:
# OS generated files #
######################
.DS_Store
.DS_Store?
Die # sind Kommentare und helfen Ihnen, Ihre Datei zu organisieren, wie es wächst.
Das Github Artikel auch einige allgemeine Ideen und Richtlinien hat.
Entfernen Sie die Dateien bereits hinzugefügt git
Schließlich müssen Sie wirklich jene DS Store-Dateien aus dem Verzeichnis entfernen.
Mit diesem großen Befehl von oben Antwort gestimmt. Dies wird alle Ordner in Ihrem Verzeichnis durchlaufen, und entfernen Sie diese Dateien von git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
drücken .gitignore bis Github
Der letzte Schritt, müssen Sie tatsächlich Ihre .gitignore Datei begehen.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
löschen git-rm
verwenden und dann .DS_Store in dem .gitignore
sie zu stoppen wieder aufgenommen zu werden. Sie können auch Blueharvest verwenden stoppen sie alle zusammen erstellt immer
Mit diesem Befehl können die vorhandenen Dateien entfernen:
find . -name '*.DS_Store' -type f -delete
Dann fügen Sie .DS_Store
.gitignore
In der folgenden am besten für mich gearbeitet. Behandeln unerreichte Dateien und Dateien mit lokalen Änderungen. Als Referenz wurde dies auf einem Mac 10.7 System läuft git 1.7.4.4.
Suchen und entfernen Sie:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
Ich ignoriere auch global .DS_Store über alle Repositories durch eine globale core.excludesfile Einstellung.
Erstellen Sie zunächst die Datei (falls nicht bereits vorhanden):
touch ~/.gitignore
Dann fügen Sie die folgende Zeile und speichern:
.DS_Store
Jetzt konfigurieren git die Datei global zu beachten:
git config --global core.excludesfile ~/.gitignore
Falls Sie DS_Store Dateien in jedem Ordner und Unterordner zu entfernen:
Im Fall eines bereits begangen DS_Store:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Ignoriere sie durch:
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
Ich fand, dass die folgende Zeile von Snipplr am besten auf alle .DS_Store
Wischen, darunter eine, die lokale Änderungen hat.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
Option, hält die lokale .DS_Store
da es würde sowieso reproduziert werden.
Und genau wie alle oben erwähnt, fügen .DS_Store
Datei im Stammverzeichnis Ihres Projekts .gitignore. Dann wird es nicht mehr in deinen Augen sein (von repos).
Ich bin ein bisschen spät zur Party, aber ich habe eine gute Antwort. Zum Entfernen der .DS_Store Dateien verwenden Sie die folgenden Befehle von einem Terminal-Fenster, aber sehr vorsichtig sein, das Löschen von Dateien mit ‚finden‘. einen bestimmten Namen und der -name Option ist eine der sichereren Möglichkeiten, es zu verwenden:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Sie können die „-delete“ weglassen, wenn Sie einfach wollen, dass sie zur Liste vor und nach. Das wird Ihnen versichern, dass sie weg sind.
Im Hinblick auf die ~ / .gitignore_global Beratung: hier vorsichtig sein. Sie wollen, dass die schöne Datei in .gitignore Ort innerhalb der Top-Level eines jeden Arbeitsbereich und verpflichten sie, so dass jeder, der Ihre Repo-Klone den Vorteil seiner Verwendung zu gewinnen.
Dies funktioniert:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Es löscht alle Dateien, deren Namen mit .DS_Store
, einschließlich ._.DS_Store
.
Aus irgendeinem Grund keine der oben genannten auf meinem Mac funktioniert.
Meine Lösung ist vom Terminal laufen:
rm .DS_Store
Dann folgenden Befehl:
git pull origin master
Wenn Ihr Repository initialisieren, überspringen Sie die git-Befehl, enthält
-u
und es sollte kein Problem sein.
Das funktioniert für mich, Combo von zwei Antworten von oben:
- $ git rm --cached -f * .DS_Store
- $ git commit -m „filter-branch --index-Filter‚git rm --cached --ignore-unmatch .DS_Store "
- $ git push origin master --force
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
Es gibt ein paar Lösungen, dieses Problem zu lösen. Um zu vermeiden, .DS_Store Dateien zu erstellen, nicht über die OS X-Finder zu verwenden, um Ordner anzuzeigen. Eine alternative Möglichkeit, Ordner anzuzeigen ist UNIX-Befehlszeile zu verwenden. Um die .DS_Store zu entfernen Dateien ein Drittanbieter-Produkt DS_Store Terminator genannt verwendet werden kann. So löschen Sie kann die .DS_Store Dateien aus dem gesamten System ein UNIX-Shell-Befehl verwendet werden. Starten Sie Terminal aus Anwendungen: Dienstprogramme An der UNIX Shell-Eingabeaufforderung geben Sie den folgenden UNIX-Befehl: sudo find / -name ".DS_Store" -depth exec rm {} \; Wenn Sie nach einem Passwort gefragt, die Mac OS X Administrator-Passwort eingeben.
Dieser Befehl ist zu finden und alle Vorkommen von .DS_Store von der Wurzel (/) des Dateisystems durch die gesamte Maschine starten zu entfernen. So konfigurieren Sie diesen Befehl auszuführen als eine geplante Aufgabe die folgenden Schritte aus: Starten Sie Terminal aus Anwendungen: Dienstprogramme An der UNIX-Shell-Eingabeaufforderung geben Sie den folgenden UNIX-Befehl:
sudo crontab -e Wenn Sie nach einem Passwort gefragt Administratorkennwort eingeben das Mac OS X. Einmal in der Presse vi Editor der Brief, den ich auf der Tastatur einmal und geben Sie Folgendes:
15 1 * * * root find / -name ".DS_Store" -depth exec rm {} \;
Das nennt man crontab-Eintrag, der das folgende Format:
Minute Stunde DayOfMonth Monat DayOfWeek Benutzerbefehle.
Der crontab-Eintrag bedeutet, dass der Befehl durch das System von dem Konto root genannt, um 1:15 Uhr jeden Tag automatisch ausgeführt wird.
Der Befehl startet von finden den ganzen Weg zu. Wenn das System diesen Befehl nicht ausgeführt wird nicht ausgeführt werden soll.
Um den Eintrag zu drücken Sie die Esc-Taste einmal zu speichern, dann gleichzeitig Shift + z + z drücken.
Hinweis: Die Informationen in Schritt 4 sind für den vi-Editor nur
.Fügen Sie diese zu Ihrer Datei .gitignore
#Ignore folder mac
.DS_Store
diese speichern und machen commit
git add -A
git commit -m "ignore .DS_Store"
und jetzt Sie ignorieren diese für alle Ihre Commits
Remove ignoriert Dateien:
(. DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Keine Notwendigkeit zu entfernen .DS_STORE
lokal
Fügen Sie einfach es Datei .gitignore
Die .gitignore Datei ist nur eine Textdatei, die Git, die Dateien oder Ordner zu ignorieren, in einem Projekt erzählt.
Befehle
-
nano .gitignore
- Schreiben
.DS_Store
Klicken Sie dann aufCTRL+X > y > Hit Return
-
git status
, um einen letzten Blick auf die Änderungen haben -
git add .gitignore
-
git commit -m 'YOUR COMMIT MESSAGE'
-
git push origin master