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.