No se puede ignorar .idea / workspace.xml: sigue apareciendo


237

Usando PHPStorm, estoy tratando de ignorar lo workspace.xmlque aparece cada vez que intento hacer un git commit.

Mi se .gitignoreparece a:

/.idea/
.idea/workspace.xml

Debido a que en un momento se confirmó el archivo, también ejecuté:

git rm --cached .idea/workspace.xml y luego cometió la eliminación, empujado a un repositorio desnudo.

Pero el archivo sigue apareciendo más tarde cuando hago cambios en el proyecto.

¿Alguna idea sobre lo que me falta?


Intenté todo a continuación, lo agregué a gitignore, pero aún sigue volviendo, ignorando gitignore.
Olaf

Parece esta misma pregunta . Compruébelo y vea ...
Luca Ballore

Consulte este enlace: stackoverflow.com/questions/8156299/… . Parece tu mismo problema.
Luca Ballore

Respuestas:


289

Estaba enfrentando el mismo problema, y ​​me llevó por la pared. El problema terminó siendo que la carpeta .idea YA estaba comprometida previamente en el repositorio, por lo que git los estaba rastreando independientemente de si los ignoraba o no. Recomendaría lo siguiente, después de cerrar RubyMine / IntelliJ o cualquier IDE que esté utilizando:

mv .idea ../.idea_backup
rm .idea # in case you forgot to close your IDE
git rm -r .idea 
git commit -m "Remove .idea from repo"
mv ../.idea_backup .idea

Después de eso, asegúrese de ignorar .idea en su .gitignore

Aunque es suficiente ignorarlo en el .gitignore del repositorio, te sugiero que ignores los archivos de puntos de tu IDE a nivel mundial.

De lo contrario, tendrá que agregarlo a cada .gitgnore para cada proyecto en el que trabaje. Además, si colabora con otras personas, entonces es mejor no contaminar el .gitignore del proyecto con una configuración privada que no sea específica del código fuente del proyecto.


El último comando debe ser "mv ../.idea_backup .idea" en lugar de "git mv ../.idea_backup .idea" para evitar el error git
Leo Caseiro

2
Tengo que hacer en git rm .idealugar de git add .ideahacer el trabajo
Serge

También cambié addpor, rmpero en mi caso tuve que agregar -rtambién para eliminar recursivamente todo. git rm -r .idea
jmendiola

2
¡¡Wow gracias!! Intenté esto de un millón de maneras diferentes en vano. ESTE es el enfoque correcto paso a paso. La diferencia clave que me faltaba era asegurarme de que mi IDE estaba cerrado, ¡no se pierda ese paso! Excelente respuesta :)
Jonny Asmar

¡Gracias! Pasé mucho, mucho tiempo buscando soluciones de trabajo y probé varios. Esta es la forma más sencilla de hacerlo.
edepe

83

Tuve este problema en este momento, tuve que hacerlo git rm -f .idea/workspace.xml ahora, parece haber desaparecido (también tuve que ponerlo .gitignore)


77
También agregaría, solo por razones de precisión, que Idea intellij debería cerrarse al realizar estos pasos.
LoreV

29

Tuve que:

  • eliminar el archivo de git
  • empujar el compromiso a todos los controles remotos
  • asegúrese de que todos los otros confirmadores se actualicen de forma remota

Comandos

git rm -f .idea/workspace.xml
git remote | xargs -L1 git push --all

Otros confirmadores deben ejecutar

git pull

77
Si bien me alegro por esta respuesta, no puedo evitar sentir que sería más útil si se incluyeran las instrucciones de cómo realizar los pasos (por ejemplo, directivas de línea de comandos).
Flyingace 01 de

Consulte este enlace: stackoverflow.com/questions/8156299/… . Se ve exactamente como tu mismo problema.
Luca Ballore

cierre IDE \ n git rm -f .idea / workspace.xml \ n git commit -m "eliminando workspace.xml" \ n edite .gitignore para excluir workspace.xml \ n abra IDE
Srneczek

27

En el mismo directorio donde ve aparecer el archivo, haga lo siguiente:

  • rm .idea/workspace.xml
  • git rm -f .idea/workspace.xml (as suggested by chris vdp)
  • vi .gitignore
  • i(para editar), agregue .idea/workspace.xmluna de las líneas Esc,:wq

Deberías ser bueno ahora


2
O, para agregar la fila a .gitignore, simplemente escriba echo .idea/workspace.xml>>.gitignore. No necesitas abrir vi para todo. Alternativamente, y lo que haría, es tener un archivo .gitignore separado en el directorio .idea:echo workspace.xml>>.idea/.gitignore
Godsmith

17

Para eliminar por .idea/completo del git sin afectar su configuración IDE , simplemente puede hacer:

git rm -r --cached '.idea/'
echo .idea >> .gitignore
git commit -am "removed .idea/ directory"

6

Si tiene varios proyectos en su repositorio de git, .idea/workspace.xmlno coincidirá con ningún archivo.

En su lugar, haga lo siguiente:

$ git rm -f **/.idea/workspace.xml

Y haz que tu .gitignore se vea así:

# User-specific stuff:
**/.idea/workspace.xml
**/.idea/tasks.xml
**/.idea/dictionaries
**/.idea/vcs.xml
**/.idea/jsLibraryMappings.xml

# Sensitive or high-churn files:
**/.idea/dataSources.ids
**/.idea/dataSources.xml
**/.idea/dataSources.local.xml
**/.idea/sqlDataSources.xml
**/.idea/dynamic.xml
**/.idea/uiDesigner.xml

## File-based project format:
*.iws

# IntelliJ
/out/

5

Solo dile a git que no asuma que ha cambiado, no importa qué:

git update-index --assume-unchanged src/file/to/ignore

sí, puedes eliminar los archivos del repositorio de git. Pero si su equipo usa el mismo IDE o usted está solo, probablemente no quiera hacer eso. Para usted, desea tener un buen punto de partida para continuar trabajando, también para sus compañeros de equipo.


0

Así lo hice en Android Studio, que también se basa en IntelliJ, fue así. En el diálogo de confirmación, revertí el cambio para workspace.xml, luego lo moví a un archivo no versionado. Después de eso borré esto del diálogo de confirmación. Ahora no aparecerá en la lista de cambios. Tenga en cuenta que mi gitignore ya incluía .idea / workspace.xml


0

Como en mi caso estaba realizando un primer commit de un proyecto, simplemente eliminar .gity .ideacarpetas y luego reiniciar git usando git initayudó a resolver un problema. Ahora no tengo .ideanada.


0

El mismo problema para mí con PHPStorm

Finalmente resolví haciendo lo siguiente:

  • Eliminar el directorio .idea /
  • Mover .gitignore al mismo nivel será el nuevo .idea / generado
  • Escriba los archivos que necesita ignorar, y .idea / también. Para estar seguro de que será ignorado, pongo lo siguiente:

    • .idea/
    • .idea
    • .idea/*

No sé por qué funciona de esta manera, tal vez .gitignore necesite estar al mismo nivel de .idea para poder ignorar este directorio.


-1

Ignore los archivos que terminan en .iwsy los archivos workspace.xmly tasks.xmlen su referencia .gitignore

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.