in die Datei .gitignore, die sich auf der obersten Ebene Ihres Repositorys befindet (oder erstellt wird, wenn sie noch nicht vorhanden ist). Sie können dies einfach mit diesem Befehl im obersten Verzeichnis tun
Es ist wirklich trivial, aber using -execwird git-rmfür jede .DS_Store-Datei einmal gestartet, während xargsalle Pfade in einer Befehlszeile zusammengefasst werden. Meistens bevorzuge ich es, xargsweil ich mir keine Sorgen machen muss, vielen Sonderzeichen zu entkommen.
Benzado
8
Dies sollte .git / info / exclude verwenden, nicht .gitignore. Eine Erklärung des Unterschieds zwischen beiden finden Sie unter stackoverflow.com/questions/1753070/… .
Andrew Grimm
106
@ Andrew: Ich stimme nicht zu. Es wäre niemals nützlich, eine .DS_Store-Datei einzuchecken, daher ist dies als repository-weite Einstellung für alle Benutzer sinnvoller, als dass sich jeder Mac-Benutzer daran erinnern muss, sie auf seinem eigenen Computer festzulegen.
Benzado
51
Wirkt sich das Hinzufügen .DS_Storezu .gitignorerekursiv Arbeit? Das heißt, wird es auch ignorieren some/level/of/folders/.DS_Store?
Charlie Schliesser
70
@CharlieS Ja, wenn das Muster keinen Schrägstrich enthält, wird es in allen Verzeichnissen mit dem Dateinamen abgeglichen.
Benzado
239
Kombinieren Sie die Antworten von Benzado und Webmat, aktualisieren Sie sie mit git rmDateien, die nicht im Repo enthalten sind, und schlagen Sie sie nicht fehl , und machen Sie sie für jeden Benutzer generisch einfügbar :
# 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
Ich habe festgestellt, dass es bei der Verwendung eines Git-Repos in meinem Home-Verzeichnis (AKA ein "Dotfiles" -Repo) ~/.gitignoreschmerzhaft ist, eine globale Ausschlussdatei zu haben. Es gibt Dateien, die ich aus meinem Home-Verzeichnis ausschließen möchte und die ich global nicht ignorieren möchte. Ich benutze ~/.gitexcludesstattdessen über die gleiche Anweisung:core.excludesfile
AL das X
156
Die beste Lösung, um dieses Problem zu beheben, besteht darin, diese Dateien von allen Git-Repos auf Ihrem System global zu ignorieren. Dies kann durch Erstellen einer globalen Gitignore-Datei wie folgt erfolgen:
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 diese Datei nun Ihrer globalen Git-Konfiguration hinzu:
Sie können die oben genannten Regeln auch im Gitignore Ihres Repositorys hinzufügen. Dies würde diese Dateien auf Repo-Ebene fernhalten, wenn mehrere Mitwirkende an Ihrem Projekt beteiligt sind. In solchen Fällen sollte sich .gitignore jedoch mit den spezifischen Dateien usw. jedes Betriebssystems befassen, wenn verschiedene Entwickler unterschiedliche Betriebssysteme verwenden. Wie Regeln für Linux, OSX usw.
Nerv
Ich würde empfehlen, dass jeder Entwickler seine os-spezifischen Dateien in seinem eigenen .global_ignore behandelt, so dass das Projekt .gitignore projektspezifisch ist.
McFedr
muss ausgeführt werden: git add .gitignore_global, damit ein anderer Programmierer diese Datei auch in seiner lokalen Umgebung hat?
Stackdave
58
In einigen Situationen möchten Sie möglicherweise auch einige Dateien global ignorieren. Für mich ist .DS_Store einer von ihnen. Hier ist wie:
nano .gitignoreerstellt die Datei, wenn nicht vorhanden, sollte dieser Befehl aus dem Projektstammordner ausgeführt werden
Saif
17
Die Antwort mit der höchsten Bewertung ist fantastisch, aber um Neulingen wie mir zu helfen, erfahren Sie hier, wie Sie die .gitignore-Datei erstellen, bearbeiten, speichern, die Dateien entfernen, die Sie möglicherweise bereits zu git hinzugefügt haben, und die Datei dann an Github weiterleiten.
Erstellen Sie die Gitignore-Datei
Um eine Gitignore-Datei zu erstellen, können Sie nur touchdie Datei verwenden, die eine leere Datei mit dem angegebenen Namen erstellt. Wir möchten die Datei mit dem Namen .gitignore erstellen, damit wir den folgenden Befehl verwenden können:
touch .gitignore
Ignorieren Sie die Dateien
Jetzt müssen Sie die Zeile hinzufügen, die git anweist, die DS Store-Dateien zu Ihrem .gitignore zu ignorieren. Sie können dazu den Nano-Editor verwenden.
nano .gitignore
Nano ist nett, weil es Anweisungen enthält, wie man rauskommt. ( Ctrl- Ozum Speichern, Ctrl- Xzum Beenden)
Kopieren Sie einige der Ideen aus dieser Github-Liste, in der einige häufig zu ignorierende Dateien aufgeführt sind, und fügen Sie sie ein . Die wichtigsten, um diese Frage zu beantworten, wären:
# OS generated files #
######################
.DS_Store
.DS_Store?
Die # sind Kommentare und helfen Ihnen, Ihre Datei zu organisieren, wenn sie wächst.
Entfernen Sie die Dateien, die bereits zu git hinzugefügt wurden
Schließlich müssen Sie diese DS Store-Dateien tatsächlich aus Ihrem Verzeichnis entfernen.
Verwenden Sie diesen großartigen Befehl aus der Antwort mit der höchsten Bewertung. Dadurch werden alle Ordner in Ihrem Verzeichnis durchsucht und diese Dateien aus git entfernt.
Löschen Sie sie mit git-rmund fügen Sie dann .DS_Store hinzu, um zu verhindern .gitignore, dass sie erneut hinzugefügt werden. Sie können auch Blueharvest verwenden , um zu verhindern, dass sie alle zusammen erstellt werden
Folgendes hat für mich am besten funktioniert. Behandelte nicht übereinstimmende Dateien und Dateien mit lokalen Änderungen. Als Referenz war dies auf einem Mac 10.7-System mit git 1.7.4.4.
--cachedOption, behält Ihre lokale, .DS_Storeda es sowieso reproduziert wird.
Und wie oben erwähnt, fügen Sie .DS_Storeder .gitignore-Datei im Stammverzeichnis Ihres Projekts hinzu. Dann ist es nicht mehr in Ihren Augen (von Repos).
Ich bin etwas spät zur Party, aber ich habe eine gute Antwort. Verwenden Sie die folgenden Befehle in einem Terminalfenster, um die .DS_Store-Dateien zu entfernen. Löschen Sie jedoch die Dateien mit 'find'. Die Verwendung eines bestimmten Namens mit der Option -name ist eine der sichereren Möglichkeiten, ihn zu verwenden:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Sie können das "-delete" weglassen, wenn Sie sie einfach vorher und nachher auflisten möchten. Das wird Ihnen versichern, dass sie weg sind.
In Bezug auf den ~ / .gitignore_global-Rat: Seien Sie hier vorsichtig. Sie möchten diese nette Datei in .gitignore in der obersten Ebene jedes Arbeitsbereichs ablegen und festschreiben, damit jeder, der Ihr Repo klont, den Vorteil seiner Verwendung erhält.
Es gibt einige Lösungen, um dieses Problem zu beheben. Verwenden Sie den OS X Finder nicht zum Anzeigen von Ordnern, um das Erstellen von .DS_Store-Dateien zu vermeiden. Eine alternative Möglichkeit zum Anzeigen von Ordnern ist die Verwendung der UNIX-Befehlszeile. Zum Entfernen der .DS_Store-Dateien kann ein Drittanbieterprodukt namens DS_Store Terminator verwendet werden. Zum Löschen der .DS_Store-Dateien aus dem gesamten System kann ein UNIX-Shell-Befehl verwendet werden. Starten Sie das Terminal über Anwendungen: Dienstprogramme Geben Sie an der UNIX-Shell-Eingabeaufforderung den folgenden UNIX-Befehl ein: sudo find / -name ".DS_Store" -depth -exec rm {} \; Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie das Mac OS X-Administratorkennwort ein.
Dieser Befehl dient zum Suchen und Entfernen aller Vorkommen von .DS_Store ab dem Stammverzeichnis (/) des Dateisystems auf dem gesamten Computer. Gehen Sie folgendermaßen vor, um diesen Befehl für die Ausführung als geplante Aufgabe zu konfigurieren: Starten Sie das Terminal über Anwendungen: Dienstprogramme Geben Sie an der UNIX-Shell-Eingabeaufforderung den folgenden UNIX-Befehl ein:
sudo crontab -e Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie das Mac OS X-Administratorkennwort ein. Drücken Sie im vi-Editor einmal den Buchstaben I auf Ihrer Tastatur und geben Sie Folgendes ein:
Antworten:
Entfernen Sie vorhandene Dateien aus dem Repository:
Fügen Sie die Zeile hinzu
in die Datei
.gitignore
, die sich auf der obersten Ebene Ihres Repositorys befindet (oder erstellt wird, wenn sie noch nicht vorhanden ist). Sie können dies einfach mit diesem Befehl im obersten Verzeichnis tunDann
quelle
-exec
wirdgit-rm
für jede .DS_Store-Datei einmal gestartet, währendxargs
alle Pfade in einer Befehlszeile zusammengefasst werden. Meistens bevorzuge ich es,xargs
weil ich mir keine Sorgen machen muss, vielen Sonderzeichen zu entkommen..DS_Store
zu.gitignore
rekursiv Arbeit? Das heißt, wird es auch ignorierensome/level/of/folders/.DS_Store
?Kombinieren Sie die Antworten von Benzado und Webmat, aktualisieren Sie sie mit
git rm
Dateien, die nicht im Repo enthalten sind, und schlagen Sie sie nicht fehl , und machen Sie sie für jeden Benutzer generisch einfügbar :quelle
~/.gitignore
schmerzhaft ist, eine globale Ausschlussdatei zu haben. Es gibt Dateien, die ich aus meinem Home-Verzeichnis ausschließen möchte und die ich global nicht ignorieren möchte. Ich benutze~/.gitexcludes
stattdessen über die gleiche Anweisung:core.excludesfile
Die beste Lösung, um dieses Problem zu beheben, besteht darin, diese Dateien von allen Git-Repos auf Ihrem System global zu ignorieren. Dies kann durch Erstellen einer globalen Gitignore-Datei wie folgt erfolgen:
Hinzufügen von Regeln zum Ignorieren von Dateien wie:
Fügen Sie diese Datei nun Ihrer globalen Git-Konfiguration hinzu:
Bearbeiten:
Symbole wurden entfernt, da sie möglicherweise als Anwendungsressourcen festgeschrieben werden müssen.
quelle
In einigen Situationen möchten Sie möglicherweise auch einige Dateien global ignorieren. Für mich ist .DS_Store einer von ihnen. Hier ist wie:
(Oder eine Datei Ihrer Wahl)
Bearbeiten Sie dann die Datei wie den .gitignore eines Repos. Beachten Sie, dass Sie meiner Meinung nach einen absoluten Pfad verwenden müssen.
quelle
Wenn Sie die Dateien aufgrund entfernter Änderungen nicht entfernen können, verwenden Sie:
quelle
Öffnen Sie das Terminal und geben Sie "cd <ProjectPath>" ein.
Vorhandene Dateien entfernen:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Füge das hinzu
.DS_Store
Geben Sie "Strg + x" ein.
Geben Sie "y" ein.
Geben Sie ein, um die Datei zu speichern
git add .gitignore
git commit -m '.DS_Store removed.'
quelle
nano .gitignore
erstellt die Datei, wenn nicht vorhanden, sollte dieser Befehl aus dem Projektstammordner ausgeführt werdenDie Antwort mit der höchsten Bewertung ist fantastisch, aber um Neulingen wie mir zu helfen, erfahren Sie hier, wie Sie die .gitignore-Datei erstellen, bearbeiten, speichern, die Dateien entfernen, die Sie möglicherweise bereits zu git hinzugefügt haben, und die Datei dann an Github weiterleiten.
Erstellen Sie die Gitignore-Datei
Um eine Gitignore-Datei zu erstellen, können Sie nur
touch
die Datei verwenden, die eine leere Datei mit dem angegebenen Namen erstellt. Wir möchten die Datei mit dem Namen .gitignore erstellen, damit wir den folgenden Befehl verwenden können:touch .gitignore
Ignorieren Sie die Dateien
Jetzt müssen Sie die Zeile hinzufügen, die git anweist, die DS Store-Dateien zu Ihrem .gitignore zu ignorieren. Sie können dazu den Nano-Editor verwenden.
nano .gitignore
Nano ist nett, weil es Anweisungen enthält, wie man rauskommt. ( Ctrl- Ozum Speichern, Ctrl- Xzum Beenden)
Kopieren Sie einige der Ideen aus dieser Github-Liste, in der einige häufig zu ignorierende Dateien aufgeführt sind, und fügen Sie sie ein . Die wichtigsten, um diese Frage zu beantworten, wären:
Die # sind Kommentare und helfen Ihnen, Ihre Datei zu organisieren, wenn sie wächst.
Dieser Github-Artikel enthält auch einige allgemeine Ideen und Richtlinien.
Entfernen Sie die Dateien, die bereits zu git hinzugefügt wurden
Schließlich müssen Sie diese DS Store-Dateien tatsächlich aus Ihrem Verzeichnis entfernen.
Verwenden Sie diesen großartigen Befehl aus der Antwort mit der höchsten Bewertung. Dadurch werden alle Ordner in Ihrem Verzeichnis durchsucht und diese Dateien aus git entfernt.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Schieben Sie .gitignore zu Github
Im letzten Schritt müssen Sie Ihre .gitignore-Datei tatsächlich festschreiben.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
quelle
Ich musste oben git-rm in git rm ändern, damit es funktioniert:
quelle
Löschen Sie sie mit
git-rm
und fügen Sie dann .DS_Store hinzu, um zu verhindern.gitignore
, dass sie erneut hinzugefügt werden. Sie können auch Blueharvest verwenden , um zu verhindern, dass sie alle zusammen erstellt werdenquelle
Falls Sie DS_Store-Dateien in jeden Ordner und Unterordner entfernen möchten:
Bei bereits festgeschriebenem DS_Store:
Ignoriere sie durch:
quelle
Folgendes hat für mich am besten funktioniert. Behandelte nicht übereinstimmende Dateien und Dateien mit lokalen Änderungen. Als Referenz war dies auf einem Mac 10.7-System mit git 1.7.4.4.
Suchen und entfernen:
Ich ignoriere .DS_Store auch global in allen Repositorys, indem ich eine globale Datei core.excludesfile setze.
Erstellen Sie zunächst die Datei (falls noch keine vorhanden ist):
Fügen Sie dann die folgende Zeile hinzu und speichern Sie:
Konfigurieren Sie nun git so, dass die Datei global berücksichtigt wird:
quelle
Verwenden Sie diesen Befehl, um die vorhandenen Dateien zu entfernen:
Dann hinzufügen
.DS_Store
zu.gitignore
quelle
Ich fand, dass die folgende Zeile von snipplr am besten zum Löschen aller geeignet ist
.DS_Store
, einschließlich einer Zeile mit lokalen Änderungen.--cached
Option, behält Ihre lokale,.DS_Store
da es sowieso reproduziert wird.Und wie oben erwähnt, fügen Sie
.DS_Store
der .gitignore-Datei im Stammverzeichnis Ihres Projekts hinzu. Dann ist es nicht mehr in Ihren Augen (von Repos).quelle
Ich bin etwas spät zur Party, aber ich habe eine gute Antwort. Verwenden Sie die folgenden Befehle in einem Terminalfenster, um die .DS_Store-Dateien zu entfernen. Löschen Sie jedoch die Dateien mit 'find'. Die Verwendung eines bestimmten Namens mit der Option -name ist eine der sichereren Möglichkeiten, ihn zu verwenden:
Sie können das "-delete" weglassen, wenn Sie sie einfach vorher und nachher auflisten möchten. Das wird Ihnen versichern, dass sie weg sind.
In Bezug auf den ~ / .gitignore_global-Rat: Seien Sie hier vorsichtig. Sie möchten diese nette Datei in .gitignore in der obersten Ebene jedes Arbeitsbereichs ablegen und festschreiben, damit jeder, der Ihr Repo klont, den Vorteil seiner Verwendung erhält.
quelle
Das wird funktionieren:
Es löscht alle Dateien, deren Namen mit enden
.DS_Store
, einschließlich._.DS_Store
.quelle
"*.DS_Store"
, damit das Sternchen anfind
die Shell übergeben und nicht von ihr erweitert wird.Aus irgendeinem Grund funktionierte keines der oben genannten auf meinem Mac.
Meine Lösung ist vom Terminallauf:
Führen Sie dann den folgenden Befehl aus:
quelle
quelle
Überspringen Sie beim Initialisieren Ihres Repositorys den darin enthaltenen Befehl git
und es sollte kein Problem sein.
quelle
Das hat bei mir funktioniert, Kombination aus zwei Antworten von oben:
quelle
Ignorierte Dateien entfernen:
(.DS_Store)
quelle
Es gibt einige Lösungen, um dieses Problem zu beheben. Verwenden Sie den OS X Finder nicht zum Anzeigen von Ordnern, um das Erstellen von .DS_Store-Dateien zu vermeiden. Eine alternative Möglichkeit zum Anzeigen von Ordnern ist die Verwendung der UNIX-Befehlszeile. Zum Entfernen der .DS_Store-Dateien kann ein Drittanbieterprodukt namens DS_Store Terminator verwendet werden. Zum Löschen der .DS_Store-Dateien aus dem gesamten System kann ein UNIX-Shell-Befehl verwendet werden. Starten Sie das Terminal über Anwendungen: Dienstprogramme Geben Sie an der UNIX-Shell-Eingabeaufforderung den folgenden UNIX-Befehl ein: sudo find / -name ".DS_Store" -depth -exec rm {} \; Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie das Mac OS X-Administratorkennwort ein.
Dieser Befehl dient zum Suchen und Entfernen aller Vorkommen von .DS_Store ab dem Stammverzeichnis (/) des Dateisystems auf dem gesamten Computer. Gehen Sie folgendermaßen vor, um diesen Befehl für die Ausführung als geplante Aufgabe zu konfigurieren: Starten Sie das Terminal über Anwendungen: Dienstprogramme Geben Sie an der UNIX-Shell-Eingabeaufforderung den folgenden UNIX-Befehl ein:
sudo crontab -e Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie das Mac OS X-Administratorkennwort ein. Drücken Sie im vi-Editor einmal den Buchstaben I auf Ihrer Tastatur und geben Sie Folgendes ein:
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
Dies wird als Crontab-Eintrag bezeichnet, der das folgende Format hat:
Minute Stunde DayOfMonth Month DayOfWeek-Benutzerbefehl.
Der Crontab-Eintrag bedeutet, dass der Befehl vom System täglich um 01:15 Uhr automatisch von dem Konto namens root ausgeführt wird.
Der Befehl beginnt bei der Suche bis. Wenn das System nicht ausgeführt wird, wird dieser Befehl nicht ausgeführt.
Um den Eintrag zu speichern, drücken Sie einmal die Esc-Taste und gleichzeitig Umschalt + z + z.
Hinweis: Die Informationen in Schritt 4 gelten nur für den vi-Editor.
quelle
Fügen Sie dies Ihrer Datei .gitignore hinzu
Speichern Sie dies und machen Sie ein Commit
und jetzt ignorieren Sie dies für alle Ihre Commits
quelle
Erstellen Sie eine
.gitignore
Datei mit dem Befehltouch .gitignore
und fügen Sie die folgenden Zeilen hinzu
Speichern Sie die
.gitignore
Datei und schieben Sie sie dann in Ihr Git-Repo.quelle
Der beste Weg, um diese Datei für immer loszuwerden und sich nie wieder darum kümmern zu müssen, ist
Erstellen Sie eine globale Gitignore-Datei:
echo .DS_Store >> ~ / .gitignore_global
Und lassen Sie git wissen, dass Sie diese Datei für alle Ihre Repositorys verwenden möchten:
git config --global core.excludesfile ~ / .gitignore_global Und das war's! .DS_Store ist nicht im Weg.
quelle
Keine Notwendigkeit zu entfernen
.DS_STORE
lokalFügen Sie es einfach der
.gitignore
Datei hinzuBefehle
nano .gitignore
.DS_Store
Dann klickenCTRL+X > y > Hit Return
git status
Um einen letzten Blick auf Ihre Änderungen zu werfengit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master
quelle