git clean
On this page, you will learn about the git clean command, find out the difference between git clean and git reset, see the common options and usage.

Описание
Команда git clean используется для удаления неотслеживаемых файлов из рабочей директории. В отличие от git reset и git checkout, которые работают с отслеживаемыми или подготовленными файлами, git clean специально нацелен на файлы, которые ещё не были добавлены в индекс Git. Неотслеживаемые файлы — это файлы, созданные в рабочей директории, но ещё не находящиеся под отслеживанием. Пример ниже показывает разницу между отслеживаемыми и неотслеживаемыми файлами:
git clean
mkdir test_directory
cd test_directory/
git init .
#Initialized empty Git repository in /Users/kev/code/test_directory/.git/
echo "tracked file" > ./test_tracked_file
git add ./test_tracked_file
echo "untracked" > ./test_untracked_file
mkdir ./test_untracked_dir && touch ./test_untracked_dir/file
git status
#On branch master
#No commits yet
#Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#new file: test_tracked_file
#Untracked files:
# (use "git add <file>..." to include in what will be committed)
#test_untracked_dir/
#test_untracked_fileВ результате приведённого выше примера у вас будет новый репозиторий Git в директории test_directory, который содержит test_tracked_file, добавленный в индекс Git. Кроме того, будут созданы test_untracked_file и test_untracked_dir. Затем в примере вызывается git status, который выводит состояние отслеживаемых и неотслеживаемых изменений. После этого команда git clean используется для удаления этих неотслеживаемых файлов.
Пока не запускайте git clean. Пример ниже демонстрирует ошибку, которую она по умолчанию выдаёт. Git требует использовать опцию принудительного выполнения, чтобы запускать git clean и предотвращать случайную потерю данных. После выполнения отменить git clean нельзя. Она выполняет жёсткое удаление файловой системы. Перед запуском убедитесь, что вы действительно хотите удалить неотслеживаемые файлы.
git clean error
git clean
#fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to cleanРаспространённые параметры и использование
Команда git clean имеет различные варианты использования с разными параметрами.
git clean -n
git clean -nПараметр -n выполняет пробный запуск git clean. Он показывает файлы, которые будут удалены, но не удаляет их.
git clean -n example
git clean -n
#Would remove test_untracked_fileКак видите, здесь указано, что test_untracked_file будет удалён при выполнении команды git clean.
git clean -f
git clean -f or --forceПараметр --force обязателен, если только для конфигурации clean.requireForce не установлено значение false. Он удаляет неотслеживаемые файлы из текущей директории, за исключением неотслеживаемых папок или файлов, указанных в .gitignore.
git clean --force
git clean -f
#Removing test_untracked_fileВывод показывает, что test_untracked_file был удалён. На этом этапе git status покажет, что test_untracked_file удалён и не найден. По умолчанию git clean -f будет работать со всеми неотслеживаемыми файлами в текущей директории. Кроме того, с параметром -f можно передать значение <path>, чтобы удалить конкретный файл.
Если вы хотите удалить любую неотслеживаемую директорию, можно использовать параметр -d, который указывает git clean сделать это, поскольку по умолчанию директории игнорируются.
git clean -f <path>
git clean -f <path>Также можно использовать комбинацию -dn.
git clean -dn
git clean -dn
#Would remove test_untracked_dir/
git clean -df
#Removing test_untracked_dir/Сначала показывается, что test_untracked_file запланирован к удалению. Затем мы выполняем принудительную очистку и получаем вывод о том, что test_untracked_dir удалён.
git clean -x
git clean -xПараметр -x указывает git clean также включать игнорируемые файлы. Перед окончательным удалением следует сначала выполнить пробный запуск. Параметр -x будет действовать на все игнорируемые файлы. Это могут быть нежелательные вещи, например файлы конфигурации IDE ./.idea.
git clean -xf
git clean -xfПараметр -x можно передавать и комбинировать с другими параметрами. Пример выше — это сочетание с -f, которое удалит неотслеживаемые файлы из текущей директории, а также любые файлы, которые Git обычно игнорирует.
Интерактивный режим
Команда git clean имеет интерактивный режим, который активируется передачей параметра -i. В примере ниже мы также используем параметр -d, чтобы воздействовать на test_untracked_dir. После активации интерактивного режима будет показан запрос What now>. Этот запрос потребует выбрать команду для применения к неотслеживаемым файлам. Таких команд 6.
git clean -di
git clean -di
Would remove the following items:
test_untracked_dir/ test_untracked_file
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now>Ниже мы рассмотрим каждую команду.
- Команда 6 объясняет остальные команды.
git clean steps
What now> 6
clean - start cleaning
filter by pattern - exclude items from deletion
select by numbers - select items to be deleted by numbers
ask each - confirm each deletion (like "rm -i")
quit - stop cleaning
help - this screen
? - help for prompt selection- Команда 1 удалит указанные элементы.
git clean step 1, clean
git clean -di
What now> 1
clean- Выбор команды 2 покажет дополнительный запрос для фильтрации списка неотслеживаемых файлов.
git clean filter by pattern
git clean -di
What now> 2После выбора команды 2 нам понадобится шаблон *_file, который ограничит список неотслеживаемых файлов до test_untracked_dir.
git clean steps
Would remove the following items:
test_untracked_dir/ test_untracked_file
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now> 2
test_untracked_dir/ test_untracked_file
Input ignore patterns>> *_file
test_untracked_dir/- Как и команда 2, команда 3 предназначена для уточнения списка имён неотслеживаемых файлов. Выбор этой команды предложит ввести номера, соответствующие имени неотслеживаемого файла.
git clean select by numbers
git clean -di
What now> 3- Команда 4 будет обрабатывать каждый неотслеживаемый файл и показывать запрос Y/N для подтверждения удаления.
git clean ask each
git clean -di
What now> 4
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now> 4
Remove test_untracked_dir/ [y/N]? N
Remove test_untracked_file [y/N]? N- Выбор команды 5 завершит интерактивный сеанс.
git clean quit
git clean -di
What now> 5Практика
Каковы функции и параметры команды 'git clean'?