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
C'est vraiment trivial, mais l'utilisation -execse lancera git-rmune fois pour chaque fichier .DS_Store, tandis que xargsmettra tous les chemins sur une seule ligne de commande. Surtout je préfère xargsparce que je n'ai pas à m'inquiéter d'échapper à beaucoup de caractères spéciaux.
benzado
8
Cela devrait utiliser .git / info / exclude, pas .gitignore. Voir stackoverflow.com/questions/1753070/… pour une explication de la différence entre les deux.
Andrew Grimm
106
@Andrew: Je ne suis pas d'accord. Il ne serait jamais utile qu'un fichier .DS_Store soit archivé, donc cela a plus de sens en tant que paramètre pour tous les utilisateurs du référentiel, plutôt que quelque chose que chaque utilisateur Mac doit se rappeler de définir sur sa propre machine.
benzado
51
Est-ce que l'ajout .DS_Storeau .gitignoretravail récursivement? Autrement dit, sera-t-il également ignoré some/level/of/folders/.DS_Store?
Charlie Schliesser
71
@CharlieS Oui, si le modèle ne contient pas de barre oblique, il est comparé au nom de fichier dans tous les répertoires.
benzado
239
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
J'ai trouvé que lorsque j'utilise un dépôt git dans mon répertoire personnel (aussi appelé un dépôt "dotfiles"), avoir ~/.gitignorecomme 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 ~/.gitexcludesplutôt via la même directive:core.excludesfile
AL le X
156
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:
Vous pouvez également ajouter des règles ci-dessus dans le .gitignore de votre référentiel. Cela éloignerait ces fichiers au niveau du référentiel s'il y a plusieurs contributeurs à votre projet. Cependant, dans de tels cas, .gitignore devrait traiter les fichiers spécifiques de chaque système d'exploitation, etc. si différents développeurs utilisent un système d'exploitation différent. Comme les règles pour Linux, OSX, etc.
Nerve
Je recommanderais à chaque développeur de traiter ses fichiers spécifiques au système d'exploitation dans son propre .global_ignore, de cette façon le projet .gitignore est spécifique au projet.
mcfedr
doit fonctionner: git add .gitignore_global, pour qu'un autre programmeur ait aussi ce fichier dans son environnement local?
stackdave
58
Dans certaines situations, vous pouvez également ignorer certains fichiers globalement. Pour moi, .DS_Store est l'un d'entre eux. Voici comment:
nano .gitignorecrée le fichier s'il n'est pas présent, cette commande doit être exécutée à partir du dossier racine du projet
Saif
17
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 touchle 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.
supprimez-les à l'aide de git-rm, puis ajoutez .DS_Store à .gitignorepour les empêcher d'être ajoutés à nouveau. Vous pouvez également utiliser blueharvest pour les empêcher d'être créés tous ensemble
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.
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.
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:
Réponses:
Supprimez les fichiers existants du référentiel:
Ajoutez la ligne
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érieuralors
la source
-exec
se lanceragit-rm
une fois pour chaque fichier .DS_Store, tandis quexargs
mettra tous les chemins sur une seule ligne de commande. Surtout je préfèrexargs
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:la source
~/.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:
Ajout de règles pour ignorer les fichiers comme:
Maintenant, ajoutez ce fichier à votre configuration globale de git:
Éditer:
Icônes supprimées car elles pourraient devoir être validées en tant qu'actifs d'application.
la source
Dans certaines situations, vous pouvez également ignorer certains fichiers globalement. Pour moi, .DS_Store est l'un d'entre eux. Voici comment:
(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.
la source
Si vous ne parvenez pas à supprimer les fichiers car ils comportent des modifications, utilisez les étapes:
la source
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.'
la source
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 projetLa 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:
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!'
la source
J'ai dû changer git-rm en git rm ci-dessus pour le faire fonctionner:
la source
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 ensemblela source
Si vous souhaitez supprimer des fichiers DS_Store dans chaque dossier et sous-dossier:
En cas de DS_Store déjà engagé:
Ignorez-les en:
la source
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:
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):
Ajoutez ensuite la ligne suivante et enregistrez:
Configurez maintenant git pour respecter le fichier globalement:
la source
Utilisez cette commande pour supprimer les fichiers existants:
Ajoutez ensuite
.DS_Store
à.gitignore
la source
J'ai trouvé que la ligne suivante de snipplr fait mieux d'effacer tout
.DS_Store
, y compris celle qui a des modifications locales.--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).la source
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:
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.
la source
Cela fonctionnera:
Il supprime tous les fichiers dont le nom se termine par
.DS_Store
, y compris._.DS_Store
.la source
"*.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:
Exécutez ensuite la commande suivante:
la source
la source
Lors de l'initialisation de votre référentiel, ignorez la commande git qui contient
et cela ne devrait pas être un problème.
la source
Cela a fonctionné pour moi, combo de deux réponses d'en haut:
la source
Supprimer les fichiers ignorés:
(.DS_Store)
la source
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.
la source
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.
la source
ajoutez ceci à votre fichier .gitignore
enregistrez ceci et faites un commit
et maintenant vous l'ignorez pour tous vos commits
la source
créer un
.gitignore
fichier à l'aide de la commandetouch .gitignore
et ajoutez-y les lignes suivantes
enregistrez le
.gitignore
fichier, puis poussez-le dans votre dépôt git.la source
Pas besoin de supprimer
.DS_STORE
localementIl suffit de l'ajouter au
.gitignore
fichierCommandes
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
la source