Неможливо ігнорувати .idea / workspace.xml - продовжує з'являтися


237

Використовуючи PHPStorm, я намагаюся ігнорувати те, workspace.xmlщо з’являється щоразу, коли я намагаюся зробити git-зобов’язання.

Моє .gitignoreвиглядає так:

/.idea/
.idea/workspace.xml

Оскільки в момент введення файлу я також виконав:

git rm --cached .idea/workspace.xml а потім здійснив зняття, підштовхнув до голого репо.

Але файл невпинно з’являється пізніше, коли я вношу зміни в проект.

Будь-які ідеї щодо того, що мені не вистачає?


Спробував усе нижче, додав до gitignore, але він все ще повертається, ігноруючи gitignore.
Олаф

Схоже, це те саме питання . Перевірте це і подивіться ...
Лука Баллор

Чек за цим посиланням: stackoverflow.com/questions/8156299 / ... . Схоже, ваша проблема.
Лука Баллор

Відповіді:


288

Я зіткнувся з тим же питанням, і це мене піднесло до стіни. Проблема зрештою полягала в тому, що папку .idea ВЖЕ ЗАВДАНО в репо, і тому вони відстежувались git незалежно від того, ви їх ігнорували чи ні. Після закриття RubyMine / IntelliJ або будь-якого IDE я рекомендую наступне:

mv .idea ../.idea_backup
rm .idea # in case you forgot to close your IDE
git rm -r .idea 
git commit -m "Remove .idea from repo"
mv ../.idea_backup .idea

Після цього не забудьте проігнорувати .idea у своєму .gitignore

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

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


Останньою командою має бути "mv ../.idea_backup .idea" замість "git mv ../.idea_backup .idea", щоб уникнути помилок git
Лео Кейсіро

2
Я маю зробити git rm .ideaзамість того, git add .ideaщоб виконувати цю роботу
Серж

Я також змінив addдля , rmале в моєму випадку я повинен додати -r, а рекурсивно видалити всі. git rm -r .idea
jmendiola

2
Нічого ... дякую !! Спробував це мільйон різних способів, безрезультатно. Це правильний покроковий підхід. Ключова різниця, що мені не вистачало, полягала в тому, щоб переконатися, що мій IDE закритий - не пропустіть цей крок! Відмінна відповідь :)
Jonny Asmar

Дякую! багато, багато часу витратили на пошуки робочих рішень і спробували кілька. Це найпростіший спосіб зробити це.
edepe

83

У мене ця проблема була саме зараз, мені довелося це зробити git rm -f .idea/workspace.xml зараз, здається, її вже немає (мені також довелося її вкласти .gitignore)


7
Я також додав би, лише задля точності, що Idea intellij слід закрити, виконуючи ці кроки.
LoreV

29

Мені довелося:

  • видаліть файл із git
  • натисніть на комісію на всі дистанційні
  • переконайтесь, що всі інші виконавці оновлено віддалено

Команди

git rm -f .idea/workspace.xml
git remote | xargs -L1 git push --all

Інші комітети повинні працювати

git pull

7
Хоча я радий за цю відповідь, я не можу не стверджувати, що було б корисніше, якби були включені інструкції щодо виконання кроків (наприклад, директиви командного рядка).
flyingace

Чек за цим посиланням: stackoverflow.com/questions/8156299 / ... . Виглядає точно як ваша проблема.
Лука Баллор

вимкнути IDE \ n git rm -f .idea / Workspace.xml \ n git commit -m "видалення робочої області.xml" \ n редагувати .gitignore виключити робочу область.xml \ n відкрити IDE
Srneczek

27

У тому ж режимі, де ви бачите файл, зробіть:

  • rm .idea/workspace.xml
  • git rm -f .idea/workspace.xml (as suggested by chris vdp)
  • vi .gitignore
  • i(для редагування), додайте .idea/workspace.xmlв один із рядків Esc,:wq

Вам має бути добре зараз


2
Або, щоб додати рядок до .gitignore, просто введіть echo .idea/workspace.xml>>.gitignore. Вам не потрібно відкривати vi для всього. Крім того, і що я б робив, - це мати окремий файл .gitignore у каталозі .idea:echo workspace.xml>>.idea/.gitignore
Godsmith

17

Щоб .idea/повністю видалити git, не впливаючи на конфігурацію IDE, ви можете просто зробити:

git rm -r --cached '.idea/'
echo .idea >> .gitignore
git commit -am "removed .idea/ directory"

6

Якщо у вас є кілька проектів у вашому git repo, .idea/workspace.xmlвони не відповідають жодному файлу.

Замість цього виконайте наступне:

$ git rm -f **/.idea/workspace.xml

І зробіть так, щоб ваш .gitignore виглядав приблизно так:

# 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

## File-based project format:
*.iws

# IntelliJ
/out/

5

Просто скажіть git, щоб не припускати, що він змінений ніколи не важливо:

git update-index --assume-unchanged src/file/to/ignore

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


0

Так, як я робив в Android Studio, який також базується на IntelliJ, був таким. У діалоговому вікні фіксації я повернув зміну для Workspace.xml, потім її перемістили у неперевершений файл. Після цього я видалив це з діалогового вікна фіксації. Тепер він не з’явиться у списку змін. Зауважте, що мій gitignore вже включав .idea / workspace.xml


0

Оскільки в моєму випадку я виконував першу фіксацію проекту, просто видалення .gitта .ideaпапки, а потім повторна ініціалізація git git initдопомогла вирішити проблему. Зараз у мене взагалі немає .idea.


0

Та ж проблема для мене з PHPStorm

Нарешті я вирішив зробити наступне:

  • Видаліть .idea / каталог
  • Перемістіть .gitignore на той самий рівень, буде новий створений .idea /
  • Напишіть файли, які потрібно ігнорувати, і .idea / теж. Щоб бути впевненим, що це буде проігноровано, я поставив наступне:

    • .idea /
    • .idea
    • .idea / *

Я не знаю, чому так працює, можливо .gitignore потрібно бути на одному рівні .idea, щоб можна було ігнорувати цей каталог.


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