web-dev-qa-db-fra.com

Impossible d'ignorer UserInterfaceState.xcuserstate

J'utilise Git pour le contrôle de version de projet Xcode 4. J'ai explicitement ajouté ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate à .gitignore, mais Git ne l'ignorera pas. Des idées pourquoi c'est ainsi?

262
GarlicFries

Git est probablement déjà en train de suivre le fichier.

À partir de gitignore docs :

Pour arrêter de suivre un fichier actuellement suivi, utilisez git rm --cached.

Utilisez ceci en remplaçant [project] et [username] par vos informations:

git rm --cached [project].xcodeproj/project.xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removed file that shouldn't be tracked"

Vous pouvez également utiliser l'option -a pour git commit qui ajoutera tous les fichiers modifiés ou supprimés.

Une fois que vous avez supprimé le fichier de git, il respectera votre .gitignore.

580
matt

Au cas où le fichier ignoré continuerait à apparaître dans la liste non suivie, vous pouvez utilisergit clean -f -d Pour clarifier les choses. 

  1. git rm --cachedYourProjectFolderName. xcodeproj/project.xcworkspace/xcuserdata /yourUserName. xcuserdatad/UserInterfaceState.xcuserstate

  2. git commit -m "Fichier supprimé qui ne devrait pas être suivi"

  3. git clean -f -d

46
Xing

All Answer is great, mais voici celui qui sera supprimé pour chaque utilisateur si vous travaillez sur un Mac différent (à la maison et au bureau)

git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"
24
hardikdevios

Avait un ami me montrer ce site incroyable https://www.gitignore.io/ . Entrez le IDE de votre choix ou d'autres options et il générera automatiquement un fichier gitignore composé d'ignorances utiles, dont l'un est la xcuserstate. Vous pouvez prévisualiser le fichier gitignore avant le téléchargement.

16
Josh Valdivieso

Si le fichier continue à s'afficher même après avoir effectué toutes les opérations mentionnées ici, assurez-vous que cette case à cocher dans les paramètres Xcode est décochée:

 enter image description here

15
Lukas Kalinski

Juste "git clean -f -d" a travaillé pour moi!

12
rilar

Voici une très belle explication sur la façon de supprimer récursivement les fichiers en question de votre historique git: http://help.github.com/remove-sensitive-data/

Très utile, car sinon les outils ont tendance à «se bloquer» en essayant de montrer le diff sur ces énormes fichiers qui n'auraient pas dû être vérifiés en premier lieu ...

Voici ce que vous pouvez faire (en bref) pour vous débarrasser des éléments les plus volumineux:

cd YourProject
git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r YourProject.xcodeproj/project.xcworkspace' HEAD
# see what you want to do with your remote here...
# you can: git Push Origin master --force
# or you can delete it and Push a fresh new one from your cleaned-up local...
rm -rf .git/refs/original
git gc --Prune=now
git gc --aggressive --Prune=now

A très bien fonctionné pour moi :)

4
Zoran Simic

Pour moi rien n'a fonctionné, mais ceci

ajoutez cette ligne à votre gitignore

*.xcuserdata
2
Qadir Hussain

Voici quelques démos et raccourcis si vous utilisez GitHub, les idées de base sont les mêmes.

1. Ouvrez le terminal comme ceci

enter image description here

2. Collez la commande ci-dessous dans le terminal, suivie d'un espace, puis collez le chemin du fichier .xcuserstate simplement comme ceci

git rm --cachedenter image description here

3. Assurez-vous que vous avez le bon git ignore et validez le code :)

enter image description here

1
Fangming

Ça marche pour moi 

  1. Ouvrez le dossier contenant le fichier de projet project.xcworkspace à partir du terminal.

  2. Écrivez cette commande: git rm --cached *xcuserstate

Cela supprimera le fichier.

0

Pour xcode 8.3.3 je viens de vérifier essayé le code ci-dessus et observe que, maintenant dans ce casewe doivent changer les commandes pour aimer ceci

d’abord, vous pouvez créer un fichier .gitignore en utilisant 

 touch .gitignore

après cela, vous pouvez supprimer tout le fichier userInterface à l'aide de cette commande. Cette commande respectera votre fichier .gitignore.

 git rm --cached [project].xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
 git commit -m "Removed file that shouldn't be tracked"
0
Sachin Nautiyal