Was soll aus dem .idea-Ordner gitignore werden?

496

Mögliches Duplikat:
Intellij Idea 9/10, welche Ordner müssen in die Quellcodeverwaltung eingecheckt (oder nicht eingecheckt) werden?

Ich habe angefangen, WebStorm für die Webentwicklung zu verwenden, und bin mir nicht sicher, was ich hinzufügen und was ich aus unserem Git-Repository ausschließen soll. Natürlich sollen einige Dateien im .ideaOrdner wie die Einstellungen der externen Bibliothek ( jsLibraryMappings.xml) versioniert werden, andere ändern sich jedoch wahrscheinlich sehr oft und sind entwicklerspezifisch (z workspace.xml. B. ).

Was ist das empfohlene .gitignoreMuster für WebStorm / IntelliJ IDEA?

PS Es gibt bereits Fragen dazu, aber normalerweise konzentrieren Sie sich nur darauf, ob Sie den gesamten .ideaOrdner einschließen oder ihn vollständig ausschließen möchten. Ich denke, einige der Dateien im .ideaOrdner sollten versioniert sein, andere nicht, und ich versuche herauszufinden, welche.

Borek Bernard
quelle
8
Ich denke, dass es eine schlechte Idee ist, IDE-Dateien in das Versionsverwaltungssystem zu stellen. Ihr Projekt ist stärker an eine bestimmte IDE gebunden, und Sie können Benutzern anderer IDEs Probleme bereiten. Ich hatte einige Projekte mit IDE-Dateien in VCS und hatte Komplikationen. Jetzt habe ich in VCS nur Maven-Dateien und IDEA Projektdateien generiert und alles ist in Ordnung.
Chalimartines
11
@chalimartines Ich bevorzuge es, alles, was für den Build benötigt wird, im Repository zu haben. Da wir Maven nicht verwenden und auch nur eine einzige IDE verwenden, wäre es eine Komplikation, keine .ideaDateien in VCS zu haben .
Borek Bernard

Antworten:

431

Die offizielle Support-Seite sollte Ihre Frage beantworten.

In Ihrem können .gitignoreSie also die Dateien, die mit enden .iws, und die Dateien workspace.xmlund ignorieren tasks.xml.

hifkanotiks
quelle
6
Das Dokument empfiehlt "Alle .iml-Moduldateien freigeben", daher sollte ein .gitignore mit den folgenden zwei Zeilen in Ordnung sein: .idea / workspace.xml .idea / task.xml
Kevin Ortman
9
Die korrekte Syntax scheint zu sein*/.idea/workspace.xml */.idea/tasks.xml
vsp
111
Eine bessere Syntax ist**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger
37
warum ist das **/besser als */?
Vanquish46
39
@ Vanquish46: Insbesondere wird das ** in allen Unterordnern wiederholt, sodass Dateien, die die Kriterien erfüllen, auch in Unterordnern ignoriert werden.
Syndog
234

Ich möchte nur eine neuere Alternative vorstellen. Es gibt ein Online-Tool, das .gitignoreDateien basierend auf Betriebssystemen, IDEs und Programmiersprachen generiert , die Sie möglicherweise verwenden.

gitignore.io


EDIT- Haftungsausschluss: Kopieren Sie diese Datei nicht, sondern kopieren Sie stattdessen die von der Website generierte Datei. Sie leisten gute Arbeit, um sie auf dem neuesten Stand zu halten. Dies ist nur ein Beispiel.

Die für generierte Datei IntelliJenthält Folgendes

# 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
quelle
1
"Standardmäßig schlagen sie vor, dass Sie alles ignorieren .idea/" - nicht mehr. Derzeit generierter .gitignore hat den .idea/Eintrag nicht.
Mikolaj
1
Warum sollten Sie das .idea/dictionariesvöllig ignorieren ?
@ Rhymoid Ich weiß nicht warum speziell, da ich nicht derjenige bin, der das vorschlägt .gitignore. Ich zeige nur das Werkzeug, das es tut. Ich vermute, dass es sich um eine persönliche Datei handelt. Sie können Ihrem Wörterbuch Dinge hinzufügen, die für andere möglicherweise nicht gültig sind. Insbesondere, wenn Sie LINT-Nachrichten bereinigen. Ich glaube, wenn Sie unter Ihren Teamkollegen zustimmen, können Sie es Ihrem Git-Repo hinzufügen.
GabrielOshiro
2
Ich wollte das generische "du" verwenden, sorry. Aber mit den Parallelen, die es zum Flusen gibt, ist es absolut sinnvoll, sie in einem Quell-Repo zu haben, da die Einträge tatsächlich für alle gelten: Die Wörterbücher sind spezifisch für den Inhalt des Projekts! Wenn Sie beispielsweise an einem Parser für C arbeiten, wird jeder auf das Problem stoßen, dass das Wort "Interpunktionszeichen" fälschlicherweise als Rechtschreibfehler markiert ist ... es sei denn, Sie teilen das Wörterbuch.
@ user824425 IntelliJ weist darauf hin , vorsichtig mit dem Ordner "Benutzerwörterbücher" umzugehen (um Konflikte zu vermeiden, wenn andere Entwickler denselben Namen haben) - siehe Intellij-support.jetbrains.com/hc/en-us/articles/…
nealmcb
28

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

