Случайно переданные файлы каталогов .idea в git

306

Я случайно ввел .idea/каталог в git. Это вызывает конфликты везде, где мне нужно оформить репо. Мне было интересно, как я могу удалить эти файлы с пульта?

Мне все еще нужны эти файлы локально, так как они нужны Intellij IDE. Я просто не хочу их в пульте. Я добавил каталог .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
Sethu
источник
10
Вы можете помочь избежать этого в будущем, просмотрев ваши коммиты. Я предпочитаю работать commitс, -vчтобы показать diff в вашем редакторе, когда вы пишете коммит. Это помогает предотвратить подобные ошибки, а также помогает сосредоточить сообщение о коммите на том, что вы изменили.
Дейнит
Дейнит прав. Плюс Git по умолчанию требует, чтобы вы добавляли файлы в список зафиксированных изменений, так что воспользуйтесь этим и не фиксируйте все сразу. В противном случае вы будете загрязнять свой репозиторий, как это произошло, добавив .ideaв него.
Tadeck
1
Все файлы в .idea, кроме двух, должны находиться в системе контроля версий
cja
Я обнаружил, что плагин IntelliJ .ignore очень полезен, когда вы хотите управлять всеми файлами, которые не должны быть переданы в git: plugins.jetbrains.com/plugin/7495?pr=idea
paranza
Привет, что в этом плохого, если у нас есть .idea в удаленном хранилище?
милад салими

Ответы:

677

Добавить каталог .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этим именем удаленными вы хотите , чтобы нажать на)

Tadeck
источник
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'
Руто Коллинз
Некоторые файлы в каталоге .idea должны быть зарегистрированы в вашем репо. Смотрите github.com/github/gitignore/blob/master/Global/… для получения информации о том, как должен выглядеть ваш .gitignore, JetBrains.
tokenizer_fsj
2
Я не могу вытащить эту папку из нашего репо на всю жизнь ... переключение веток постоянно отслеживает ее ... люди запускали ее на нескольких филиалах, и каждый раз, когда вы переключаете ветви ... git считает, что это необходимо ... ... в какой-то момент ... удалите папку .idea, так что ... короче ... переключение веток теперь в основном для нас. Я попытался запустить его на master ... затем объединить во всех ветках .. но все еще стирает настройки.
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, который сделал разницу.
Паоло Миони
Вам не нужна вторая строка.
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

Это лучше выполнить над мастер веткой

Отредактируйте файл .gitignore. Добавьте ниже строку в нем.

.idea

Удалить папку .idea из удаленного репо. используя команду ниже.

git rm -r --cached .idea

Для получения дополнительной информации. ссылка: удаление файлов из репозитория Git без их фактического удаления

Сцена .gitignore файл. Используя команду ниже

git add .gitignore

совершить

git commit -m 'Removed .idea folder'

Нажмите на пульт

git push origin master

rahulnikhare
источник