как заставить Git игнорировать файлы .idea, созданные Rubymine


185

Я использую Rubymine для Rails проектов. Очень часто Rubymine вносит изменения в .idea/*файлы, которые меня не интересуют. Но это мешает мне проверять новые ветки и делает мою версию .idea/отличной от моих коллег.

Мы уже добавили .idea/к .gitignore, но он продолжает отслеживать изменения в .idea. Как я должен сделать это правильно?

Ниже приведено одно из типичных сообщений об ошибках, которые я получил:

error: Your local changes to the following files would be overwritten by checkout:
    .idea/workspace.xml

9
возможно, вы уже пришли; вам нужно git rm; добавьте это, чтобы игнорировать.
Каан Гы

Ответы:


258

.idea/у меня просто отлично работает


5
всем привет! Хочешь рассказать нам больше, как ты это делаешь ... не работает для меня? :(
YoniGeek

Git работает немного по-другому. См. Страницу руководства git для получения дополнительной информации.
Стив Беннер

4
@BradBird Я только что попробовал - работает и для подпапок. Также вы можете попробовать**/.idea/
the_joric

22
Отчасти проблема в том, что если вы уже поставили свои вещи, .gitignore не поможет.
Дэн Розенстарк

12
Но если вы хотите игнорировать файлы / папки после того, как вы добавили / отметили их, вам нужно удалить их с помощью «git rm -r --cached web / uploads» (в этом примере я добавил папку «web / uploads» в .gigignore файл после того, как они были проверены в) источник: help.github.com/articles/ignoring-files
Зунг

311

Попробуйте git rm -r --cached .ideaв своем терминале. Это отключает отслеживание изменений.


2
Большое спасибо! Но почему это в кеше после того, как я извлекаю полностью пустой репозиторий?
Буди

1
Спасибо, очень полезно. Использовал это для удаления файлов, затем добавил .idea к gitignore, и он работал отлично. Спасибо вам большое!
Тим Р

Это действительно не работает, когда папка .idea уже отслеживается
ACV

Поэтому, если папка уже отслеживается в Git, добавление .idea / к .gitignore не остановит отслеживание Git. Сначала вам нужно будет выполнить «git rm -r --cached .idea», а затем добавить .idea / к вашему .gitignore. Это будет здорово для меня.
Sam003

41

