Archivos de directorio .idea comprometidos accidentalmente en git

306

Accidentalmente he comprometido el .idea/directorio en git. Esto está causando conflictos en cualquier otro lugar donde necesito verificar mi repositorio. Me preguntaba cómo elimino estos archivos del control remoto.

Todavía necesito estos archivos localmente ya que el IDE de Intellij los necesita. Simplemente no los quiero en el control remoto. Agregué el directorio .idea/a mi .gitignorey me comprometí e inserté este archivo en remoto. Sin embargo, esto parece no tener efecto durante mi pago en mi otra máquina. Todavía recibo el mensaje de error:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml
sethu
fuente
10
Puede ayudar a evitar esto en el futuro revisando sus confirmaciones. Prefiero ejecutar commitcon -vpara mostrar la diferencia en su editor cuando está escribiendo la confirmación. Ayuda a prevenir este tipo de error, así como a enfocar su mensaje de confirmación en lo que ha cambiado.
Daenyth
Daenyth tiene razón. Además, Git por defecto requiere que agregue archivos a la lista de cambios confirmados, así que aproveche eso y no confirme todo de una vez. De lo contrario, contaminará su repositorio tal como sucedió al agregarlo .idea.
Tadeck
1
Todos menos dos de los archivos en .idea deben estar en control de origen: devnet.jetbrains.com/docs/DOC-1186
cja
He encontrado el complemento IntelliJ .ignore muy útil cuando desea administrar todos los archivos que no deberían comprometerse con git: plugins.jetbrains.com/plugin/7495?pr=idea
paranza
Hola, ¿cuál es el daño de eso si tenemos .idea en el repositorio remoto?
milad salimi

Respuestas:

677

Agregue el directorio .idea a la lista de archivos ignorados

Primero, agréguelo .gitignorepara que usted (u otra persona) no lo vuelva a cometer accidentalmente:

.idea

Eliminarlo del repositorio

En segundo lugar, elimine el directorio solo del repositorio, pero no lo elimine localmente. Para lograr eso, haga lo que se enumera aquí:

Eliminar un archivo de un repositorio de Git sin eliminarlo del sistema de archivos local

Enviar el cambio a otros

En tercer lugar, confirme el .gitignorearchivo y la eliminación de .ideadel repositorio. Después de eso, empújalo a los controles remotos.

Resumen

El proceso completo se vería así:

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(opcionalmente, puede reemplazar la última línea con git push some_remote, donde some_remoteestá el nombre del control remoto al que desea enviar)

Tadeck
fuente
44
Nota: Si recibe el mensaje fatal: pathspec '.idea' did not match any filescuando ejecuta git rm -r --cached .idea, elimine su carpeta .idea, extraiga de github e intente nuevamente.
annedroiid
Si obtiene el error @annedroiid de 'no coincide con ningún archivo', puede intentar agregar su ruta. Como cuando estaba borrando el archivo database.yml, simplemente hice 'git rm -r --cached config / database.yml'
Ruto Collins
Algunos archivos en el directorio .idea deben registrarse en su repositorio. Consulte github.com/github/gitignore/blob/master/Global/… para obtener sugerencias de JetBrains sobre cómo debería ser su .gitignore.
tokenizer_fsj
2
No puedo sacar esta carpeta de nuestro repositorio por el resto de mi vida ... cambiar de sucursal sigue volviéndola a rastrear ... la gente ha ejecutado esto en varias sucursales y cada vez que cambias de sucursal ... git piensa que necesita ... en algún momento ... elimine su carpeta .idea así que ... en resumen ... cambiar de sucursal ahora es básicamente un borrado de configuraciones para nosotros. Intenté ejecutarlo en master ... luego fusionarme en todas las ramas ... pero stills borra la configuración.
nawlbergs
1
¿Tenemos una solución permanente para que esto se configure en IntelliJ para NUNCA agregar una .ideacarpeta para confirmar archivos?
Serhat
88

Puede eliminarlo del repositorio y confirmar el cambio.

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

Después de eso, puede empujarlo al control remoto y cada pago / clonación después de eso estará bien.

Ricardo Souza
fuente
10
Esto funcionó para mí, en oposición a la respuesta aceptada. Tal vez fue el git add -u lo que marcó la diferencia.
Paolo Mioni
No necesitas la segunda línea.
kjdion84
Como dijeron los demás, no corrí la segunda línea. ¡Trabajado como un encanto! gracias
blackkara
0

Debe agregar un archivo .gitignore a su proyecto y agregarlo /.idea. Debe agregar cada directorio / archivo en una línea.

Si tiene un archivo .gitignore existente , simplemente debe agregar una nueva línea al archivo y colocarlo /.ideaen la nueva línea.

Después de ese git rm -r --cached .ideacomando de ejecución .

Si se enfrentó a un error, puede ejecutar el git rm -r -f --cached .ideacomando. Después de todo ejecutar git add .y luego git commit -m "Removed .idea directory and added a .gitignore file"y finalmente empujar los cambios ejecutando el git pushcomando.

Hossein
fuente
0

Es mejor realizar esto sobre la rama Master

Edite el archivo .gitignore. Agregue la línea a continuación.

.idea

Elimine la carpeta .idea del repositorio remoto. usando el siguiente comando.

git rm -r --cached .idea

Para más información. referencia: Eliminar archivos de un repositorio de Git sin eliminarlos realmente

Etapa .gitignore archivo. Usando el siguiente comando

git add .gitignore

Cometer

git commit -m 'Removed .idea folder'

Empujar al control remoto

git push origin master

rahulnikhare
fuente