Гид по технологиям

Как полностью очистить кэш Git и убрать игнорируемые файлы

• 4 min read • GIT • Обновлено 26 Nov 2025
Очистка кэша Git — быстрое руководство
Очистка кэша Git — быстрое руководство

Фотография монитора с файлом .gitignore.

Содержание

  • Clearing the Entire Git Cache
  • Clearing a Specific File or Directory From the Git Cache
  • Clearing Cached Credentials From Git

Clearing the Entire Git Cache

Иногда .gitignore не применяется к уже отслеживаемым файлам, потому что они были добавлены в индекс ранее. Простое решение — полностью сбросить индекс (кэш) репозитория, чтобы Git заново пересчитал, какие файлы следует игнорировать.

Что делает процесс в двух строках: 1) удаляет метаданные индекса о текущих файлах, 2) добавляет файлы обратно, но уже с учётом правил .gitignore.

Откройте терминал и перейдите в папку вашего репозитория:

cd ~/your-git-repository

Сбросьте весь индекс и удалите отслеживание, сохранив файлы в рабочей директории:

git rm -r --cached .

Проверьте статус и сбросьте текущие признаки изменения (если нужно):

git reset .
git status

Добавьте файлы снова, чтобы индекс обновился с учётом .gitignore:

git add .

Создайте коммит с описанием, что индекс был сброшен:

git commit -am 'Reset the entire repository cache.'

Терминал, показывающий полностью сброшенный кэш Git.

Важно: эти команды не удаляют файлы из рабочей директории — они просто снимают с них отметку отслеживаемости в индексе.

Clearing a Specific File or Directory From the Git Cache

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

Перейдите в каталог репозитория:

cd ~/your-git-repository

Удаление одного файла из индекса (оставив файл в рабочем каталоге):

git rm --cached your-file-here.txt

Удаление директории рекурсивно из индекса:

git rm -r --cached ./your/directory/here

Проверьте статус:

git status

Терминал, показывающий процесс удаления директории из индекса.

Закоммитьте изменения, чтобы зафиксировать удаление из индекса:

git commit -am 'Removed unnecessary files from the repository.'

Убедитесь, что индекс больше не содержит проблемных записей:

file ./.git/index

Терминал с текущим статусом файла индекса репозитория.

Clearing Cached Credentials From Git

Git умеет кешировать учётные данные (credential helpers). На общем компьютере или при смене учётных данных это может стать проблемой. Ниже — безопасная последовательность действий для удаления локальных и сессионных учётных данных.

Перейдите в папку репозитория (если команды вы хотите запускать локально для конкретного репозитория):

cd ~/your-git-repository

Отключите локальный помощник по учётным данным (credential helper) для текущего репозитория:

git config --local --unset credential.helper

Завершите сессию кеша учётных данных (если используется credential-cache):

git credential-cache exit

По желанию удалите файл с учётными данными в домашней директории (если вы уверены):

rm ~/.git-credentials

После этого при следующем обращении к удалённому репозиторию Git запросит логин и пароль (или токен) снова.

Почему .gitignore может не работать

  • Файлы уже были закоммичены до добавления в .gitignore. Решение: убрать их из индекса (git rm --cached) и закоммитить.
  • Неправильный путь или синтаксис в .gitignore (пустые строки, пробелы, слэши). Проверяйте шаблоны и используйте git check-ignore -v для диагностики.
  • Глобальные правила игнорирования (core.excludesfile) перекрывают ожидания. Проверьте git config --get core.excludesfile.
  • Регистр символов (Windows vs Linux) влияет на совпадения.

Альтернативный подход

  • Если нужно временно игнорировать файл без удаления из индекса, можно использовать git update-index --assume-unchanged . Это удобно локально, но не подходит для совместной работы: другие разработчики не увидят изменения.
  • Для больших репозиториев подход с частичным сбросом (git rm --cached на конкретных поддиректориях) уменьшает риск конфликтов.

Чек-лист по ролям

  • Разработчик

    • Убедиться, что .gitignore находится в корне проекта и правила корректны.
    • Запустить git check-ignore -v для проверки.
    • Если нужно, выполнить git rm --cached и закоммитить.
  • Техлид / Мейнтейнер

    • Проверить глобальные gitignore и стандарты репозитория.
    • Добавить шаблоны в .gitignore, если это общая проблема.
  • Операции / DevOps

    • Проверить, не хранится ли чувствительная информация в репозитории и удалить её исторически при необходимости (см. git-filter-repo или BFG Repo-Cleaner для очистки истории).

Шпаргалка команд

# Полный сброс индекса
git rm -r --cached .
git reset .
git add .
git commit -am 'Reset the entire repository cache.'

# Удалить один файл из индекса
git rm --cached path/to/file.txt

# Удалить директорию из индекса
git rm -r --cached ./your/directory/here

# Отключить локальный credential helper
git config --local --unset credential.helper
# Завершить сессию credential-cache
git credential-cache exit
# Удалить файл с учётными данными (по желанию)
rm ~/.git-credentials

# Диагностика, какой шаблон игнорирует файл
git check-ignore -v path/to/file

Критерии приёмки

  • После выполнения команд git rm -r --cached . и последующего git add . файлы, указанные в .gitignore, не отображаются в git status как новые или изменённые для коммита.
  • Локальные учётные данные удалены, и при доступе к удалённому репозиторию появляется запрос аутентификации.

Когда описанные методы не подходят

  • Если требуется удалить файл из всей истории репозитория (например, секреты), простое git rm --cached недостаточно. Используйте git-filter-repo или BFG для перезаписи истории и последующего форс-пуша (force push) с учётом рисков для совместной работы.
  • Если репозиторий очень большой, полный git rm -r --cached . может быть ресурсоёмким. Рассмотрите выборочный сброс по директориям.

Простая методология для устранения проблем с .gitignore

  1. Проверить шаблоны через git check-ignore -v.
  2. Если файл уже отслеживается — выполнить git rm --cached и закоммитить.
  3. Для массовых проблем — выполнить git rm -r --cached ., затем git add . и коммит.
  4. Если в истории есть чувствительные данные — планировать очистку истории и оповестить команду.

1-строчный глоссарий

  • Индекс (index): внутренняя структура Git, где хранится информация о том, что будет в следующем коммите.
  • Кэш (cache): разговорное название индекса Git.
  • credential.helper: настройка Git для хранения учётных данных (токенов/паролей).

Риски и меры смягчения

  • Риск: удаление из индекса изменит набор файлов в следующем коммите.
    • Мягчение: проверяйте git status и делайте небольшие коммиты с понятными сообщениями.
  • Риск: удаление учётных данных приведёт к временной недоступности автоматических CI зада.
    • Мягчение: уведомите команду, обновите секреты/токены и проверьте CI после очистки.

Image credit: Gabriel Heinzer via Unsplash. Все изменения и скриншоты — Ramces Red.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро