Que gitignore du dossier .idea?

496

Duplicata possible:
Intellij Idea 9/10, dans quels dossiers archiver (ou non archiver) le contrôle de code source?

J'ai commencé à utiliser WebStorm pour le développement Web et je ne sais pas quoi ajouter et quoi exclure de notre référentiel Git. Il est clair que certains fichiers à l'intérieur du .ideadossier sont censés être contrôlés par la version comme les paramètres de la bibliothèque externe ( jsLibraryMappings.xml), mais d'autres changeront probablement très souvent et sont spécifiques au développeur (par exemple, workspace.xml).

Quel est le .gitignoremodèle recommandé pour WebStorm / IntelliJ IDEA?

PS Il y a déjà des questions à ce sujet mais se concentrent généralement uniquement sur l'opportunité d'inclure le .ideadossier entier ou de l'exclure complètement. Je pense que certains fichiers à l'intérieur du .ideadossier devraient être contrôlés par la version tandis que d'autres ne devraient pas et j'essaie de savoir lesquels.

Borek Bernard
la source
8
Je pense que mettre des fichiers IDE dans le système de version est une mauvaise idée. Votre projet sera plus lié à un IDE particulier et vous pouvez poser des problèmes aux utilisateurs d'autres IDE. J'ai eu quelques projets avec des fichiers IDE dans VCS et j'ai rencontré des complications. Maintenant, je n'ai dans VCS que des fichiers maven et IDEA génère des fichiers de projet et tout va bien.
chalimartines
11
@chalimartines Je préfère avoir tout le nécessaire pour la construction dans le référentiel. Comme nous n'utilisons pas Maven et utilisons également un seul IDE, ce serait une complication de NE PAS avoir de .ideafichiers dans VCS.
Borek Bernard

Réponses:

432

La page d'assistance officielle devrait répondre à votre question.

Donc, dans votre, .gitignorevous pourriez ignorer les fichiers se terminant par .iwset les fichiers workspace.xmlet tasks.xml.

hifkanotiks
la source
6
Le doc recommande de "partager tous les fichiers du module .iml", donc un .gitignore avec les deux lignes suivantes devrait convenir: .idea / workspace.xml .idea / tasks.xml
Kevin Ortman
9
La syntaxe correcte semble être*/.idea/workspace.xml */.idea/tasks.xml
vsp
111
Une meilleure syntaxe est**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger
37
pourquoi vaut **/mieux que */?
Vanquish46
39
@ Vanquish46: Plus précisément, le ** se reproduit dans tous les sous-dossiers, donc les fichiers qui répondent aux critères sont également ignorés dans les sous-dossiers.
Syndog
234

Je veux juste présenter une alternative plus récente. Il existe un outil en ligne qui génère des .gitignorefichiers basés sur les systèmes d'exploitation, les IDE et les langages de programmation que vous utilisez peut-être.

gitignore.io


EDIT Avertissement: Ne copiez pas ce fichier, copiez plutôt le fichier généré par le site Web, ils font un bon travail pour le garder à jour. C'est juste un exemple.

Le fichier généré pour IntelliJcontient les éléments suivants

# 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
la source
1
"Par défaut, ils vous suggèrent d'ignorer tout .idea/" - plus maintenant . Le .gitignore actuellement généré n'a pas d' .idea/entrée.
Mikolaj
1
Pourquoi voudriez-vous ignorer .idea/dictionariescarrément?
@Rhymoid Je ne sais pas pourquoi précisément puisque ce n'est pas moi qui propose le .gitignore. Je montre juste l'outil qui le fait. Je suppose que c'est un fichier personnel. Vous pouvez ajouter des éléments dans votre dictionnaire qui pourraient ne pas être valables pour d'autres. Surtout lorsque vous nettoyez les messages LINT. Je crois que si vous êtes d'accord entre vos coéquipiers, vous pourriez l'ajouter à votre dépôt git.
GabrielOshiro du
2
J'avais l'intention d'utiliser le «vous» générique, désolé. Mais avec les parallèles qu'il y a avec les peluches, il est tout à fait logique de les avoir dans un dépôt source, car les entrées s'appliqueront en fait à tout le monde: les dictionnaires sont spécifiques au contenu du projet! Par exemple, lorsque vous travaillez sur un analyseur syntaxique pour C, tout le monde rencontrera le problème que le mot "ponctuateur" est faussement marqué comme une faute d'orthographe ... sauf si vous partagez le dictionnaire.
@ user824425 IntelliJ dit de faire attention au dossier des dictionnaires utilisateur (pour éviter les conflits si un autre développeur porte le même nom) - voir intellij-support.jetbrains.com/hc/en-us/articles/…
nealmcb
28

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

