Frage

Wie kann ich die lästigen Mac OS X .DS_Store Dateien aus einer Git-Repository entfernen?

War es hilfreich?

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 "

  1. Entfernen vorhandene Dateien: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Fügen Sie diese .DS_Store

  4. Geben Sie "Strg + x"

  5. Geben Sie "y"

  6. Geben Sie Datei

  7. speichern
  8. git add .gitignore

  9. 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 auf CTRL+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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top