J'ai ajouté .DS_Store au fichier .gitignore, mais il semble qu'il ignore uniquement .DS_Store dans le répertoire racine, pas dans tous les dossiers et sous-dossiers.
Comment puis-je réparer ça?
J'ai ajouté .DS_Store au fichier .gitignore, mais il semble qu'il ignore uniquement .DS_Store dans le répertoire racine, pas dans tous les dossiers et sous-dossiers.
Comment puis-je réparer ça?
Réponses:
Je pense que le problème que vous rencontrez est que dans certains commit précédents, vous avez accidentellement ajouté des .DS_Storefichiers au référentiel. Bien sûr, une fois qu'un fichier est suivi dans votre référentiel, il continuera d'être suivi même s'il correspond à une entrée dans un fichier .gitignore applicable.
Vous devez supprimer manuellement les .DS_Storefichiers qui ont été ajoutés à votre référentiel. Vous pouvez utiliser
git rm --cached .DS_Store
Une fois supprimé, git devrait l'ignorer. Vous ne devriez la ligne suivante dans la racine de votre .gitignorefichier: .DS_Store. N'oubliez pas la période!
git rm --cached .DS_Store
supprime uniquement .DS_Storedu répertoire actuel. Vous pouvez utiliser
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
pour tout supprimer .DS_Storesdu référentiel.
Astuce: comme vous ne voulez probablement jamais inclure de .DS_Storefichiers, créez une règle globale. Créez d'abord un .gitignorefichier global quelque part, par exemple
echo .DS_Store >> ~/.gitignore_global
Dites maintenant à 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.
Ajouter **/.DS_Storedans .gitignorele sous-répertoire
Si .DS_Storedéjà engagé:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Pour les ignorer dans tous les dépôts: (parfois il est 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
              git rm --cached your_fileabord
                    find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch, de: stackoverflow.com/questions/18393498/…
                    -fsoit nécessaire si vous avez des fichiers ouverts dans les dossiers pertinents:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
                    Si .DS_Store n'a jamais été ajouté à votre référentiel 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
Dedans. Cela ne permettra jamais au fichier .DS_Store de se faufiler dans votre git.
Mais s'il est déjà là, écrivez dans votre terminal:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
puis validez et poussez les modifications 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, puis recommencez et poussez avec les 2 derniers morceaux de code (git commit ..., git push ...)
*ou **selon ce que vous voulez réaliser. C'est une façon de dire au shell comment naviguer dans les répertoires. Cette réponse stackoverflow l'explique entièrement stackoverflow.com/a/28199633/4092170
                    Votre fichier .gitignore devrait ressembler à ceci:
# Ignore Mac DS_Store files
.DS_Store
Tant que vous n'incluez pas de barre oblique, elle est comparée au nom de fichier dans tous les répertoires. (d' ici )
git rm --cached path/to/file/here
                    Étape 1, supprimez tous les *.DS_storefichiers. On peut courir
git rm -f *.DS_Store
mais sachez que cela rm -fpeut être un peu dangereux si vous avez une faute de frappe! Deuxième étape: ajouter
*.DS_Store
.DS_Store
à .gitignore. Cela a fonctionné pour moi!
Vous pouvez également ajouter l' --cachedindicateur à la réponse d'Auco pour gérer les fichiers locaux .DS_store, comme Edward Newell l'a mentionné dans sa réponse d'origine. La commande modifiée ressemble à ceci: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch..cheers et merci!
Étape: 1) Supprimez les fichiers existants à l'aide de cette commande
trouver . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Étape: 2) Ajoutez .DS_Store dans votre fichier .gitignore
Étape: 3) Validez vos modifications dans .gitignore git add .gitignore git commit -m "supprimé .DS_Store"
$ git rm ./*.DS_Store - supprimer tous les .DS_Store de git$ echo \.DS_Store >> .gitignore - ignorer .DS_Store à l'avenircommit & push