Cosa gitignore dalla cartella .idea?


496

Possibile duplicato:
Intellij Idea 9/10, quali cartelle archiviare (o non archiviare) nel controllo del codice sorgente?

Ho iniziato a utilizzare WebStorm per lo sviluppo Web e non sono sicuro di cosa aggiungere e cosa escludere dal nostro repository Git. Chiaramente alcuni file all'interno della .ideacartella devono essere controllati in base alla versione come le impostazioni della libreria esterna ( jsLibraryMappings.xml) ma altri probabilmente cambieranno molto spesso e sono specifici dello sviluppatore (ad es workspace.xml.).

Qual è il .gitignoremodello raccomandato per WebStorm / IntelliJ IDEA?

PS Ci sono già domande su questo, ma di solito si concentrano solo sull'inclusione dell'intera .ideacartella o sull'esclusione completa. Penso che alcuni dei file all'interno della .ideacartella debbano essere controllati dalla versione, mentre altri no e sto cercando di scoprire quali.


8
Penso che mettere i file IDE nel sistema di controllo delle versioni sia una cattiva idea. Il tuo progetto sarà più legato a un particolare IDE e puoi creare problemi per gli utenti di altri IDE. Ho avuto alcuni progetti con file IDE in VCS e ho riscontrato complicazioni. Ora ho in VCS solo file maven e IDEA genera file di progetto e tutto va bene.
— Chalimartines,

11
@chalimartines Preferisco avere tutto il necessario per la compilazione nel repository. Poiché non utilizziamo Maven e utilizziamo anche un singolo IDE, sarebbe una complicanza NON avere .ideafile in VCS.
— Borek Bernard,


Risposte:


432

La pagina di supporto ufficiale dovrebbe rispondere alla tua domanda.

Quindi nel tuo .gitignorepotresti ignorare i file che finiscono con .iwse i file workspace.xmle tasks.xml.


6
Il documento raccomanda "condividi tutti i file del modulo .iml", quindi un .gitignore con le seguenti due righe dovrebbe andare bene: .idea / workspace.xml .idea / task.xml
— Kevin Ortman

9
La sintassi corretta sembra essere*/.idea/workspace.xml */.idea/tasks.xml
— vsp

111
Una sintassi migliore è**/.idea/workspace.xml **/.idea/tasks.xml
— Josh Unger,

37
perché è **/meglio di */?
— Vanquish46

39
@ Vanquish46: Più in particolare, il ** ricorre attraverso tutte le sottocartelle, quindi anche i file che soddisfano i criteri vengono ignorati nelle sottocartelle.
— Syndog,

234

Voglio solo presentare un'alternativa più recente. Esiste uno strumento online che genera .gitignorefile basati su sistemi operativi, IDE e linguaggi di programmazione che potresti utilizzare.

gitignore.io


EDIT Dichiarazione di non responsabilità: non copiare questo file, copia il file generato dal sito Web, ma fa un buon lavoro per mantenerlo aggiornato. Questo è solo un esempio.

Il file generato per IntelliJcontiene quanto segue

# 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

1
"Di default ti suggeriscono di ignorare tutto da .idea/" - non più. .Gitignore attualmente generato non ha la .idea/voce.
— Mikolaj,

1
Perché dovresti ignorare .idea/dictionariesapertamente?

@Rhymoid Non so perché proprio perché non sono io a proporre il .gitignore. Sto solo mostrando lo strumento che lo fa. La mia ipotesi è che si tratti di un file personale. È possibile aggiungere elementi nel dizionario che potrebbero non essere validi per gli altri. Soprattutto quando si puliscono i messaggi LINT. Credo che se sei d'accordo con i tuoi compagni di squadra potresti aggiungerlo al tuo repository git.
— GabrielOshiro,

2
Intendevo usare il generico "tu", scusa. Ma con i parallelismi che deve sfuggire, ha perfettamente senso averli in un repository di origine, perché le voci si applicheranno effettivamente a tutti: i dizionari sono specifici del contenuto del progetto! Ad esempio, quando si lavora su un parser per C, tutti si imbatteranno nel problema che la parola "punteggiatura" è erroneamente contrassegnata come un errore di ortografia ... a meno che non si condivida il dizionario.

@ user824425 IntelliJ dice di fare attenzione alla cartella dei dizionari utente (per evitare conflitti se altri sviluppatori hanno lo stesso nome) - vedi intellij-support.jetbrains.com/hc/en-us/articles/…
— nealmcb

