Git: удаляем неотслеживаемые файлы
Если хотите удалить неотслеживаемые файлы из рабочего дерева, лучше всего использовать команду git clean
. Команда git clean
очищает рабочее дерево, рекурсивно удаляя файлы.
Разница между отслеживаемыми и неотслеживаемыми файлами
Давайте сначала выделим разницу между отслеживаемыми и неотслеживаемыми файлами.
Отслеживаемые файлы: те, которые были добавлены и зафиксированы в системе управления версиями в предыдущей фиксации или снимке. Git будет отслеживать эти файлы на предмет изменений.
Неотслеживаемые файлы: эти файлы не добавляются и не передаются в систему управления версиями.
Команда git status
покажет все изменённые отслеживаемые файлы, а также неотслеживаемые файлы.
git-clean
Команда git clean
удобна для очистки неотслеживаемых файлов.
Синтаксис
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
Команда git clean
сопровождается многими опциями. Мы рассмотрим некоторые из них.
Опции
-d
Обычно, когда не указан <path>, git clean
не будет рекурсироваться в неотслеживаемые каталоги. Если путь не указан, флаг -d рекурсивно очистит файлы во всех каталогах.
-f
--force
Если переменная конфигурации Git clean.requireforce не имеет значения false, git clean
откажется удалять файлы или каталоги, если не указано -f
или -i
. Git откажется изменять неотслеживаемые вложенные репозитории, если не указано второе -f
.
-n
–dry-run
Опция -n
ничего не удалит, это просто пробный запуск, который покажет, что будет сделано.
-X
Удаляет файлы, игнорируемые Git.
Как удалить неотслеживаемые файлы?
Перед выполнением git clean
всегда рекомендуется выполнить пробный запуск, так как это неотслеживаемые файлы, как только вы их удалите, вы не сможете их восстановить.
$ git clean -n -d
Приведённая выше команда выведет список всех файлов и каталогов, которые не отслеживаются.
Вывод
Would remove file2.txt
Would remove js/
Would remove test.txt
Удаляем файлы с помощью опции -f
Хотите удалить файлы в рабочей копии, тогда используйте опцию принудительного удаления.
$ git clean -f
Хотите удалить только неотслеживаемые файлы в определенном подкаталоге вашего проекта, тогда укажите путь к этому подкаталогу.
$ git clean -f folder/subfolder
Команда git clean
по умолчанию не удаляет каталоги. Хотите удалить каталоги, передайте флаг -d.
$ git clean -fd
В некоторых случаях, если хотите удалить какие-либо игнорируемые файлы, передавайте флаг -x.
$ git clean -fx