Обратите внимание, что JetBrains рекомендует «Если вы решите поделиться файлами проекта IDE с другими разработчиками ...», отслеживая все .idea/*файлы, кроме следующих трех файлов :

  • workspace.xml
  • usage.statistics.xml
  • tasks.xml

Чтобы следовать их советам, вы должны добавить эти 3 файла в свой .gitignore.


Источник:

Если вы решили поделиться файлами проекта IDE с другими разработчиками, следуйте этим рекомендациям:
...
Вот что вам нужно сделать:

  • Все файлы в каталоге .idea в корне проекта , за исключением в workspace.xml , usage.statistics.xml и tasks.xml файлы настройки конкретных пользователей , которые магазин
  • ...

Как управлять проектами в системах контроля версий ( архив )

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


10
Хотя я согласен с этим ответом [+1 за правильность], я думаю , что команды, которые не являются строгими с IDE и тому подобное, могут сойти с рук, вообще не проверяя .ideaпапку ... Это все равно не имеет смысла, файлы там всегда конфликт по причинам, которые не имеют смысла.
JaKXz

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

2
Эта рекомендация плохая практика. Использование его в проекте - лучший способ создания версий файлов, которые содержат специфичную для пользователя информацию, такую ​​как абсолютный путь ... Просто загляните в свою .ideaпапку, прежде чем следовать этой рекомендации.
JBE

1
Хотя я бы согласился, что слепая фиксация файлов IDE - это всегда плохая идея, потому что слепая фиксация чего-либо - плохая идея. В некоторых случаях обмен файлами IDE может работать хорошо. Концептуально это похоже на совместное использование файлов оркестровки контейнеров тем, что они являются одним из способов запуска приложений. Точно так же, как файлы IDE являются одним из способов разработки проекта, они могут содержать полезные определения, например, как запускать модульные тесты или команды покрытия кода, аккуратно упакованные для конкретной IDE. Большинство .ideaфайлов (по крайней мере, в PyCharm) предназначены для совместного использования.
Самуэль Хармер

26

Добавьте .idea/*в свой список исключений, чтобы предотвратить отслеживание всех файлов .idea, каталогов и подресурсов.


24

если файл уже отслеживается Git, добавление файла в .gitignore не помешает Git отследить его. Сначала вам нужно выполнить git rm файл (ы), которые вас обидели, а затем добавить в .gitignore.

Добавление .idea / должно работать


Это должен быть более полный ответ!
Sam003

21

использование git rm -r --cached .ideaв вашем терминале отлично работает для меня. Он отключает отслеживание изменений и сбрасывает ряд файлов в папке rubymine (idea /), которые я затем могу добавить и зафиксировать в git, тем самым удаляя сравнение и позволяя настройке gitignore .idea/работать.


13

Закрыть PHP Storm в терминале иди в папку проекта типа

git rm -rf .idea; git commit -m "delete .idea"; git push;

Затем перейдите в папку проекта и удалите папку .idea

sudo rm -r .idea/

Запустите PhpStorm и все готово


12

В графическом интерфейсе rubymine есть список игнорирования (настройки / управление версиями). Может быть, попробуйте отключить его там. Я получил подсказку от их поддержки, ребята.

введите описание изображения здесь



8

Хотя прошло не так много времени, когда я переключился на Rubymine, я обнаружил, что ему сложно игнорировать .idea файлы Rubymine, которые были переданы в git.

Вот как я это исправил

Если вы вообще не делали никакой постановки / фиксации, или вы просто раскрутили новый проект в Ruby, то просто сделайте это

Опция 1

Добавьте строку ниже в файл .gitignore, который обычно находится в корне вашего хранилища.

# Ignore .idea files
.idea/

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

Вариант 2

Однако, если вы уже выполнили какую-то постановку / коммит или просто открыли существующий проект в Ruby, то просто сделайте это

Запустите код в вашем терминале / командной строке

git rm -r --cached .idea

Это удаляет уже отслеженные файлы .idea в git.

Затем включите .idea / в файл .gitignore, который обычно находится в корне вашего репозитория.

# Ignore .idea files
.idea/

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

Вариант 3

Однако, если вы выполнили некоторую подготовку / коммит или просто открыли существующий проект в Ruby mine и хотите полностью удалить файлы .idea локально и в git, то просто сделайте это

Запустите код в вашем терминале / командной строке

git rm -r --cached .idea

Это удаляет уже отслеженные файлы .idea в git.

Запустите код в вашем терминале / командной строке

rm -r .idea

Это удаляет все .idea файлы, включая папку локально

Затем включите .idea / в файл .gitignore, который обычно находится в корне вашего репозитория.

# Ignore .idea files
.idea/

Это гарантирует, что все файлы .idea игнорируются, отслеживаются git, а также локально удаляются из папки вашего проекта.

Вот и все

надеюсь, это поможет


4

Для меня было только одно решение удалить папку .idea, чем зафиксировать файл .gitignore с помощью ".idea" и затем снова использовать IDE.


всем привет! Я попробовал это! но IDE не может перезагрузить мои файлы снова ... как ты это сделал? Спасибо!
YoniGeek

4

Я предлагаю прочитать страницу руководства git чтобы полностью понять, как игнорировать работу, и в будущем вы меня поблагодарите;)

Относится к вашей проблеме:

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:

A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same     as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".

A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .    gitignore file, with infinite depth.

A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b",     "a/x/y/b" and so on.

Other consecutive asterisks are considered invalid.

4

Вы можете использовать gitignore для расширенной генерации файлов gitignore. Это быстро, легко и передовые теги автоматически создаются для вас.

Используйте эту ссылку для большинства программных приложений jetbrains ( intelij , phpstorm ...) .jpg

[редактировать]

Ниже приведен сгенерированный файл gitignore для ПО Jetbrains. Это позволит вам не делиться конфиденциальной информацией (паролями, хранилищами ключей, паролями БД ...), используемой любым программным обеспечением Jetbrains для управления проектами.

# Created by https://www.gitignore.io

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries

# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.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:
*.ipr
*.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

Сгенерированный код также хорошо прокомментирован. надеюсь, это поможет :)


Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.
Химаншу

@Himanshu Ссылка на поисковик файлов gitignore. Что вы предлагаете скопировать с него в пост?
Дэн Д.

4

Я пытался добавить эти файлы в свой, .gitignoreи это было бесполезно ...

Тем не менее, как сказал Петр Сыров , вы можете использовать его git rm -r --cached .ideaв своем терминале, и эти файлы больше не будут проблемой!



2

Как насчет .idea/*? Не тестировал, но должен это сделать


1

Используйте плагин .ignore : https://plugins.jetbrains.com/plugin/7495--ignore

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

  • IntelliJ IDEA
  • PhpStorm
  • WebStorm
  • PyCharm
  • RubyMine
  • AppCode
  • CLion
  • Goland
  • DataGrip
  • наездник
  • MPS
  • Android Studio

0

Если вы уже сделали первоначальный коммит и у вас есть файлы .idea, которые отображаются как новые файлы в git, вам нужно сначала удалить файлы, а затем зафиксировать их. Следующие шаги помогут вам

 1. git rm --cached -r .idea/
 2. Add .idea/ to **.git/info/exclude** or **.gitignore**
 3. git commit -m 'ignore .idea/ files'

Это подробно объясняется в этой ссылке здесь: https://devconnected.com/how-to-clear-git-cache/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.