6

У меня есть каталог, содержащий репозиторий git, а также другие несвязанные файлы, которые я не хочу отслеживать (это мой домашний каталог, извините, если это плохая практика - приветствуются альтернативные рекомендации для управления версиями профиля bash и файлов vim!)

Я могу легко удалить каталог .git, но это оставляет меня со всеми отслеживаемыми файлами в моем каталоге. Как мне удалить все отслеживаемые файлы, чтобы я мог полностью удалить git repo и соответствующие файлы, эффективно "отсекая" или "удаляя"?

Кроме того, после удаления этих файлов как удалить все каталоги, которые раньше содержали отслеживаемые файлы, но теперь они пусты?

Связанный (противоположный вопрос): Git: Как удалить все неотслеживаемые файлы

2 ответа2

10

Для файлов вы можете немного изменить командную строку на предлагаемую командную строку на странице git-rm

git ls-files -z | xargs -0 rm -f

Это намного безопаснее с более сложными путями к файлам. Для каталогов вы можете попробовать подобную стратегию:

git ls-tree --name-only -d -r -z HEAD | sort -rz | xargs -0 rmdir 

Однако это зависит от того, как вы хотите обращаться с каталогами, которые содержат файлы (часто gitignored), которые не отслеживаются. Приведенная выше командная строка должна оставлять эти файлы и их каталоги.

Но было бы легко изменить это, чтобы удалить каталог, независимо от его содержимого.

1

Вы можете запросить у git список всех отслеживаемых файлов с помощью git ls-files . Итак, следующая команда должна работать нормально

git ls-files | xargs rm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .