Comment puis-je supprimer ces .DS_Store
fichiers Mac OS X ennuyeux d'un référentiel Git?
Comment puis-je supprimer ces .DS_Store
fichiers Mac OS X ennuyeux d'un référentiel Git?
Réponses:
Supprimez les fichiers existants du référentiel:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Ajoutez la ligne
.DS_Store
au fichier .gitignore
, qui peut être trouvé au niveau supérieur de votre référentiel (ou créé s'il n'y est pas déjà). Vous pouvez le faire facilement avec cette commande dans le répertoire supérieur
echo .DS_Store >> .gitignore
alors
git add .gitignore
git commit -m '.DS_Store banished!'
-exec
se lancera git-rm
une fois pour chaque fichier .DS_Store, tandis que xargs
mettra tous les chemins sur une seule ligne de commande. Surtout je préfère xargs
parce que je n'ai pas à m'inquiéter d'échapper à beaucoup de caractères spéciaux.
.DS_Store
au .gitignore
travail récursivement? Autrement dit, sera-t-il également ignoré some/level/of/folders/.DS_Store
?
Combiner benzado et les réponses de webmat, mettre à jour avec git rm
, ne pas échouer sur les fichiers trouvés qui ne sont pas en dépôt, et le rendre générique collable pour n'importe quel 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
~/.gitignore
comme fichier d'exclusion global est une douleur. Il y a des fichiers que je veux exclure de mon répertoire personnel que je ne veux pas ignorer globalement. J'utilise ~/.gitexcludes
plutôt via la même directive:core.excludesfile
La meilleure solution pour résoudre ce problème est d'ignorer globalement ces fichiers de tous les dépôts git sur votre système. Cela peut être fait en créant un fichier gitignore global comme:
vi ~/.gitignore_global
Ajout de règles pour ignorer les 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 globale de git:
git config --global core.excludesfile ~/.gitignore_global
Éditer:
Icônes supprimées car elles pourraient devoir être validées en tant qu'actifs d'application.
Dans certaines situations, vous pouvez également ignorer certains fichiers globalement. Pour moi, .DS_Store est l'un d'entre eux. Voici comment:
git config --global core.excludesfile /Users/mat/.gitignore
(Ou tout fichier de votre choix)
Modifiez ensuite le fichier comme le .gitignore d'un dépôt. Notez que je pense que vous devez utiliser un chemin absolu.
Si vous ne parvenez pas à supprimer les fichiers car ils comportent des modifications, utilisez les étapes:
git rm --cached -f *.DS_Store
Ouvrez le terminal et tapez "cd <ProjectPath>"
Supprimez les fichiers existants:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Ajoute ça .DS_Store
tapez "ctrl + x"
Tapez "y"
Entrez pour enregistrer le fichier
git add .gitignore
git commit -m '.DS_Store removed.'
nano .gitignore
crée le fichier s'il n'est pas présent, cette commande doit être exécutée à partir du dossier racine du projet
La réponse la plus votée est géniale, mais pour aider les recrues comme moi, voici comment créer le fichier .gitignore, le modifier, l'enregistrer, supprimer les fichiers que vous avez peut-être déjà ajoutés à git, puis pousser le fichier vers Github.
Créez le fichier .gitignore
Pour créer un fichier .gitignore, vous pouvez simplement touch
le fichier qui crée un fichier vierge avec le nom spécifié. Nous voulons créer le fichier nommé .gitignore afin que nous puissions utiliser la commande:
touch .gitignore
Ignorer les fichiers
Vous devez maintenant ajouter la ligne qui indique à git d'ignorer les fichiers DS Store dans votre .gitignore. Pour ce faire, vous pouvez utiliser l'éditeur nano.
nano .gitignore
Nano est sympa car il comprend des instructions pour en sortir. ( Ctrl- Opour enregistrer, Ctrl- Xpour quitter)
Copiez et collez certaines des idées de ce gistub Github qui répertorie certains fichiers communs à ignorer. Les plus importants, pour répondre à cette question, seraient:
# OS generated files #
######################
.DS_Store
.DS_Store?
Les # sont des commentaires et vous aideront à organiser votre fichier au fur et à mesure de sa croissance.
Cet article Github contient également quelques idées et directives générales.
Supprimez 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 de la réponse la plus votée. Cela passera par tous les dossiers de votre répertoire et supprimera ces fichiers de git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Poussez .gitignore jusqu'à Github
Dernière étape, vous devez réellement valider votre fichier .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
J'ai dû changer git-rm en git rm ci-dessus pour le faire fonctionner:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
supprimez-les à l'aide de git-rm
, puis ajoutez .DS_Store à .gitignore
pour les empêcher d'être ajoutés à nouveau. Vous pouvez également utiliser blueharvest pour les empêcher d'être créés tous ensemble
Si vous souhaitez supprimer des fichiers DS_Store dans chaque dossier et sous-dossier:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Ignorez-les en:
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
Ce qui suit a fonctionné le mieux pour moi. Fichiers inégalés traités et fichiers avec modifications locales. Pour référence, c'était sur un système Mac 10.7 exécutant git 1.7.4.4.
Rechercher et supprimer:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
J'ignore également globalement .DS_Store dans tous les référentiels en définissant un fichier core.excludesfile global.
Créez d'abord le fichier (s'il n'en existe pas déjà un):
touch ~/.gitignore
Ajoutez ensuite la ligne suivante et enregistrez:
.DS_Store
Configurez maintenant git pour respecter le fichier globalement:
git config --global core.excludesfile ~/.gitignore
Utilisez cette commande pour supprimer les fichiers existants:
find . -name '*.DS_Store' -type f -delete
Ajoutez ensuite .DS_Store
à.gitignore
J'ai trouvé que la ligne suivante de snipplr fait mieux d'effacer tout .DS_Store
, y compris celle qui a des modifications locales.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
option, conserve votre local .DS_Store
car il sera de toute façon reproduit.
Et comme mentionné ci-dessus, ajoutez .DS_Store
au fichier .gitignore à la racine de votre projet. Alors ce ne sera plus à vos yeux (de repos).
Je suis un peu en retard à la fête, mais j'ai une bonne réponse. Pour supprimer les fichiers .DS_Store, utilisez les commandes suivantes à partir d'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'un des moyens les plus sûrs de l'utiliser:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Vous pouvez laisser le "-delete" si vous voulez simplement les lister avant et après. Cela vous rassurera qu'ils sont partis.
En ce qui concerne le conseil ~ / .gitignore_global: soyez prudent ici. Vous voulez placer ce joli fichier dans .gitignore dans le niveau supérieur de chaque zone de travail et le valider, de sorte que toute personne qui clone votre dépôt profite de son utilisation.
Cela fonctionnera:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Il supprime tous les fichiers dont le nom se termine par .DS_Store
, y compris ._.DS_Store
.
"*.DS_Store"
pour que l'astérisque soit transmis à find
plutôt que développé par le shell.
Pour une raison quelconque, aucun des éléments ci-dessus n'a fonctionné sur mon Mac.
Ma solution est issue du terminal run:
rm .DS_Store
Exécutez ensuite la commande suivante:
git pull origin master
Cela a fonctionné pour moi, combo de deux réponses d'en haut:
La meilleure façon de se débarrasser de ce fichier pour toujours et de ne plus jamais avoir à s'en soucier est
créer un fichier global .gitignore:
echo .DS_Store >> ~ / .gitignore_global
Et faites savoir à git que vous souhaitez utiliser ce fichier pour tous vos référentiels:
git config --global core.excludesfile ~ / .gitignore_global Et c'est tout! .DS_Store est hors de votre chemin.
Il existe quelques solutions pour résoudre ce problème. Pour éviter de créer des fichiers .DS_Store, n'utilisez pas le Finder OS X pour afficher les dossiers. Une autre façon d'afficher les dossiers consiste à utiliser la ligne de commande UNIX. Pour supprimer les fichiers .DS_Store, un produit tiers appelé DS_Store Terminator peut être utilisé. Pour supprimer les fichiers .DS_Store de tout le système, une commande shell UNIX peut être utilisée. Lancer le terminal à partir des applications: utilitaires À l'invite du shell UNIX, entrez la commande UNIX suivante: sudo find / -name ".DS_Store" -depth -exec rm {} \; Lorsque vous êtes invité à entrer un mot de passe, entrez le mot de passe de l'administrateur Mac OS X.
Cette commande consiste à rechercher et supprimer toutes les occurrences de .DS_Store à partir de la racine (/) du système de fichiers à travers la machine entière. Pour configurer cette commande pour qu'elle s'exécute en tant que tâche planifiée, suivez les étapes ci-dessous: Lancer le terminal à partir des applications: utilitaires À l'invite du shell UNIX, entrez la commande UNIX suivante:
sudo crontab -e Lorsque vous êtes invité à entrer un mot de passe, entrez le mot de passe administrateur Mac OS X. Une fois dans l'éditeur vi, appuyez une fois sur la lettre I de votre clavier et entrez ce qui suit:
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
C'est ce qu'on appelle l'entrée crontab, qui a le format suivant:
Minute Hour DayOfMonth Month DayOfWeek User Command.
L'entrée crontab signifie que la commande sera exécutée automatiquement par le système à 1:15 AM tous les jours par le compte appelé root.
La commande démarre à partir de la recherche jusqu'à. Si le système n'est pas en cours d'exécution, cette commande ne sera pas exécutée.
Pour enregistrer l'entrée, appuyez une fois sur la touche Échap, puis appuyez simultanément sur Maj + z + z.
Remarque: les informations de l'étape 4 concernent uniquement l'éditeur vi.
ajoutez ceci à votre fichier .gitignore
#Ignore folder mac
.DS_Store
enregistrez ceci et faites un commit
git add -A
git commit -m "ignore .DS_Store"
et maintenant vous l'ignorez pour tous vos commits
Pas besoin de supprimer .DS_STORE
localement
Il suffit de l'ajouter au .gitignore
fichier
Le fichier .gitignore est juste un fichier texte qui indique à Git quels fichiers ou dossiers ignorer dans un projet.
Commandes
nano .gitignore
.DS_Store
puis cliquerCTRL+X > y > Hit Return
git status
Pour revoir vos modificationsgit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master