Comment puis-je Supprimer.DS stocke des fichiers d'un dépôt Git?

Comment puis-je supprimer ces fichiers Mac OS X .DS_Store d'un dépôt Git?

969
demandé sur jubobs 2008-09-20 13:15:50

22 réponses

supprimer les fichiers existants du dépôt:

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

ajouter la ligne

.DS_Store

vers le fichier .gitignore , qui peut être trouvé au niveau supérieur de votre dépôt (ou créé s'il n'y est pas déjà). Vous pouvez le faire facilement avec cette commande dans le répertoire

echo .DS_Store >> .gitignore

puis

git add .gitignore
git commit -m '.DS_Store banished!'
1877
répondu benzado 2018-05-09 23:59:00

combinant les réponses de benzado et webmat, mise à jour avec git rm , ne pas faillir sur les fichiers trouvés qui ne sont pas dans repo, et le faire coller-able generically pour tout utilisateur:

# 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
213
répondu Turadg 2011-07-14 23:42:43

la meilleure solution pour s'attaquer à ce problème est d'ignorer globalement ces fichiers de tous les git repos sur votre système. Cela peut être fait en créant un fichier global gitignore comme:

vi ~/.gitignore_global

ajouter des règles pour ignorer des fichiers comme:

# 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

Maintenant, ajoutez ce fichier à votre configuration git globale:

git config --global core.excludesfile ~/.gitignore_global

Edit:

a supprimé les icônes car elles pourraient devoir être commises en tant qu'application actif.

122
répondu Nerve 2013-09-16 08:58:05

dans certaines situations, vous pouvez aussi vouloir ignorer certains fichiers globalement. M'. ,DS_Store est l'un d'entre eux. Voici comment:

git config --global core.excludesfile /Users/mat/.gitignore

(ou tout fichier de votre choix)

puis éditez le fichier comme un repo .gitignore. Notez que je pense que vous devez utiliser un chemin absolu.

51
répondu webmat 2011-08-01 20:46:37

j'ai dû changer de git-git rm rm dans le ci-dessus pour le faire fonctionner:

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
13
répondu David Kahn 2013-09-04 18:32:55

si vous n'êtes pas en mesure de supprimer les fichiers parce qu'ils ont des changements d'utilisation échelonnée:

git rm --cached -f *.DS_Store
11
répondu Reggie Pinkham 2016-08-11 21:14:25

Ouvrir un terminal et tapez "cd < Dossier >"

  1. supprimer les fichiers existants: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. ajouter ce .DS_Store

  4. type "ctrl + x "

  5. Type" y "

  6. Enter pour enregistrer le fichier

  7. git add .gitignore

  8. git commit -m '.DS_Store removed.'

11
répondu Karthick Vadivel 2016-11-24 10:03:15

supprimer en utilisant git-rm , puis Ajouter .DS_Store .gitignore pour empêcher de l'ajouter à nouveau. Vous pouvez également utiliser blueharvest pour les empêcher de se créer tous ensemble

8
répondu Nathan 2008-09-20 10:05:35

TOP réponse voté est génial, mais aider les débutants comme moi, voici comment créer le .gitignore fichier, le modifier, l'enregistrer, supprimer les fichiers que vous pourriez avoir déjà ajouté à git, puis poussez le fichier sur Github.

créer le .gitignore fichier

pour créer un .gitignore fichier, vous pouvez simplement touch le fichier qui crée un fichier vide avec le nom spécifié. Nous voulons créer le fichier nommé .gitignore nous pouvons donc utiliser la commande:

touch .gitignore

ignorer les fichiers

Maintenant vous devez ajouter la ligne qui dit à git d'ignorer les fichiers de stockage DS à votre .gitignore. Vous pouvez utiliser le nano editor pour cela.

nano .gitignore

Nano est agréable parce qu'il comprend des instructions sur la façon de s'en sortir. ( Ctrl - O enregistrer", 1519270920" Ctrl - X pour quitter)

Copier-coller certaines des idées de ce Github gist qui liste des fichiers à ignorer. Les plus importantes, pour répondre à cette question, seraient:

# OS generated files #
######################
.DS_Store
.DS_Store?

le # sont des commentaires, et vous aidera à organiser votre dossier comme il grandit.

Ce Github l'article aussi a quelques idées générales et des lignes directrices.

supprimer les fichiers déjà ajoutés à git

enfin, vous devez réellement supprimer ces fichiers DS Store de votre répertoire.

utilisez cette grande commande du haut de la réponse votée. Cela va passer par tous les dossiers dans votre répertoire, et supprimer ces fichiers de git.

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Push .gitignore jusqu'à Github

dernière étape, vous devez réellement commettre votre .dossier gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

6
répondu Joshua Dance 2017-10-31 06:41:27

ce qui suit a fonctionné le mieux pour moi. Manipulés inégalée, et les fichiers avec des modifications locales. Pour référence, C'était sur un système Mac 10.7 fonctionnant avec git 1.7.4.4.

trouver et supprimer:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f

j'ignore aussi globalement .DS_Store dans tous les dépôts en définissant un noyau global.excludesfile.

d'abord, créez le fichier (s'il n'en existe pas déjà un):

touch ~/.gitignore

puis ajouter le ligne suivante et enregistrer:

.DS_Store

maintenant configurer git pour respecter le fichier globalement:

git config --global core.excludesfile ~/.gitignore
5
répondu jordantbro 2011-09-28 00:52:59

