Как сделать быстрое резервное копирование неотслеживаемых файлов, которые я хочу удалить с помощью git clean? - PullRequest
13 голосов
/ 05 марта 2011

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

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

Ответы [ 4 ]

27 голосов
/ 06 марта 2011

Следующая команда создаст архив 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 перезапишут архив, созданный непосредственно перед этим.

6 голосов
/ 05 марта 2011

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

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

1 голос
/ 05 марта 2011

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

git add .
git stash

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

0 голосов
/ 08 мая 2017

git ls-files --modified -z | xargs -0 tar rvf ~ / test-model -интеграция / backup-untracked.tar

Ну, вышеприведенная команда работает для меня.

...