Экспорт / Архивация измененных файлов только в Git


Существует ли простой способ экспортировать / архивировать только измененные файлы из данного коммита или серии коммитов в git? Я не могу найти четкие инструкции для этого (и я новичок в Linux/Git).

Я использую msysgit, и по большей части меня устраивает развертывание целых репозиториев, но во многих случаях гораздо эффективнее развертывать небольшие исправления по несколько файлов за раз.

Pushing / pulling / install git на удаленных серверах-это не совсем вариант, как мой уровень доступа варьируется между проектами и клиентами.

Есть ли прямой способ (приблизительное предположение):

pipe 'diff --names-only' to 'git-archive'? 
1 8

1 ответ:

Я не думаю, что есть необходимость привлекать git-архив. Используя --name-only, Вы можете смолить файлы:

tar czf new-files.tar.gz `git diff --name-only [diff options]`

Поскольку вы новичок в Linux, это может потребовать некоторого объяснения:

Backticks в командной строке заставляют оболочку сначала выполнить команду внутри backticks, а затем заменить вывод этой команды в командной строке tar. Поэтому сначала запускается git diff, который генерирует список имен файлов, по одному в каждой строке. Новые строки сворачиваются в пробелы и весь список файлов помещается в командной строке tar. Затем tar запускается для создания данного архива. Обратите внимание, что это может генерировать довольно длинные командные строки, поэтому, если у вас есть очень большое количество измененных файлов, вам может понадобиться другая техника.