Gitignore не игнорирует каталог .idea
Работа над проектом Symfony2 с использованием phpStorm IDE, я добавил пару файлов в git игнорировать, но один файл, несмотря на то, что он добавлен в git, игнорируется, всегда появляется.... Я пытался многократно, но его всегда там
.gitignore файл:
/app/config/parameters.yml
/bin/
/build/
/composer.phar
/vendor/
/web/bundles/
/app/bootstrap.php.cache
/app/cache/*
!app/cache/.gitkeep
/app/config/parameters.yml
/app/logs/*
!app/logs/.gitkeep
/app/phpunit.xml
#IDE metadata
**.idea/**
#Bash files
run.sh
И это папка/файлы .idea, которые git просто не будут игнорировать:
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: .idea/workspace.xml
no changes added to commit (use "git add" and/or "git commit -a")
Любая идея, почему git просто не будет игнорировать весь каталог, как я specyfied в gitignore...?
Ответы
Ответ 1
Git никогда не игнорирует изменения в отслеживаемых файлах. Поскольку он отображается как измененный, файл находится под управлением версиями (файл idea/workspace.xml обычно не должен быть), и поэтому изменения в нем отслеживаются. Удалите его из индекса, оставив свою локальную копию без изменений git rm --cached .idea/workspace.xml
и зафиксируйте это изменение. С этого момента он будет проигнорирован, если вы не добавите его обратно в репозиторий или не измените настройки gitignore.
Ответ 2
После того, как вы зафиксируете файл, он будет начать отслеживать.
Чтобы удалить файл с этого момента, вы должны удалить их из репозитория.
Теперь вам нужно удалить всю папку .idea
, зафиксировать удаление, добавить расширение idea
в файл .gitignore
.
Note
Вы все равно можете игнорировать добавленные файлы с флагом assume-unchanged
--[no-]assume-unchanged
Когда этот флаг указан, имена объектов, записанные для путей, не обновляются.
Вместо этого эта опция устанавливает /unsets бит "предполагать неизменный" для путей.
Когда бит assume unchanged
включен, пользователь promises не изменяет файл и позволяет Git предположить, что рабочий файл дерева соответствует тому, что записано в индексе.
Если вы хотите изменить рабочий файл дерева, вам нужно сбросить бит, чтобы сообщить Git.
Git завершится с ошибкой (изящно), если потребуется изменить этот файл в индексе, например. при слиянии в фиксации; таким образом, в случае, если предполагаемый-необработанный файл будет изменен вверх по потоку, вам нужно будет вручную обработать ситуацию.
Объясняя, как это сделать из командной строки, можно также выполнить через IDEA.
# Remove the file from the repository
git rm --cached .idea/
# now update your gitignore file to ignore this folder
echo '.idea' >> .gitignore
# add the .gitignore file
git add .gitignore
git commit -m "Removed .idea files"
git push origin <branch>
Ответ 3
#idea folder
.idea/
Это работало нормально для меня