O que gitignore da pasta .idea?

496

Possível duplicata:
Intellij Idea 9/10, em quais pastas verificar (ou não) o controle de origem?

Comecei a usar o WebStorm para desenvolvimento na Web e não sei ao certo o que adicionar e o que excluir do repositório Git. Claramente, alguns arquivos dentro da .ideapasta devem ser controlados por versão, como as configurações da biblioteca externa ( jsLibraryMappings.xml), mas outros provavelmente serão alterados com muita frequência e são específicos do desenvolvedor (por exemplo, workspace.xml).

Qual é o .gitignorepadrão recomendado para o WebStorm / IntelliJ IDEA?

PS: Já existem perguntas sobre isso, mas geralmente se concentram apenas em incluir a .ideapasta inteira ou excluí-la totalmente. Eu acho que alguns dos arquivos dentro da .ideapasta devem ser controlados por versão, enquanto outros não, e estou tentando descobrir quais.

Borek Bernard
fonte
8
Eu acho que colocar arquivos IDE no sistema de controle de versão é uma má ideia. Seu projeto estará mais vinculado a um IDE específico e você poderá gerar problemas para usuários de outros IDEs. Eu tive alguns projetos com arquivos IDE no VCS e enfrentei complicações. Agora eu tenho no VCS apenas arquivos e IDEA gerar arquivos de projeto e está tudo bem.
chalimartines 15/08/12
11
@chalimartines Eu prefiro ter tudo o que é necessário para construir no repositório. Como não usamos o Maven e também usamos um único IDE, seria uma complicação NÃO ter .ideaarquivos no VCS.
Borek Bernard

Respostas:

431

A página de suporte oficial deve responder à sua pergunta.

Portanto, .gitignorevocê pode ignorar os arquivos que terminam com .iws, e os arquivos workspace.xmle tasks.xml.

hifkanotiks
fonte
6
O doc recomenda "compartilhar todos os arquivos de módulo .iml", assim que um .gitignore com as duas linhas a seguir deve ser fino: .idea / workspace.xml .idea / tasks.xml
Kevin Ortman
9
A sintaxe correta parece ser*/.idea/workspace.xml */.idea/tasks.xml
vsp 04/04
111
Uma sintaxe melhor é**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger
37
por que é **/melhor do que */?
usar o seguinte código
39
@ Vanquish46: Mais especificamente, o ** repete-se em todas as subpastas, para que os arquivos que atendem aos critérios também sejam ignorados nas subpastas.
Syndog
234

Eu só quero apresentar uma alternativa mais recente. Existe uma ferramenta online que gera .gitignorearquivos com base em sistemas operacionais, IDEs e linguagens de programação que você pode estar usando.

gitignore.io


EDITAR Isenção de responsabilidade: não copie este arquivo, copie o arquivo gerado pelo site, eles fazem um bom trabalho em mantê-lo atualizado. Este é apenas um exemplo.

O arquivo gerado para IntelliJcontém o seguinte

# 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
fonte
1
"Por padrão, eles sugerem que você ignore tudo .idea/" - não mais. O .gitignore atualmente gerado não tem a .idea/entrada.
Mikolaj
1
Por que você ignoraria .idea/dictionariescompletamente?
@ Rhymoid Eu não sei por que especificamente, uma vez que não sou eu quem está propondo o .gitignore. Estou apenas mostrando a ferramenta que faz isso. Meu palpite é que é um arquivo pessoal. Você pode adicionar no seu dicionário itens que podem não ser válidos para outras pessoas. Especialmente quando você está limpando mensagens LINT. Acredito que se você concorda com seus colegas de equipe, pode adicioná-lo ao seu repositório git.
GabrielOshiro
2
Eu pretendia usar o genérico 'você', desculpe. Mas, com os paralelos que ele tem para aprender, faz todo o sentido tê-los em um repositório de origem, porque as entradas de fato se aplicam a todos: os dicionários são específicos para o conteúdo do projeto! Por exemplo, ao trabalhar em um analisador para C, todos enfrentarão o problema de que a palavra "pontuador" está falsamente marcada como um erro de ortografia ... a menos que você compartilhe o dicionário.
@ user824425 IntelliJ diz para ter cuidado com os dicionários do usuário pasta (para os conflitos evitar se outro desenvolvedor tem o mesmo nome) - ver intellij-support.jetbrains.com/hc/en-us/articles/...
nealmcb
28

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

