як зробити 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; додайте його для ігнорування.
Kaan Yy

Відповіді:


257

просто .idea/добре працює для мене


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

Git працює трохи інакше, ніж це. Для отримання додаткової інформації див. Сторінку git man .
Стів Беннер

4
@BradBird Я просто спробував це - працює і для папок. Також ви можете спробувати**/.idea/
the_joric

22
Частина проблеми полягає в тому, що якщо ви вже влаштували свої речі, .gitignore не допоможе.
Дан Розенстарк

12
Але якщо ви хочете ігнорувати файли / папки після того, як ви додали / зареєстрували їх, тоді вам потрібно видалити їх за допомогою "git rm -r - кешованих веб / завантажень" (у цьому прикладі я додав папку "web / uploads" у .gigignore файл після реєстрації) Джерело: help.github.com/articles/ignoring-files
Гній

311

Спробуйте git rm -r --cached .ideaу своєму терміналі. Це відключає відстеження змін.


2
Дуже дякую! Але чому це в кеші після того, як я оформив повністю порожнє сховище?
Буді

1
Дякую, надзвичайно корисно. Використовував це для видалення файлів, потім додав .idea до gitignore, і він працював чудово. Дуже дякую!
Тім R

Це насправді не працює, коли папка .idea вже відслідковується
ACV

Тож якщо папка вже відстежується в Git, додавання .idea / в .gitignore не зупинить Git відслідковувати її. Вам потрібно спочатку зробити "git rm -r --cached .idea", а потім додати .idea / у свій .gitignore. Це мені буде чудово.
Sam003

41

Зауважте, що JetBrains рекомендує "Якщо ви вирішили поділитися файлами проектів IDE з іншими розробниками ...", відстежуючи всі .idea/*файли, крім трьох наступних файлів :

  • workpace.xml
  • use.statistics.xml
  • task.xml

Отже, щоб дотримуватися їхніх порад, ви додали б ці 3 файли у свій .gitignore.


Джерело:

Якщо ви вирішили поділитися файлами проектів IDE з іншими розробниками, дотримуйтесь цих вказівок:
...
Ось що вам потрібно поділитися:

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

Як керувати проектами в системах управління версіями ( архів )

На цій сторінці є деякі додаткові примітки про те, які інші файли слід відстежувати для різних специфічних IDE і побудов Jetbrains.


10
Хоча я погоджуюся з цією відповіддю [+ 1'd для коректності], я думаю, що команди, які не суворі з 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

У губі рубіїну є список ігнорування (налаштування / контроль версій). Можливо, спробуйте відключити його там. Я отримав підказку від їх хлопців із підтримки.

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



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 і хочете повністю видалити .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 man, щоб повністю зрозуміти, як ігнорувати роботу, і в майбутньому ви подякуєте мені;)

Відповідна до вашої проблеми:

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 ...) .titignore file.

[редагувати]

Нижче створений файл gitignore для програмного забезпечення Jetbrains, це не дозволить вам ділитися конфіденційною інформацією (паролі, сховища ключів, паролі db ...), яка використовується будь-яким із програмного забезпечення 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
  • Кліон
  • 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.