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