Как сделать быстрое резервное копирование необработанных файлов, которые я хочу удалить с помощью git clean?

У меня много незатребованных файлов. Я уверен, что большинство из них я могу удалить, однако... вы знаете, резервное копирование может быть полезно;)

Что вы делаете в подобной ситуации?

Ответ 1

Следующая команда создаст tar-архив в вашем домашнем каталоге всех неисследованных (и не проигнорированных) файлов в вашем каталоге:

git ls-files --others --exclude-standard -z | xargs -0 tar rvf ~/backup-untracked.tar

Если вы собираетесь использовать эту технику, внимательно проверьте, что git ls-files --others --exclude-standard самостоятельно создает список ожидаемых файлов!

Несколько замечаний по этому решению могут быть в порядке:

  • Я использовал -z, чтобы получить git ls-files для вывода списка файлов с NUL (нулевой байт) в качестве разделителя между файлами и параметра -0 в xargs. он должен рассматривать NUL как разделитель между параметрами, которые он считывает со стандартного ввода. Это стандартный трюк, чтобы иметь дело с возможностью того, что имя файла может содержать новую строку, поскольку только два байта, которые не разрешены в именах файлов в Linux, это NUL и /.

  • Если у вас есть огромное количество незатрещенных файлов, то xargs будет запускать команду tar более одного раза, поэтому важно, чтобы я сказал tar добавлять файлы (r) скорее чем создать новый архив (c), иначе более поздние вызовы tar будут перезаписывать созданный ранее архив.

Ответ 2

Как правило, если они когда-нибудь будут полезны, тогда вы должны их проверить! Если они вам не нужны прямо сейчас, проверьте их и удалите! IE, отслеживать их как удаленные файлы. Таким образом, вы сможете восстановить их позже, если решите, что они вам понадобятся.

Помните, что основным правилом использования системы управления версиями является "track all". Небольшие изменения, разбитые изменения (в ветке) и т.д. Вы никогда не знаете, когда вам могут понадобиться эти файлы или изменения, поэтому используйте свою систему VC, чтобы убедиться, что вы не можете их потерять.

Ответ 3

Используйте git-stash, но сначала вы должны отслеживать их. Если theyre явно игнорируется, они не будут добавлены.

git add .
git stash

Теперь все неиспользуемые файлы спрятаны и удалены из рабочего каталога. Если это было неверно, используйте git stash pop, добавьте и скопируйте те, которые хотите сохранить, и повторите.

Ответ 4

git ls-files --modified -z | xargs -0 tar rvf ~/test-model-integration/backup-untracked.tar

Ну, эта команда работала для меня.