¿Qué gitignore de la carpeta .idea?

496

Posible duplicado:
Intellij Idea 9/10, ¿en qué carpetas registrar (o no registrar) el control de origen?

Comencé a usar WebStorm para el desarrollo web y no estoy seguro de qué agregar y qué excluir de nuestro repositorio de Git. Claramente, algunos archivos dentro de la .ideacarpeta están destinados a ser controlados por la versión, como la configuración de la biblioteca externa ( jsLibraryMappings.xml), pero otros probablemente cambiarán muy a menudo y son específicos del desarrollador (por ejemplo, workspace.xml).

¿Cuál es el .gitignorepatrón recomendado para WebStorm / IntelliJ IDEA?

PD Ya hay preguntas sobre esto, pero generalmente se enfoca solo en incluir la .ideacarpeta completa o excluirla por completo. Creo que algunos de los archivos dentro de la .ideacarpeta deben ser controlados por la versión, mientras que otros no, y estoy tratando de averiguar cuáles.

Borek Bernard
fuente
8
Creo que poner archivos IDE en el sistema de versiones es una mala idea. Su proyecto estará más vinculado a un IDE particular y puede traer problemas para los usuarios de otros IDE. Tuve algunos proyectos con archivos IDE en VCS y enfrenté complicaciones. Ahora tengo en VCS solo archivos maven e IDEA generan archivos de proyecto y todo está bien.
chalimartines
11
@chalimartines Prefiero tener todo lo necesario para construir en el repositorio. Como no usamos Maven y tampoco utilizamos un solo IDE, sería una complicación NO tener .ideaarchivos en VCS.
Borek Bernard

Respuestas:

432

La página de soporte oficial debería responder a su pregunta.

Entonces, en su .gitignore, puede ignorar los archivos que terminan en .iwsy los archivos workspace.xmly tasks.xml.

hifkanotiks
fuente
66
El documento recomienda "compartir todos los archivos del módulo .iml", por lo que un .gitignore con las siguientes dos líneas debería estar bien: .idea / workspace.xml .idea / task.xml
Kevin Ortman
99
La sintaxis correcta parece ser*/.idea/workspace.xml */.idea/tasks.xml
vsp
111
Una mejor sintaxis es**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger
37
¿Por qué es **/mejor que */?
Vanquish46
39
@ Vanquish46: Más específicamente, el ** se repite a través de todas las subcarpetas, por lo que los archivos que cumplen con los criterios también se ignoran en las subcarpetas.
Syndog
234

Solo quiero presentar una alternativa más reciente. Existe una herramienta en línea que genera .gitignorearchivos basados ​​en sistemas operativos, IDEs y lenguajes de programación que podría estar utilizando.

gitignore.io


Exención de responsabilidad de EDIT : no copie este archivo, copie el archivo generado por el sitio web, hacen un buen trabajo para mantenerlo actualizado. Esto es solo un ejemplo.

El archivo generado para IntelliJcontiene lo siguiente

# Created by https://www.gitignore.io/api/intellij

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# 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

# Gradle:
.idea/gradle.xml
.idea/libraries

# Mongo Explorer plugin:
.idea/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
GabrielOshiro
fuente
1
"Por defecto, te sugieren que ignores todo .idea/", ya no. El .gitignore generado actualmente no tiene la .idea/entrada.
Mikolaj
1
¿Por qué ignorarías por .idea/dictionariescompleto?
@Rhymoid No sé por qué específicamente ya que no soy yo quien propone el .gitignore. Solo estoy mostrando la herramienta que lo hace. Supongo que es un archivo personal. Puede agregar cosas en su diccionario que podrían no ser válidas para otros. Especialmente cuando está limpiando mensajes LINT. Creo que si está de acuerdo con sus compañeros de equipo, puede agregarlo a su repositorio de git.
GabrielOshiro
2
Tenía la intención de usar el genérico 'usted', lo siento. Pero con los paralelos que tiene que alinearse, tiene mucho sentido tenerlos en un repositorio fuente, porque las entradas de hecho se aplicarán a todos: ¡los diccionarios son específicos del contenido del proyecto! Por ejemplo, cuando trabaje en un analizador sintáctico para C, todos se encontrarán con el problema de que la palabra "puntuador" está falsamente marcada como un error ortográfico ... a menos que comparta el diccionario.
@ user824425 IntelliJ dice que tenga cuidado con la carpeta de diccionarios del usuario (para evitar conflictos si otro desarrollador tiene el mismo nombre) - vea intellij-support.jetbrains.com/hc/en-us/articles/…
nealmcb
28

https://www.gitignore.io/api/jetbrains

