Экспорт / архивирование измененных файлов только в Git
Вопрос
Есть ли простой способ экспортировать / заархивировать только измененные файлы из данного коммита или серии коммитов в git?Кажется, я не могу найти четких инструкций для этого (а я новичок в Linux / Git).
Я использую msysgit, и по большей части меня устраивает развертывание целых репозиториев, но во многих случаях гораздо эффективнее развертывать небольшие исправления по нескольку файлов за раз.
Нажатие / вытягивание / установка git на удаленных серверах на самом деле не вариант, поскольку мой уровень доступа варьируется в зависимости от проектов и клиентов.
Есть ли прямой способ (приблизительное предположение):
pipe 'diff --names-only' to 'git-archive'?
Решение
Я не думаю, что есть какая-либо необходимость задействовать git-archive.Используя --name-only
, вы могли бы настроить файлы:
tar czf new-files.tar.gz `git diff --name-only [diff options]`
Поскольку вы новичок в Linux, возможно, этому потребуется некоторое объяснение:
Обратные ссылки в командной строке заставляют оболочку сначала выполнить команду в обратных ссылках, затем заменить выходные данные этой команды в командной строке tar
.Таким образом , git diff
запускается первым, который генерирует список имен файлов, по одному в каждой строке.Новые строки сворачиваются до пробелов, и весь список файлов помещается на tar
командная строка.Тогда tar
запускается для создания данного архива.Обратите внимание, что это может привести к появлению довольно длинных командных строк, поэтому, если у вас очень большое количество измененных файлов, вам может понадобиться другой метод.