Очистить локальный кеш git

92

У меня есть проект Webstorm, который я собирался зафиксировать, но перед тем, как нажать кнопку фиксации в графическом интерфейсе Git Windows, я вспомнил, что не хочу фиксировать .ideaсодержимое папки.

Поэтому я использовал веб-сайт, который автоматически создается .gitignoresдля определенных IDE, и добавил его в свой .gitignoreфайл.

Все .ideaфайлы, которые явно игнорируются, по-прежнему отображаются для фиксации, несмотря на то, что я удалил и повторно добавил эти файлы.

Я также зафиксировал файл gitignore без каких-либо других файлов и повторно вставил свой контент, но он по-прежнему не игнорирует файлы .idea.

Как мне сказать Git обновить или очистить кеш?
Я попробовал / cd войти в указанный каталог и набрал

git clean -n

но файлы не отображаются.

Jozenbasin
источник

Ответы:

120

Все файлы .idea, которые явно игнорируются, по-прежнему отображаются для фиксации

вы должны удалить их из плацдарма

git rm --cached .idea

теперь вы должны зафиксировать эти изменения, и с этого момента они будут игнорироваться.
Как только git начнет отслеживать изменения, он не «перестанет» отслеживать их, даже если они были добавлены в .gitignoreфайл позже.

Вы должны явно удалить их, а затем зафиксировать удаление вручную, чтобы полностью игнорировать их.


введите описание изображения здесь

введите описание изображения здесь

CodeWizard
источник
3
Я никогда не фиксирую файлы, которые пытаюсь игнорировать .. Это мне подсказываетfatal: pathspec '.idea' did not match any files
jozenbasin
Когда вы вводите git status, вы их видите? WebStorm мог бы добавить их за вас, если бы вы установили флажок для автоматического добавления файлов
CodeWizard
2
Понятия не имею, но похоже, что команда, которую вы мне дали, сработала, хотя вернула фатальную ошибку ... Файлы больше не отображаются для фиксации.
jozenbasin
вы могли бы подумать о добавлении -rдля рекурсивного удаления
Vishrant
79

Если вы думаете, что ваш git испорчен, вы можете использовать эту команду, чтобы сделать все актуальным.

git rm -r --cached .
git add .
git commit -am 'git cache cleared'
git push

Также, чтобы вернуться к последней фиксации, используйте это:

git reset HEAD^ --hard
Камаль Кумар
источник
6
Не используйте git push, если вы не хотите отправлять изменения на пульт. Однако, если вы это сделали, перейдите на вкладку управления версиями в нижней части студии Android, щелкните правой кнопкой мыши предыдущую фиксацию и выберите «Сбросить текущую ветку сюда»
Swapnil
часть сброса в лучшем случае сбивала с толку. но я сделал до "git push", и все было в порядке.
Seun S. Lawal
6

если вы вносите какие-либо изменения в git ignore, вам также необходимо очистить кеш git

> git rm -r --cached . 
> git add . 
> git commit -m 'git cache cleared'
> git push

если вы хотите удалить какую-либо конкретную папку или файл, тогда

git rm  --cached filepath/foldername
Акшай Кумар
источник
3
git rm --cached *.FileExtension

Это должно игнорировать все файлы с этим расширением

Аллан Ферраз
источник
3

после этого изменения в файле git-ignore запустите эту команду, Эта команда удалит весь файловый кеш, а не файлы или изменения

git rm -r --cached.

после выполнения этой команды зафиксируйте файлы

для удаления одного файла или папки из кеша используйте эту команду

git rm --cached путь к файлу / имя папки

Акшай
источник
2

Чтобы удалить кешированный каталог .idea /. напримерgit rm -r --cached .idea

Макс Дроид
источник