Comment puis-je supprimer ces ennuyeux Mac OS X .DS_Store
des fichiers d'un dépôt Git ?
Vous pourriez également utiliser l'option exec pour trouver . -name .DS_Store -exec git-rm {} \ ; Ce serait une commande en moins.
Comment puis-je supprimer ces ennuyeux Mac OS X .DS_Store
des fichiers d'un dépôt Git ?
Supprimer les fichiers existants du référentiel :
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Ajoutez cette ligne :
.DS_Store
dans le fichier .gitignore
qui se trouve au niveau supérieur de votre référentiel (ou créez le fichier s'il n'est pas déjà là). Vous pouvez le faire facilement avec cette commande dans le répertoire supérieur :
echo .DS_Store >> .gitignore
Ensuite, livrez le fichier au dépôt :
git add .gitignore
git commit -m '.DS_Store banished!'
Vous pourriez également utiliser l'option exec pour trouver . -name .DS_Store -exec git-rm {} \ ; Ce serait une commande en moins.
C'est vraiment trivial, mais en utilisant -exec
lancera git-rm
une fois pour chaque fichier .DS_Store, alors que xargs
mettra tous les chemins sur une seule ligne de commande. En général, je préfère xargs
car je n'ai pas à m'inquiéter de l'échappement de nombreux caractères spéciaux.
Cela devrait utiliser .git/info/exclude, et non .gitignore. Voir stackoverflow.com/questions/1753070/ pour une explication de la différence entre les deux.
Combinaison des réponses de benzado et webmat, mise à jour avec git rm
, ne pas échouer sur les fichiers trouvés qui ne sont pas dans le repo, et le rendre collable de manière générique 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
J'ai constaté qu'en utilisant un dépôt git dans mon répertoire personnel (alias un dépôt "dotfiles"), le fait d'avoir ~/.gitignore
comme mon fichier d'exclusions global est une douleur. Il y a des fichiers que je veux exclure de mon répertoire personnel et que je Ne le fais pas. veulent ignorer globalement. J'utilise ~/.gitexcludes
à la place via la même directive : core.excludesfile
La meilleure solution pour résoudre ce problème est d'ignorer globalement ces fichiers dans tous les dépôts git de votre système. Ceci 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
Edit :
Suppression des icônes car elles pourraient avoir besoin d'être engagées en tant que ressources d'application.
Vous pouvez également ajouter les règles ci-dessus dans le .gitignore de votre dépôt. Cela permet d'éloigner ces fichiers au niveau du dépôt s'il y a plusieurs contributeurs à votre projet. Cependant, dans de tels cas, le fichier .gitignore devrait traiter les fichiers spécifiques à chaque système d'exploitation, etc. si différents développeurs utilisent différents systèmes d'exploitation. Comme des règles pour linux, OSX etc.
Je recommande que chaque développeur traite ses fichiers spécifiques à son système d'exploitation dans son propre .global_ignore, de cette façon le .gitignore du projet est spécifique au projet.
Doit lancer : git add .gitignore_global , afin qu'un autre programmeur ait aussi ce fichier dans son environnement local ?
Dans certaines situations, vous pouvez également vouloir ignorer certains fichiers de manière globale. Pour moi, .DS_Store est l'un d'entre eux. Voici comment faire :
git config --global core.excludesfile /Users/mat/.gitignore
(Ou tout autre fichier de votre choix)
Puis éditez le fichier comme le .gitignore d'un repo. Notez que je pense que vous devez utiliser un chemin absolu.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
Voir : aorensoftware.com/blog/2011/12/24/death-to-ds_store
0 votes
Je pense que c'est la même chose dans de nombreuses versions de MacOS, pas seulement Mac OS X.
1 votes
Vérifiez https://github.com/xiaozhuai/odourless j'ai créé un outil permettant d'empêcher l'utilisation de .DS_Store.