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/

Это работало нормально для меня