Випадково скоєні файли каталогів .idea в git


306

Я випадково вклав .idea/каталог в git. Це викликає конфлікти скрізь, де мені потрібно перевірити репо. Мені було цікаво, як видалити ці файли з пульта?

Мені ще потрібні локальні файли, оскільки вони потребують IDE Intellij. Я просто не хочу їх у пульт. Я додав каталог .idea/до свого .gitignoreі здійснив і перемістив цей файл у віддалений. Це, здається, не має ніякого ефекту під час оформлення замовлення на моїй іншій машині. Я все ще отримую повідомлення про помилку:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml

10
Ви можете допомогти уникнути цього, переглянувши свої зобов'язання. Я вважаю за краще бігти commitз, -vщоб показати різницю у вашому редакторі, коли ви пишете команду. Це допомагає запобігти подібному роду помилок, а також допоможе вам зосередити своє повідомлення про те, що ви змінили.
Daenyth

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

1
Усі файли, крім двох .idea, повинні знаходитись у контролі джерела: devnet.jetbrains.com/docs/DOC-1186
cja

Я вважаю плагін IntelliJ .ignore дуже корисним, коли ви хочете керувати всіма файлами, які не повинні бути скоєні git: plugins.jetbrains.com/plugin/7495?pr=idea
paranza

Привіт, в чому шкода, якщо у нас є .idea у віддаленому сховищі?
мілад салімі

Відповіді:


676

Додайте каталог .idea до списку ігнорованих файлів

По-перше, додайте його .gitignore, щоб він (чи хтось інший) не повторився випадково:

.idea

Видаліть його з сховища

По-друге, видаліть каталог лише зі сховища, але не видаляйте його локально. Щоб досягти цього, виконайте те, що вказано тут:

Видаліть файл із сховища Git, не видаляючи його з локальної файлової системи

Надішліть зміну іншим

По-третє, скопіюйте .gitignoreфайл та видаліть його .ideaіз сховища. Після цього натисніть на пульт (и).

Підсумок

Повний процес виглядатиме так:

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(необов'язково ви можете замінити останній рядок на git push some_remote, де some_remoteє назва пульта, на який ви хочете натиснути)


4
Примітка. Якщо ви отримаєте повідомлення fatal: pathspec '.idea' did not match any filesпід час запуску git rm -r --cached .idea, видаліть папку .idea, витягніть з github і повторіть спробу.
annedroiid

Якщо ви отримаєте @annedroiid помилку "не відповідає жодним файлам", ви можете спробувати додати її шлях. Як і коли я видаляв файл database.yml, я просто робив 'git rm -r - cached config / database.yml'
Ruto Collins

Деякі файли в каталозі .idea повинні бути зареєстровані у вашому репо. Дивіться пропозиції github.com/github/gitignore/blob/master/Global/… щодо пропозицій JetBrains про те, як повинен виглядати ваш .gitignore.
tokenizer_fsj

2
Я не можу отримати цю папку з нашої репо за життя мене ... перемикання гілок продовжує повторно відстежувати її ... люди запускали це на декількох гілках і в будь-який час, коли ви перемикаєте гілки ... git думає, що це потрібно .. У якийсь момент ... видаліть свою папку .idea, так .. коротше кажучи ... перемикання гілок зараз - це в основному налаштування, які ми очищаємо. Я спробував запустити його на майстрах ... потім об'єднавшись у всі гілки .., але фотографії - це витирання налаштувань.
nawlbergs

1
Чи є у нас постійне рішення для цього, щоб налаштувати IntelliJ на НІКОЛИ не додавати .ideaпапку для фіксації файлів?
Серхат

88

Ви можете вийняти його з репо і вчинити зміни.

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

Після цього ви можете натиснути на пульт і кожен кас / клон після цього буде нормальним.


10
Це працювало для мене, на відміну від прийнятої відповіді. Можливо, саме це змінило git add -u.
Паоло Міоні

Вам не потрібен 2-й рядок.
kjdion84

Як казали інші, я не запускав другий рядок. Працював як шарм! дякую
blackkara

0

Ви повинні додати .gitignore файл до свого проекту та додати /.ideaйого. Ви повинні додати кожен каталог / файл в одному рядку.

Якщо у вас є файл .gitignore, вам слід просто додати до нього новий рядок і помістити /.ideaв новий рядок.

Після цього запустіть git rm -r --cached .ideaкоманду.

Якщо ви зіткнулися з помилкою, можете запустити git rm -r -f --cached .ideaкоманду. Після запуску, git add .а потім git commit -m "Removed .idea directory and added a .gitignore file"і, нарешті, натисніть на зміни, виконавши git pushкоманду.


0

Краще виконати це над відділенням Master

Редагувати .gitignore файл. Додайте до нього рядок нижче.

.idea

Видаліть папку .idea з віддаленого репо. за допомогою команди нижче.

git rm -r --cached .idea

Для отримання додаткової інформації. довідка: Видалення файлів із сховища Git без фактичного їх видалення

Етап .gitignore файл. Використовуючи команду нижче

git add .gitignore

Здійснити

git commit -m 'Removed .idea folder'

Натисніть на віддалений

git push origin master

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