No se puede ignorar UserInterfaceState.xcuserstate


301

Estoy usando Git para el control de versión del proyecto Xcode 4. He añadido explícitamente ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstatea .gitignore, pero Git no va a ignorarlo. ¿Alguna idea de por qué esto es así?

Respuestas:


669

Git probablemente ya esté rastreando el archivo.

De los documentos de gitignore :

Para dejar de rastrear un archivo que se rastrea actualmente, use git rm --cached .

Use esto, reemplazando [project]y [username]con su información:

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

Alternativamente, puede usar la -aopción para git commitagregar todos los archivos que han sido modificados o eliminados.

Una vez que haya eliminado el archivo de git, respetará su .gitignore.


3
Tengo este problema, pero cuando trato de eliminar el archivo xcuserstate dice "no coincide con ningún archivo". ¿Que esta pasando?
Rob Caraway el

Tengo el mismo problema que @RobCaraway
MaxGabriel

24
Esto me ayudó a: 1) salir de xcode; 2) vaya al directorio del proyecto y haga un "ls -la" desde la aplicación de terminal para asegurarse de ver los archivos .git y .gitignore; 3) cambie "ProjectFolder" en el ejemplo anterior al nombre de su proyecto; 4) haz los dos comandos de git que Matt muestra; 5) Vuelva a iniciar XCode y realice una confirmación y verifique que el archivo xcuserstate ya no esté en la lista.
Brainware

1
¿Alguna idea de cómo hacer el equivalente en svn? Tengo el mismo problema, en el que svn no ignora el archivo
bpn

Gracias @Brainware !! Finalmente funcionó gracias a su sugerencia. Creo que cerrar Xcode de antemano es muy importante.
Jay Versluis

52

En caso de que el archivo ignorado siga apareciendo en la lista no rastreada, puede usarlo git clean -f -d para borrar las cosas.

1)

git rm --cached {YourProjectFolderName}.xcodeproj/project.xcworkspace/xcuserdata/{yourUserName}.xcuserdatad/UserInterfaceState.xcuserstate

2)

git commit -m "Removed file that shouldn't be tracked"

3. ADVERTENCIA primero intente git clean -f -d --dry-run, de lo contrario puede perder cambios no confirmados.

Luego: git clean -f -d


github ahora le proporciona un archivo .gitignore predeterminado que incluye este archivo, entre otros, pero aún tiene que seguir sus pasos. un poco molesto
cspam

3
Gracias hombres, git clean -f -d acaba de eliminar. xcodeproj y otros archivos de mi proyecto ...
Jeremy Luisetti

1
Se recomienda encarecidamente usar el indicador --dry-run antes de ejecutar git clean, es decir, git clean -f -d --dry-run para ver qué sucede
zero0cool

¿Qué git clean -f -dhacer?
allenlinli

¡No use el git clean -f -dsi tiene cambios de archivos no confirmados! ¡Lo usé y eliminó mis archivos recién creados con contenido ya creado! :) Así que primero comete y luego limpia
kalafun

44

Todas las respuestas son geniales, pero esta es la que eliminará para cada usuario si trabaja en una Mac diferente (hogar y oficina)

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

20

Un amigo me mostró este sitio increíble https://www.gitignore.io/ . Ingrese el IDE de su elección u otras opciones y automáticamente generará un gitignorearchivo que consiste en ignoraciones útiles, una de las cuales es xcuserstate. Puede obtener una vista previa del gitignorearchivo antes de descargarlo.


17

En caso de que el archivo siga apareciendo incluso después de hacer todo lo mencionado aquí, asegúrese de que esta casilla de verificación en la configuración de Xcode esté desmarcada:

ingrese la descripción de la imagen aquí


14

¡Solo "git clean -f -d" funcionó para mí!


7

Aquí hay algunas demostraciones y atajos si usa GitHub, las ideas básicas son las mismas.

1. Abra la terminal así

ingrese la descripción de la imagen aquí

2. Pegue el siguiente comando en la terminal seguido de un espacio y luego pegue la ruta del archivo .xcuserstate simplemente así

git rm --cached ingrese la descripción de la imagen aquí

3. Asegúrese de tener el git correcto ignorar y luego confirme el código :)

ingrese la descripción de la imagen aquí


4

Aquí hay una muy buena explicación de cómo eliminar los archivos en cuestión de forma recursiva de su historial de git: http://help.github.com/remove-sensitive-data/

Muy útil, porque de lo contrario las herramientas tienden a "bloquearse" al intentar mostrar la diferencia en esos archivos enormes que no deberían haber sido verificados en primer lugar ...

Esto es lo que puede hacer (en resumen) para deshacerse de las cosas más grandes:

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

Funcionó muy bien para mí :)


2

Para mí nada funcionó, pero esto

agrega esta línea a tu gitignore

*.xcuserdata

1

Esto funciona para mi

  1. Abra la carpeta que contiene el archivo project.xcworkspacedel proyecto desde la terminal.

  2. Escribe este comando: git rm --cached *xcuserstate

Esto eliminará el archivo.


0

Para xcode 8.3.3 acabo de comprobar que probé el código anterior y observo que, ahora en este caso, tenemos que cambiar los comandos para que me gusten

primero puede crear un archivo .gitignore utilizando

 touch .gitignore

después de eso, puede eliminar todo el archivo userInterface usando este comando y al usar este comando respetará su archivo .gitignore.

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

-1

Creo que sería mejor escribir así.

git rm --cache * / /UserInterfaceState.xcuserstate**

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.