Что делать гитиньоре из папки .idea?

497

Возможный дубликат:
Intellij Idea 9/10, какие папки проверять (или не проверять) в системе контроля версий?

Я начал использовать WebStorm для веб-разработки и не уверен, что добавить и что исключить из нашего репозитория Git. Очевидно, что некоторые файлы внутри .ideaпапки предназначены для управления версиями, как и параметры внешней библиотеки ( jsLibraryMappings.xml), но другие, вероятно, будут меняться очень часто и зависят от разработчика (например, workspace.xml).

Каков рекомендуемый .gitignoreшаблон для WebStorm / IntelliJ IDEA?

PS Уже есть вопросы по этому поводу, но обычно они сосредоточены только на том, включать ли всю .ideaпапку или полностью исключать ее. Я думаю, что некоторые файлы внутри .ideaпапки должны контролироваться версией, а другие - нет, и я пытаюсь выяснить, какие из них.

Борек Бернард
источник
8
Я думаю, что помещать файлы IDE в систему управления версиями - плохая идея. Ваш проект будет более привязан к конкретной среде IDE, и вы сможете создавать проблемы для пользователей других сред IDE. У меня было несколько проектов с файлами IDE в VCS, и я столкнулся с трудностями. Сейчас у меня в VCS просто maven файлы, а IDEA генерирует файлы проекта и все нормально.
chalimartines
11
@chalimartines Я предпочитаю иметь все необходимое для сборки в репозитории. Поскольку мы не используем Maven, а также используем одну IDE, было бы сложно НЕ иметь .ideaфайлы в VCS.
Борек Бернард
Возможный дубликат В чем разница между «git pull» и «git fetch»?
Logz

Ответы:

433

Официальная страница поддержки должна ответить на ваш вопрос.

Таким образом, .gitignoreвы можете игнорировать файлы, заканчивающиеся на .iws, workspace.xmlи tasks.xmlфайлы и.

hifkanotiks
источник
6
Документ рекомендует «поделиться всеми файлами модуля .iml», поэтому файл .gitignore со следующими двумя строками должен быть в порядке: .idea / workspace.xml .idea / tasks.xml
Кевин Ортман
9
Правильный синтаксис, кажется,*/.idea/workspace.xml */.idea/tasks.xml
vsp
111
Лучший синтаксис**/.idea/workspace.xml **/.idea/tasks.xml
Джош Унгер
37
почему **/лучше чем */?
Vanquish46
39
@ Vanquish46: В частности, ** рекурсивно просматривает все подпапки, поэтому файлы, соответствующие критериям, также игнорируются в подпапках.
Syndog
234

Я просто хочу представить более свежую альтернативу. Существует онлайн-инструмент, который генерирует .gitignoreфайлы на основе операционных систем, IDE и языков программирования, которые вы можете использовать.

gitignore.io


РЕДАКТИРОВАТЬ Отказ от ответственности: не копируйте этот файл, вместо этого скопируйте файл, созданный на сайте, они делают хорошую работу по поддержанию его обновления. Это всего лишь пример.

Файл, созданный для IntelliJсодержит

# 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
источник
1
«По умолчанию они предлагают вам все игнорировать .idea/», - больше нет. В настоящее время сгенерированный .gitignore не имеет .idea/записи.
Николай
1
Почему вы игнорируете .idea/dictionariesпрямо?
@Rhymoid Я не знаю, почему конкретно, так как я не тот, кто предлагает .gitignore. Я просто показываю инструмент, который это делает. Я предполагаю, что это личный файл. Вы можете добавить в свой словарь материал, который может быть недопустимым для других. Особенно, когда вы очищаете сообщения LINT. Я считаю, что если вы согласны с вашими товарищами по команде, вы можете добавить его в свой репозиторий Git.
ГабриэльОширо,
2
Я намеревался использовать общее «ты», извини. Но в связи с параллелями, которые он имеет в виду, вполне разумно иметь их в репо-источнике, потому что записи на самом деле будут применяться ко всем: словари специфичны для содержания проекта! Например, при работе с синтаксическим анализатором для C каждый столкнется с проблемой, что слово «пунктуатор» ложно помечено как опечатка ... если вы не используете словарь.
@ user824425 IntelliJ говорит, что нужно быть осторожным с папкой пользовательских словарей (чтобы избежать конфликтов, если у другого разработчика такое же имя) - см. intellij-support.jetbrains.com/hc/en-us/articles/…
nealmcb
28

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