Creado por https://www.gitignore.io/api/jetbrains

### JetBrains ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# 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

# Gradle:
.idea/gradle.xml
.idea/libraries

# Mongo Explorer plugin:
.idea/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

### JetBrains Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml 
# *.ipr 
xgqfrms
fuente
2
¡OKAY! si quieres hacer algo, puedes ir a [ gitignore.io/font>(https://www.gitignore.io ), ¡puede ser muy útil para que encuentres fácilmente lo que quieres!
xgqfrms
1
Esto es útil, pero sería mejor si solo se vinculara al archivo; ya existen diferencias en la versión en línea.
Frankie Simon
14

Durante un par de años, apoyé el uso de un específico .gitignorepara IntelliJ con esta configuración sugerida .

Ya no.

IntelliJ se actualiza con bastante frecuencia, las especificaciones internas del archivo de configuración cambian con más frecuencia de lo que me gustaría y el buque insignia de JetBrains sobresale en la autoconfiguración basada en archivos de compilación maven / gradle / etc.

Entonces, mi sugerencia sería dejar todos los archivos de configuración del editor fuera del proyecto y hacer que los usuarios configuren el editor a su gusto. Cosas como el estilo de código pueden y deben configurarse a nivel de compilación; digamos usando Google Code Style o CheckStyle directamente en Maven / Gradle / sbt / etc.

Esto garantiza la coherencia y deja los archivos del editor fuera del código fuente que, en mi opinión personal, es donde deberían estar.

Frankie
fuente
1
Ese es exactamente mi punto, no deberíamos molestarnos .gitignoresolo por JB como lo he explicado en mi respuesta.
Nehem
7

Jetbrains proporciona el siguiente .gitignore para sus programas

https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore

# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

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

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
Cereal
fuente
-1

Simplemente puede ignorarlos agregando .idea/*al .gitignorearchivo.

DinoPi
fuente
-2

Si bien .gitignorees útil mantener el archivo adecuado , descubrí que este enfoque alternativo es mucho más limpio y fácil de usar.

  • Cree una carpeta ficticia my_projecty dentro de eso git clone my_real_projectel repositorio real del proyecto.
  • Ahora, al abrir el proyecto en IDE (Intellij / Pycharm), abra la carpeta my_projecty márquelo my_project/my_real_projectcomo la raíz VCS.
  • Puedes ver my_project/.ideaque no contaminaría tu repositorio de git porque felizmente vive fuera del repositorio de git, que es lo que quieres. De esta manera, sus .gitignorearchivos también se mantienen limpios.

Este enfoque funciona mejor debido a las siguientes razones.

1 - el .gitignorearchivo se mantiene limpio y no tenemos que insertar líneas relacionadas con los productos JetBrains, ese archivo se usa mejor para binarios y bibliotecas y contenido de autogen.

2 - Intellij sigue actualizando sus proyectos y los archivos dentro .ideacambian cada versión importante de JB. Lo que esto significa es que tenemos que seguir actualizando en .gitignoreconsecuencia, lo que no es un uso ideal del tiempo.

3 - Intellij tiene el patrón defectuoso aquí, la mayoría de los editores Atom, VS Code, Eclipse ... nadie almacena su contenido IDE dentro de la raíz del proyecto. JB tampoco debería ser una excepción. Es responsabilidad de Jetbrains mantener esos archivos rastreados fuera de la raíz del proyecto. Deben abstenerse de contaminar la raíz de VCS. Este enfoque hace justamente eso. La .ideacarpeta se mantiene fuera dePROJECT_ROOT

Espero que esto ayude.

nehem
fuente
1
Esta respuesta es completamente engañosa. /.ideaen .gitignore funciona bien; Por lo general, el problema se resolverá después con este comando:git rm --cached -r .idea
HosseyNJF
/.ideano funciona, también puede consultar otras respuestas y las pautas oficiales de JB
nehem
-4
  • Eliminar la carpeta .idea

    $rm -R .idea/
    
  • Agregar regla

    $echo ".idea/*" >> .gitignore
    
  • Confirmar archivo .gitignore

    $git commit -am "remove .idea"
    
  • La próxima confirmación estará bien

Tai LE
fuente
77
ignorar la carpeta de ideas está bien, ya que no todos las usan y no forman parte de su código; por ejemplo, no las necesita en producción, por ejemplo.
Tom Andersen
1
ignorar está bien, pero eliminar es menos una buena idea. Contiene información para su espacio de trabajo local.
foo
Me sorprende que esto haya sido rechazado. ¡Parece la mejor respuesta aquí!
Hugo Rafael Azevedo