Удаление неотслеживаемых файлов
В рабочем дереве копятся файлы, копию которых git никогда не делал: черновая
заметка, debug-output.txt, dist/ от упавшей сборки, node_modules из ветки,
которую вы бросили в прошлом месяце. У git есть для этого одна команда —
git clean — и это единственная git-операция, за которой не стоит ничего.
Содержимое никогда не было в коммите, значит нет ни записи в reflog, ни стеша, ни
отмены, ни заклинания git, которое вернуло бы всё назад.
Именно поэтому это та операция, которую люди запускают в терминале и потом жалеют. Версия Gitcito показывает весь список до того, как что-либо произойдёт.
⌘K → Удалить неотслеживаемые файлы.

Что означает список
Каждая запись — путь, до которого мог бы добраться git clean, с размером на
диске, в двух группах:
| Группа | Что это | Выбрано по умолчанию |
|---|---|---|
| Неотслеживаемые | Никогда не коммитились, не попадают под .gitignore |
Да |
| Игнорируемые | Попадают под .gitignore — результаты сборки, кеши, .env |
Нет |
В этом разделении весь смысл. Игнорируемые пути обычно ничего не стоят — и время
от времени оказываются единственной копией чего-то важного: локального .env,
дампа базы, скачанной фикстуры. Ничто, что попадает под .gitignore, никогда не
выбирается за вас.
Полностью неотслеживаемый каталог — это одна строка, а не по строке на файл —
tmp/, dist/, node_modules/ — потому что именно с такой гранулярностью git их
удаляет, а список из 40 000 файлов не читает никто. Его размер — сумма того, что
внутри.
Папка, помеченная как собственный репозиторий, имеет свой .git: клон,
который вы уронили внутрь этого, или эксперимент, который вы так и не подключили.
Git отказывается их удалять (ему нужен -ff, флаг, которого Gitcito не
предлагает) — их забирает Корзина.
Корзина или удаление
Переместить в Корзину включено по умолчанию и вообще не проходит через git: пути отправляются в системную Корзину, откуда их можно вернуть. Это единственный путь, который удаляет вложенный репозиторий, и единственный, который переживает неверно поставленную галочку.
Если это выключить, будет выполнен настоящий git clean -f -d -x ровно по
выбранным путям, с запросом подтверждения, в котором перед вами количество и общий
размер. После этого не восстанавливается ничего.
Ограничения, о которых стоит знать
- Только неотслеживаемые файлы. Изменённого отслеживаемого файла здесь нет — это Отмена изменений, которая восстанавливает его из индекса или из HEAD.
- Список ограничен первыми 400 путями. Если в репозитории их больше, удалите перечисленное и нажмите Пересканировать для остального.
- Размеры каталогов приблизительны для очень больших деревьев: сканирование
останавливается после 20 000 файлов, поэтому гигантский
node_modulesможет выглядеть меньше, чем он есть. Больше — никогда. - Сканирование — это снимок. Если во время открытого диалога сборка пишет файлы, нажмите Пересканировать, прежде чем что-либо удалять.
- Пути сверяются с собственным списком удаляемых файлов git до того, как что-нибудь будет тронуто, так что ничего отслеживаемого через этот диалог удалить нельзя даже по имени.
См. также: Индексация и отмена изменений · Игнорирование файлов · Удаление файла из истории