Erstellt von 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
quelle
2
OK! Wenn Sie etwas wissen möchten, können Sie zu [ gitignore.io/ weiblicher ( http://www.gitignore.io ) gehen. Es kann sehr hilfreich für Sie sein, leicht zu finden, was Sie wollen!
xgqfrms
1
Dies ist hilfreich, aber es ist besser, wenn Sie nur auf die Datei verlinken - es gibt bereits Unterschiede in der Online-Version.
Frankie Simon
14

Einige Jahre lang war ich ein Befürworter der Verwendung eines .gitignorefür IntelliJ spezifischen Systems mit dieser vorgeschlagenen Konfiguration .

Nicht länger.

IntelliJ wird ziemlich häufig aktualisiert, die Spezifikationen der internen Konfigurationsdateien ändern sich häufiger als ich möchte, und das Flaggschiff von JetBrains zeichnet sich dadurch aus, dass es sich automatisch anhand der Build-Dateien von maven / gradle / etc selbst konfiguriert.

Mein Vorschlag wäre also, alle Editor-Konfigurationsdateien aus dem Projekt herauszulassen und die Benutzer den Editor nach ihren Wünschen konfigurieren zu lassen. Dinge wie das Code-Styling können und sollten auf Build-Ebene konfiguriert werden. Sagen Sie mit Google Code Style oder CheckStyle direkt auf Maven / Gradle / sbt / etc.

Dies stellt die Konsistenz sicher und lässt Editor-Dateien aus dem Quellcode heraus, der meiner persönlichen Meinung nach dort ist, wo sie sein sollten.

Frankie
quelle
1
Das ist genau mein Punkt. Wir sollten uns nicht .gitignorenur um JB kümmern, wie ich in meiner Antwort erklärt habe.
Nehem
7

Jetbrains bietet den folgenden .gitignore für ihre Programme

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
Müsli
quelle
-1

Sie können alle einfach ignorieren, indem Sie sie .idea/*zur .gitignoreDatei hinzufügen .

DinoPi
quelle
-2

Obwohl die Pflege der richtigen .gitignoreDatei hilfreich ist, fand ich, dass dieser alternative Ansatz viel sauberer und einfacher zu verwenden ist.

  • Erstellen Sie einen Dummy-Ordner my_projectund darin git clone my_real_projectdas eigentliche Projekt-Repo.
  • Öffnen Sie nun beim Öffnen des Projekts in IDE (Intellij / Pycharm) den Ordner my_projectund markieren Sie ihn my_project/my_real_projectals VCS-Stammverzeichnis.
  • Sie können sehen, my_project/.ideadass Ihr Git-Repo nicht verschmutzt wird, weil es glücklich außerhalb des Git-Repo lebt, was Sie wollen. Auf diese Weise bleiben auch Ihre .gitignoreDateien sauber.

Dieser Ansatz funktioniert aus den folgenden Gründen besser.

1 - .gitignoreDatei bleibt sauber und wir müssen keine Zeilen einfügen, die sich auf JetBrains-Produkte beziehen. Diese Datei wird besser für Binärdateien und Bibliotheken sowie für autogene Inhalte verwendet.

2 - Intellij aktualisiert ständig seine Projekte und die darin enthaltenen Dateien .ideaändern jede wichtige Version von JB. Dies bedeutet, dass wir unsere Daten .gitignoreentsprechend aktualisieren müssen, was keine ideale Zeitnutzung ist.

3 - Intellij hat hier das fehlerhafte Muster, die meisten Editoren Atom, VS Code, Eclipse ... niemand speichert seinen IDE-Inhalt direkt im Projektstamm. JB sollte auch keine Ausnahme sein. Es liegt in der Verantwortung von Jetbrains, diese Dateien außerhalb des Projektstamms zu verfolgen. Sie dürfen die VCS-Wurzel nicht verschmutzen. Dieser Ansatz macht genau das. Der .ideaOrdner wird außerhalb von aufbewahrtPROJECT_ROOT

Hoffe das hilft.

nehem
quelle
1
Diese Antwort ist völlig irreführend. /.ideain .gitignore funktioniert gut; Normalerweise wird das Problem nach folgendem Befehl gelöst:git rm --cached -r .idea
HosseyNJF
/.ideafunktioniert nicht, Sie können auch andere Antworten und die offiziellen Richtlinien von JB überprüfen
nehem
-4
  • Entfernen Sie den .idea-Ordner

    $rm -R .idea/
    
  • Regel hinzufügen

    $echo ".idea/*" >> .gitignore
    
  • Commit .gitignore-Datei

    $git commit -am "remove .idea"
    
  • Das nächste Commit wird in Ordnung sein

Tai LE
quelle
7
Das Ignorieren des Ideenordners ist in Ordnung, da nicht jeder sie verwendet und sie nicht Teil Ihres Codes sind - Sie benötigen sie (hoffentlich) beispielsweise nicht für die Produktion.
Tom Andersen
1
Ignorieren ist in Ordnung, aber Entfernen ist weniger eine gute Idee. Es enthält Informationen für Ihren lokalen Arbeitsbereich.
foo
Ich bin überrascht, dass dies abgelehnt wurde. Nähte, um hier die beste Antwort zu sein!
Hugo Rafael Azevedo