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


92

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

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

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

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

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

git clean -n

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

Ответы:


120

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

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

git rm --cached .idea

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

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


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

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


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-ignore запустите эту команду, Эта команда удалит весь файловый кеш, а не файлы или изменения

git rm -r --cached.

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

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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.