Créé par 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
la source
2
D'ACCORD! si vous voulez ingorer quelque chose, vous pouvez aller sur [ gitignore.io/[(https://www.gitignore.io ), il peut être très utile pour vous de trouver facilement ce que vous voulez!
xgqfrms
1
Ceci est utile mais il serait préférable que vous veniez de lier le fichier - il existe déjà des différences dans la version en ligne.
Frankie Simon
14

Pendant quelques années, j'étais partisan de l'utilisation d'un spécifique .gitignorepour IntelliJ avec cette configuration suggérée .

Plus maintenant.

IntelliJ est mis à jour assez fréquemment, les spécifications des fichiers de configuration internes changent plus souvent que je ne le souhaiterais et le produit phare de JetBrains excelle à se configurer automatiquement en fonction des fichiers de construction maven / gradle / etc.

Donc, ma suggestion serait de laisser tous les fichiers de configuration de l'éditeur hors projet et de demander aux utilisateurs de configurer l'éditeur à leur guise. Des choses comme le style de code peuvent et doivent être configurées au niveau de la construction; dites utiliser Google Code Style ou CheckStyle directement sur Maven / Gradle / sbt / etc.

Cela garantit la cohérence et laisse les fichiers de l'éditeur hors du code source qui, à mon avis, est là où ils devraient être.

Frankie
la source
1
C'est exactement mon point, nous ne devrions pas nous tracasser .gitignorejuste pour JB comme je l'ai expliqué dans ma réponse.
nehem
7

Jetbrains fournit le .gitignore suivant pour leurs programmes

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
Céréale
la source
-1

Vous pouvez simplement les ignorer tous en les ajoutant .idea/*au .gitignorefichier.

DinoPi
la source
-2

Bien que le maintien du bon .gitignorefichier soit utile, j'ai trouvé que cette approche alternative est beaucoup plus propre et plus facile à utiliser.

  • Créez un dossier factice my_projectet à l'intérieur git clone my_real_projectdu dépôt réel du projet.
  • Maintenant, lors de l'ouverture du projet dans IDE (Intellij / Pycharm), ouvrez le dossier my_projectet marquez-le my_project/my_real_projectcomme racine VCS.
  • Vous pouvez voir que my_project/.ideacela ne polluerait pas votre dépôt git parce qu'il vit joyeusement en dehors du dépôt git, ce que vous voulez. De cette façon, vos .gitignorefichiers restent également propres.

Cette approche fonctionne mieux pour les raisons ci-dessous.

1 - le .gitignorefichier reste propre et nous n'avons pas à insérer de lignes liées aux produits JetBrains, ce fichier est mieux utilisé pour les binaires et les bibliothèques et le contenu autogène.

2 - Intellij continue de mettre à jour ses projets et les fichiers à l'intérieur .ideacontinuent de changer chaque version importante de JB. Cela signifie que nous devons continuer à mettre à jour nos informations en .gitignoreconséquence, ce qui n'est pas une utilisation idéale du temps.

3 - Intellij a le modèle imparfait ici, la plupart des éditeurs Atom, VS Code, Eclipse ... personne ne stocke son contenu IDE directement dans la racine du projet. JB ne devrait pas être une exception non plus. C'est la responsabilité de Jetbrains de garder ces fichiers suivis en dehors de la racine du projet. Ils doivent s'abstenir de polluer la racine VCS. Cette approche fait exactement cela. Le .ideadossier est conservé en dehors de laPROJECT_ROOT

J'espère que cela t'aides.

nehem
la source
1
Cette réponse est complètement trompeuse. /.ideadans .gitignore fonctionne très bien; Habituellement, le problème sera résolu par cette commande:git rm --cached -r .idea
HosseyNJF
/.ideane fonctionne pas, vous pouvez également consulter d'autres réponses et les directives officielles de JB
nehem
-4
  • Supprimer le dossier .idea

    $rm -R .idea/
    
  • Ajouter une règle

    $echo ".idea/*" >> .gitignore
    
  • Valider le fichier .gitignore

    $git commit -am "remove .idea"
    
  • Le prochain commit sera ok

Tai LE
la source
7
ignorer le dossier d'idées est bien car tout le monde ne les utilise pas et ils ne font pas partie de votre code - vous (espérons-le) n'en avez pas besoin en production, par exemple.
Tom Andersen
1
ignorer, c'est bien, mais supprimer est moins une bonne idée. Il contient des informations pour votre espace de travail local.
foo
Je suis surpris que ce vote soit rejeté. Les coutures seront la meilleure réponse ici!
Hugo Rafael Azevedo