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_Store
fichiers 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_Store
fichiers 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 .gitignore
fichier: .DS_Store
. N'oubliez pas la période!
git rm --cached .DS_Store
supprime uniquement .DS_Store
du répertoire actuel. Vous pouvez utiliser
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
pour tout supprimer .DS_Stores
du référentiel.
Astuce: comme vous ne voulez probablement jamais inclure de .DS_Store
fichiers, créez une règle globale. Créez d'abord un .gitignore
fichier 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_Store
dans .gitignore
le sous-répertoire
Si .DS_Store
dé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_file
abord
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, de: stackoverflow.com/questions/18393498/…
-f
soit 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_store
fichiers. On peut courir
git rm -f *.DS_Store
mais sachez que cela rm -f
peut ê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' --cached
indicateur à 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