Создано 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
источник
2
ХОРОШО! если вы хотите что-то сделать, вы можете зайти на [ gitignore.io/](https://www.gitignore.io ), и вам будет очень легко найти то, что вы хотите!
xgqfrms
1
Это полезно, но было бы лучше, если бы вы просто связались с файлом - в онлайн-версии уже есть различия.
Фрэнки Саймон
14

В течение нескольких лет я был сторонником использования специального .gitignoreдля IntelliJ с этой предложенной конфигурацией .

Уже нет.

IntelliJ обновляется довольно часто, спецификации внутреннего конфигурационного файла меняются чаще, чем хотелось бы, и флагман JetBrains превосходно выполняет автоматическую настройку на основе файлов сборки maven / gradle / etc.

Поэтому я предлагаю оставить все конфигурационные файлы редактора вне проекта и предложить пользователям настроить редактор по своему вкусу. Такие вещи, как стилизация кода, могут и должны быть настроены на уровне сборки; скажем, используя Google Code Style или CheckStyle непосредственно на Maven / Gradle / SBT / и т.д.

Это обеспечивает согласованность и оставляет файлы редактора вне исходного кода, который, по моему личному мнению, находится там, где они должны быть.

Фрэнки
источник
1
Это как раз то, .gitignoreчто я имею в виду. Мы не должны беспокоиться только о JB, как я объяснил в своем ответе.
Нехем
7

Jetbrains предоставляет следующие .gitignore для своих программ

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

Вы можете просто проигнорировать их все, добавив .idea/*в .gitignoreфайл.

DinoPi
источник
-2

Хотя поддержание правильного .gitignoreфайла полезно, я обнаружил, что этот альтернативный подход намного чище и проще в использовании.

  • Создайте фиктивную папку my_projectи внутри этого git clone my_real_projectсамого репо проекта.
  • Теперь при открытии проекта в IDE (Intellij / Pycharm) откройте папку my_projectи отметьте my_project/my_real_projectкак корень VCS.
  • Вы можете видеть, my_project/.ideaчто это не загрязнит ваше git-репо, потому что оно счастливо живет за пределами git-репо, что вам и нужно. Таким образом, ваши .gitignoreфайлы остаются чистыми.

Этот подход работает лучше по следующим причинам.

1 - .gitignoreфайл остается чистым, и нам не нужно вставлять строки, относящиеся к продуктам JetBrains, этот файл лучше использовать для двоичных файлов, библиотек и содержимого автогена.

2 - Intellij постоянно обновляет свои проекты, а файлы внутри .ideaменяются с каждым новым выпуском от JB. Это означает, что мы должны постоянно обновлять наши данные, .gitignoreчто не является идеальным использованием времени.

3 - у Intellij есть некорректный шаблон, большинство редакторов Atom, VS Code, Eclipse ... никто не хранит их содержимое IDE прямо в корне проекта. JB тоже не должен быть исключением. Jetbrains несет ответственность за отслеживание этих файлов вне корня проекта. Они должны воздерживаться от загрязнения корня VCS. Этот подход делает именно это. .ideaПапка хранится внеPROJECT_ROOT

Надеюсь это поможет.

nehem
источник
1
Этот ответ вводит в заблуждение. /.ideaв .gitignore работает отлично; Обычно проблема решается после этой команды:git rm --cached -r .idea
HosseyNJF
/.ideaне работает, вы можете проверить другие ответы и официальные рекомендации от JB
Nehem
-4
  • Удалить папку .idea

    $rm -R .idea/
    
  • Добавить правило

    $echo ".idea/*" >> .gitignore
    
  • Зафиксировать файл .gitignore

    $git commit -am "remove .idea"
    
  • Следующий коммит будет в порядке

Тай ЛЕ
источник
7
игнорировать папку с идеями - это хорошо, так как не все используют их, и они не являются частью вашего кода - например, вам (надеюсь) они не нужны на производстве.
Том Андерсен
1
игнорирование - это хорошо, но удаление - не самая лучшая идея. Он содержит информацию для вашего локального рабочего пространства.
Foo
Я удивлен, что за это проголосовали. Швы, чтобы быть лучшим ответом здесь!
Уго Рафаэль Азеведо