Criado 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
fonte
2
ESTÁ BEM! se você quiser algo, pode ir para [ gitignore.io/ussy ( https://www.gitignore.io ), pode ser muito útil para você encontrar facilmente o que deseja!
Xgqfrms
1
Isso é útil, mas seria melhor se você apenas vinculasse ao arquivo - já existem diferenças na versão online.
Frankie Simon
14

Por alguns anos, eu apoiei o uso de um específico .gitignorepara IntelliJ com essa configuração sugerida .

Não mais.

O IntelliJ é atualizado com bastante frequência, as especificações internas dos arquivos de configuração mudam com mais freqüência do que eu gostaria e o flagship do JetBrains é excelente ao se auto-configurar com base nos arquivos de construção maven / gradle / etc.

Portanto, minha sugestão seria deixar todos os arquivos de configuração do editor fora do projeto e fazer com que os usuários configurassem o editor ao seu gosto. Coisas como estilo de código podem e devem ser configuradas no nível da compilação; digamos, usando o Google Code Style ou o CheckStyle diretamente no Maven / Gradle / sbt / etc.

Isso garante consistência e deixa os arquivos do editor fora do código-fonte que, na minha opinião pessoal, é onde eles devem estar.

Frankie
fonte
1
Esse é exatamente o meu ponto. Não devemos nos incomodar .gitignoreapenas com JB, como expliquei em minha resposta.
nehem
7

O Jetbrains fornece o seguinte .gitignore para seus 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
fonte
-1

Você pode simplesmente ignorar todos eles adicionando .idea/*ao .gitignorearquivo.

DinoPi
fonte
-2

Embora .gitignoreseja útil manter o arquivo adequado , achei que essa abordagem alternativa é muito mais limpa e fácil de usar.

  • Crie uma pasta fictícia my_projecte dentro git clone my_real_projectdela o repositório real do projeto.
  • Agora, ao abrir o projeto no IDE (Intellij / Pycharm), abra a pasta my_projecte marque my_project/my_real_projectcomo raiz do VCS.
  • Você pode ver my_project/.ideaque não poluiria seu repositório Git porque ele vive feliz fora do repositório Git, que é o que você deseja. Dessa forma, seus .gitignorearquivos também ficam limpos.

Essa abordagem funciona melhor devido aos motivos abaixo.

1 - o .gitignorearquivo permanece limpo e não precisamos inserir linhas relacionadas aos produtos JetBrains; esse arquivo é melhor usado para binários e bibliotecas e para o conteúdo autógeno.

2 - A Intellij continua atualizando seus projetos e os arquivos internos .ideacontinuam alterando todos os lançamentos significativos do JB. O que isto significa é que temos que continuar atualizando nossa .gitignoreconformidade, o que não é o uso ideal do tempo.

3 - Intellij tem o padrão defeituoso aqui, a maioria dos editores Atom, VS Code, Eclipse ... ninguém armazena seu conteúdo IDE diretamente na raiz do projeto. JB também não deve ser uma exceção. É responsabilidade do Jetbrains manter esses arquivos rastreados fora da raiz do projeto. Eles têm que se abster de poluir a raiz do VCS. Essa abordagem faz exatamente isso. A .ideapasta é mantida fora doPROJECT_ROOT

Espero que isto ajude.

nehem
fonte
1
Esta resposta é completamente enganadora. /.ideano .gitignore funciona bem; Normalmente, o problema será resolvido depois por este comando:git rm --cached -r .idea
HosseyNJF
/.ideanão funciona, você pode verificar outras respostas e as diretrizes oficiais do JB também
nehem
-4
  • Remova a pasta .idea

    $rm -R .idea/
    
  • Adicionar regra

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

    $git commit -am "remove .idea"
    
  • O próximo commit estará ok

Tai LE
fonte
7
ignorar a pasta da ideia é bom, pois nem todos as usam e elas não fazem parte do seu código - você (espero) não precisa delas na produção, por exemplo.
Tom Andersen
1
ignorar é bom, mas remover é menos uma boa ideia. Ele contém informações para o seu espaço de trabalho local.
foo
Estou surpreso que isso tenha sido votado em baixa. Costuras para ser a melhor resposta aqui!
Hugo Rafael Azevedo