J'ai ajouté .DS_Store au fichier .gitignore, mais il semble que .DS_Store ne soit ignoré que dans le répertoire racine, et non dans tous les dossiers et sous-dossiers.
Comment puis-je réparer cela ?
J'ai ajouté .DS_Store au fichier .gitignore, mais il semble que .DS_Store ne soit ignoré que dans le répertoire racine, et non dans tous les dossiers et sous-dossiers.
Comment puis-je réparer cela ?
Je pense que le problème que vous rencontrez est que dans un commit précédent, vous avez accidentellement ajouté .DS_Store
dans le référentiel. Bien sûr, une fois qu'un fichier est suivi dans votre référentiel, il continuera à être suivi même s'il correspond à une entrée dans un fichier .gitignore applicable.
Vous devez supprimer manuellement le .DS_Store
qui ont été ajoutés à votre référentiel. Vous pouvez utiliser
git rm --cached .DS_Store
Une fois retiré, git devrait l'ignorer. Vous ne devriez avoir besoin que de la ligne suivante dans votre racine .gitignore
fichier : .DS_Store
. N'oubliez pas la période !
git rm --cached .DS_Store
ne supprime que .DS_Store
du répertoire actuel. Vous pouvez utiliser
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
pour supprimer tous les .DS_Stores
du référentiel.
Pointe feutre : Puisque vous ne voulez probablement jamais inclure .DS_Store
faites une règle globale. Tout d'abord, créez une règle globale .gitignore
quelque part, par exemple
echo .DS_Store >> ~/.gitignore_global
Maintenant, dites à git de l'utiliser pour tous les dépôts :
git config --global core.excludesfile ~/.gitignore_global
Cette page m'a aidé à répondre à votre question.
Git rm --cached .DS_Store'' supprime un seul .DS_Store du répertoire courant. Utilisez ''find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch'' pour supprimer tous les .DS_Stores du repo.
Ajouter `/.DS_Storeen
.gitignore` pour le sous-répertoire**
Si .DS_Store
déjà engagés :
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Pour les ignorer dans tout référentiel : (parfois il a nommé ._.DS_Store
)
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
@FreddySidauruk devrait être find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
de la part de : stackoverflow.com/questions/18393498/
Si .DS_Store n'a jamais été ajouté à votre dépôt git, ajoutez-le simplement à votre fichier .gitignore.
Si vous n'en avez pas, créez un fichier appelé
.gitignore
Dans le répertoire racine de votre application et écrivez simplement
**/.DS_Store
En elle. Cela ne permettra jamais au fichier .DS_Store de se faufiler dans votre git.
Mais, si c'est déjà là, écrivez dans votre terminal :
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
puis valider et pousser les changements pour supprimer le .DS_Store de votre dépôt distant :
git commit -m "Remove .DS_Store from everywhere"
git push origin master
Et maintenant ajoutez .DS_Store à votre fichier .gitignore, et puis à nouveau commit et push avec les 2 derniers morceaux de code (git commit..., git push...)
Il suffit de le placer sur une nouvelle ligne dans .gitignore
**/.DS_Store
- Un "**" suivi d'une barre oblique signifie une correspondance dans tous les répertoires. Par exemple, "**/foo" correspond au fichier ou au répertoire "foo" n'importe où, comme le motif "foo". "**/foo/bar" correspond à un fichier ou un répertoire "bar" situé directement sous le répertoire "foo".
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.
3 votes
Duplicata possible de Comment supprimer les fichiers .DS_Store d'un dépôt Git ?
0 votes
Comment exactement l'avez-vous ajouté au fichier .gitignore ? Cela devrait fonctionner dans tous les répertoires (c'est le cas pour moi).
0 votes
Cela fonctionne pour moi aussi. J'ai également essayé d'utiliser un saut de ligne (spécifique à la plate-forme) à la fin du fichier, mais cela n'a pas changé le fait que les répertoires .DS_Store dans n'importe quelle partie de la hiérarchie sont toujours ignorés.
0 votes
La question, telle que je la comprends, était la suivante : Comment ignorer facilement toutes les occurrences de .DS_Store dans tous les sous-répertoires sans le faire manuellement dans chaque sous-répertoire. J'ai eu le même problème. La réponse ci-dessous montre comment le résoudre (les 2 derniers paragraphes).