Що робити gitignore з папки .idea?


495

Можливий дублікат:
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 генерують файли проектів, і все в порядку.
халімартини

11
@chalimartines Я вважаю за краще мати все необхідне для складання у сховищі. Оскільки ми не використовуємо Maven, а також не використовуємо єдину IDE, було б ускладненням НЕ мати .ideaфайлів у VCS.
Борек Бернар


Відповіді:


430

Офіційна сторінка підтримки повинна відповісти на ваше запитання.

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


6
Документ рекомендує "поділитись усіма файлами модулів .iml", тому .gitignore з наступними двома рядками має бути добре: .idea / workspace.xml .idea / task.xml
Кевін Ортман

9
Здається, правильний синтаксис*/.idea/workspace.xml */.idea/tasks.xml
vsp

111
Кращий синтаксис**/.idea/workspace.xml **/.idea/tasks.xml
Джош Унгер

37
чому **/краще, ніж */?
Vanquish46

39
@ Vanquish46: Більш конкретно, ** повторюється через усі підпапки, тому файли, які відповідають критеріям, ігноруються і в підпапках.
Синдог

233

Я просто хочу представити більш нову альтернативу. Існує онлайн-інструмент, який генерує .gitignoreфайли на основі операційних систем, IDE та мов програмування, якими ви можете користуватися.

gitignore.io


EDIT Відмова від відповідальності: Не копіюйте цей файл, а скопіюйте файл, згенерований на веб-сайті, замість цього вони роблять хорошу роботу щодо його оновлення. Це лише приклад.

Файл, створений для, 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

1
"За замовчуванням вони пропонують вам ігнорувати все з .idea/" - не більше. Наразі створений файл .gitignore не містить .idea/записи.
Миколай

1
Чому б ви ігнорували .idea/dictionariesпрямо?

@Rhymoid Я не знаю, чому конкретно, оскільки я не той, хто пропонує .gitignore. Я просто показую інструмент, який це робить. Я здогадуюсь, що це особистий файл. Ви можете додати в свій словник речі, які можуть не бути дійсними для інших Особливо, коли ви прибираєте повідомлення LINT. Я вважаю, що якщо ви погоджуєтесь зі своїми товаришами по команді, ви можете додати його до свого git repo.
ГабріельОширо

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 

2
ДОБРЕ! якщо ви хочете щось переконати, перейдіть до [ gitignore.io/Sense(https://www.gitignore.io ), це може бути дуже корисним для вас, щоб легко знайти те, що ви хочете!
xgqfrms

1
Це корисно, але було б краще, якщо ви просто зв’язалися з файлом - в онлайн-версії вже є відмінності.
Френкі Сімон

14

Кілька років я був прихильником використання конкретного .gitignoreдля IntelliJ з цією запропонованою конфігурацією .

Більше не.

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

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

Це забезпечує послідовність і не дозволяє редакторським файлам виходити з вихідного коду, який, на мою особисту думку, є там, де вони повинні бути.


1
Це якраз моя думка, ми не повинні поспішати .gitignoreлише за JB, як я пояснив у своїй відповіді.
nehem

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файл.


-2

Хоча підтримка належного .gitignoreфайлу є корисною, я знайшов, що цей альтернативний підхід є більш чистим та простішим у використанні.

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

Цей підхід працює краще через наведені нижче причини.

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

2 - Intellij продовжує оновлювати свої проекти, а файли всередині них .ideaпостійно змінюють кожен значний реліз від JB. Що це означає, що ми повинні постійно оновлювати своє, .gitignoreщо не є ідеальним використанням часу.

3 - Intellij має тут хибний зразок, більшість редакторів Atom, VS Code, Eclipse ... ніхто не зберігає вміст IDE прямо у корені проекту. JB також не повинен бути винятком. Завдання Jetbrains полягає в тому, щоб відслідковувати ці файли поза корінням проекту. Вони повинні утримуватися від забруднення кореня VCS. Цей підхід робить саме це. .ideaПапка зберігається позаPROJECT_ROOT

Сподіваюсь, це допомагає.


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

Я здивований, що це голосування. Тут найкраща відповідь - шви!
Уго Рафаель Азеведо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.