j'ai trouvé que la ligne suivante de snipplr fait mieux sur l'essuyage tout .DS_Store, y compris un qui a des modifications locales.

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

-- option Mise en cache, conserve votre local .DS_Store puisqu'il va être reproduit de toute façon.

et comme tous mentionnés ci-dessus, ajouter .DS_Store .gitignore à la racine de votre projet. Alors il ne sera plus à vos yeux.

4
répondu manat 2009-07-22 04:34:18

Utilisez cette commande pour supprimer les fichiers existants:

find . -name '*.DS_Store' -type f -delete

ajouter .DS_Store à .gitignore

4
répondu Sunny 2017-02-18 03:05:34

je suis un peu en retard à la fête, mais j'ai une bonne réponse. Pour supprimer le .DS_Store, utilisez les commandes suivantes depuis une fenêtre de terminal, mais soyez très prudent en supprimant les fichiers avec 'find'. L'utilisation d'un nom spécifique avec l'option-name est l'une des façons les plus sûres de l'utiliser:

cd directory/above/affected/workareas
find . -name .DS_Store -delete

vous pouvez laisser de côté le"- supprimer " si vous voulez simplement les énumérer avant et après. Qui va vous rassurer qu'ils sont partis.

en ce qui concerne le ~ / .gitignore_global conseil: Soyez prudent ici. Vous souhaitez placer ce fichier de nice .gitignore au sein du niveau supérieur de chaque workarea et le commit, de sorte que quiconque clone votre repo va gagner le bénéfice de son utilisation.

2
répondu zeozod 2017-12-25 06:00:53

pour une raison quelconque, aucun de ces éléments n'a fonctionné sur mon mac.

Ma solution est de la borne à exécuter

       rm .DS_Store

puis

        git pull origin master
1
répondu Invincible 2013-04-10 09:06:36

lors de l'initialisation de votre dépôt, sautez la commande git qui contient

-u

et ça ne devrait pas être un problème.

1
répondu dav1dhunt 2014-04-30 15:08:49

cela a fonctionné pour moi, combo de deux réponses d'en haut:

  • $ git rm --cached-f *.DS_Store
  • $ git commit-m "filter-branch --index' git rm --cached -- ignore-le .DS_Store "
  • $ git push origin master -- force
1
répondu JLunceford 2015-07-28 16:16:38

Cela va fonctionner:

find . -name "*.DS_Store" -type f -exec git-rm {} \;

supprime tous les fichiers dont le nom se termine par .DS_Store , y compris ._.DS_Store .

1
répondu John Topley 2018-01-06 17:28:48

dans le cas où vous voulez supprimer des fichiers DS_Store à chaque dossier et sous-dossier:


Dans le cas de DS_Store déjà engagé:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

ignorez-les par:

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
1
répondu 2018-04-22 21:09:59
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
0
répondu JZ. 2011-10-19 01:01:44

Il y a quelques solutions pour résoudre ce problème. Pour éviter de créer .DS_Store fichiers, ne pas utiliser le Finder OS X pour visualiser les dossiers. Une autre façon de visualiser les dossiers est D'utiliser la ligne de commande UNIX. Pour supprimer le .Les fichiers DS_Store un produit tiers appelé Terminator DS_Store peut être utilisé. Pour supprimer les .Une commande Unix shell peut être utilisée. Lancement du Terminal À partir D'Applications: Utilitaires À L'invite du shell UNIX, entrez la commande UNIX suivante:: sudo find / - name".DS_Store" -profondeur -exec rm {} \; Lorsqu'on vous demande un mot de passe, entrez le mot de passe de L'administrateur Mac OS X.

Cette commande est de trouver et de supprimer toutes les occurrences de .DS_Store à partir de la racine (/) du système de fichiers à travers toute la machine. Pour configurer cette commande pour exécuter une tâche planifiée suivez les étapes ci-dessous: Lancement du Terminal À partir D'Applications: Utilitaires À L'invite du shell UNIX, entrez la commande UNIX suivante:

sudo crontab-e Lorsqu'on vous demande un mot de passe, entrez le mot de passe de L'administrateur Mac OS X. Une fois dans le vi editor appuyez sur la lettre I sur votre clavier une fois et entrez ce qui suit:

15 1 * * * racine find / -name ".DS_Store" -profondeur -exec rm {} \;

cette entrée est appelée crontab, qui a le format suivant:

Minute Hour Dayof Month Month DayOfWeek User Command.

L'entrée crontab signifie que la commande sera exécuté automatiquement par le système à 1:15 AM tous les jours par le compte root.

La commande commence à partir de trouver le chemin . Si le système n'exécute pas cette commande ne sera pas exécutée.

pour sauvegarder l'entrée, appuyez une fois sur la touche Esc, puis appuyez simultanément sur Shift + z+ Z.

Note: L'information à L'Étape 4 est pour l'éditeur vi seulement.

0
répondu vinny 2012-08-01 09:54:05

ajoutez ceci à votre fichier .gitignore

#Ignore folder mac
.DS_Store

enregistrer et faire commettre

git add -A
git commit -m "ignore .DS_Store"

et maintenant vous ignorez ceci pour tous vos commits

0
répondu Ezequiel García 2016-05-17 17:16:39

supprimer les fichiers ignorés:

(.DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
0
répondu Cubiczx 2018-03-02 10:10:31