28

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

Creato da 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 

2
OK! se vuoi importare qualcosa, puoi andare su [ gitignore.io/×(https://www.gitignore.io ), può essere molto utile trovare facilmente quello che vuoi!
— xgqfrms,

1
Questo è utile ma sarebbe meglio se ti fossi appena collegato al file: ci sono già differenze nella versione online.
— Frankie Simon,

14

Per un paio d'anni sono stato un sostenitore dell'utilizzo di uno specifico .gitignoreper IntelliJ con questa configurazione suggerita .

Non più.

IntelliJ viene aggiornato abbastanza frequentemente, le specifiche interne dei file di configurazione cambiano più spesso di quanto vorrei e la nave ammiraglia JetBrains eccelle nel configurarsi automaticamente in base ai file di build di maven / gradle / etc.

Quindi il mio suggerimento sarebbe di lasciare tutti i file di configurazione dell'editor fuori dal progetto e fare in modo che gli utenti configurino l'editor a loro piacimento. Cose come lo stile del codice possono e devono essere configurate a livello di build; dire utilizzando Google Code Style o CheckStyle direttamente su Maven / Gradle / sbt / ecc.

Ciò garantisce coerenza e lascia i file dell'editor fuori dal codice sorgente che, secondo la mia opinione personale, è dove dovrebbero essere.


1
Questo è esattamente il mio punto, non dovremmo preoccuparci .gitignoresolo di JB, come ho spiegato nella mia risposta.
— Nehem,

7

Jetbrains fornisce i seguenti .gitignore per i loro programmi

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

-1

Puoi semplicemente ignorarli tutti aggiungendoli .idea/*al .gitignorefile.


-2

Pur mantenendo utile il .gitignorefile corretto , ho scoperto che questo approccio alternativo è molto più pulito e facile da usare.

  • Crea una cartella fittizia my_projecte al suo interno git clone my_real_projectl'effettivo repository di progetto.
  • Ora mentre apri il progetto in IDE (Intellij / Pycharm) apri la cartella my_projecte segna my_project/my_real_projectcome root VCS.
  • Puoi vedere my_project/.ideache non inquinerebbe il tuo repository Git perché vive felicemente al di fuori del repository Git che è quello che vuoi. In questo modo anche i tuoi .gitignorefile rimangono puliti.

Questo approccio funziona meglio a causa dei seguenti motivi.

1 - il .gitignorefile rimane pulito e non è necessario inserire linee relative ai prodotti JetBrains, tale file è meglio utilizzato per binari e librerie e contenuti autogen.

2 - Intellij continua ad aggiornare i propri progetti e i file all'interno .ideacontinuano a cambiare ogni versione significativa di JB. Ciò significa che dobbiamo continuare ad aggiornare il nostro.gitignore conseguenza il che non è un uso ideale del tempo.

3 - Intellij ha il modello difettoso qui, la maggior parte dei redattori Atom, VS Code, Eclipse ... nessuno memorizza i propri contenuti IDE direttamente nella radice del progetto. JB non dovrebbe essere un'eccezione. È compito di Jetbrains tenere traccia di quei file fuori dalla radice del progetto. Devono astenersi dall'inquinare la radice VCS. Questo approccio fa proprio questo. La .ideacartella viene mantenuta all'esterno diPROJECT_ROOT

Spero che sia di aiuto.


1
Questa risposta è completamente fuorviante. /.ideain .gitignore funziona bene; Di solito il problema verrà risolto dopo questo comando:git rm --cached -r .idea
— HosseyNJF

/.ideanon funziona, puoi controllare anche altre risposte e le linee guida ufficiali da JB
— nehem

-4
  • Rimuovere la cartella .idea

    $rm -R .idea/
    
  • Aggiungi regola

    $echo ".idea/*" >> .gitignore
    
  • Salva il file .gitignore

    $git commit -am "remove .idea"
    
  • Il prossimo commit sarà ok


7
ignorare la cartella dell'idea va bene dato che non tutti li usano e non fanno parte del tuo codice - tu (si spera) non ne hai bisogno in produzione, per esempio.
— Tom Andersen,

1
ignorare va bene, ma rimuovere è meno una buona idea. Contiene informazioni per l'area di lavoro locale.
— Foo

Sono sorpreso che questo sia sottovalutato. Cuciture per essere la migliore risposta qui!
— Hugo Rafael Azevedo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.