Git: Архив с изменёнными файлами

В общем создавать архив вручную с изменёнными файлами сайта мне уже надоело. В инете пишут что для таких целей используют Git. Посмотрел видео, читал статьи. Научился создавать локальный репозитории, коммиты и пр. (основы в общем). Но я нигде не нашёл инфы о том (точнее нашёл, но я нечего толком не понял), как создать архив ТОЛЬКО с изменёнными файлами с сохранением путей до них (т.е с папками). Собственно в этом и вопрос. Или может есть способ легче? Например без использования Git?


Ответы (3 шт):

Автор решения: Алексей Шиманский

Можно попробовать следующую команду:

git archive -o update.zip sha1 $(git diff --name-only sha1 sha2)

sha1, sha2 - это, хэши соседних коммитов соответственно

заархивируются файлы, измененные между двумя указанными коммитами


или

git archive -o update.zip HEAD $(git diff --name-only HEAD HEAD^)

заархивируются файлы, измененных последним коммитом


Док по архивации данных гита: https://git-scm.com/docs/git-archive

→ Ссылка
Автор решения: alex

Если под Windows то вместо git'а можно использовать команду robocopy

robocopy автоматически определяет, какие файлы были изменены и копирует только их

Например, вы даёте команду робокопи на ту папку, где лежит ваш сайт. Эта папка копируется в архив, но при этом копируются только те файлы, которые изменились. Если надо полностью скопировать сайт, то тогда используется команда copy

В отличие от git команда робокопи не сохраняет историю вашего сайта по типу википедии. В википедии вы можете увидеть абсолютно все изменения страницы, точно так же как и в гит. Если вам не нужна эту функциональность и вам не надо видеть историю изменений, то вам достаточно одной команды - robocopy и затем команда - свернуть папку в архив ( при необходимости хранить именно в сжатом виде )

→ Ссылка
Автор решения: Lazy Badger

В инете пишут что для таких целей используют Git

Врут. Или, если мягче, "недоговаривают многие значимые детали" - о том, что используется определенный GUI, или о том, что это не про чистый Гит, а вообще Гитхаб с хуками, или что нужен только POSIX-shell, или репо с обеих сторон опять же с хуками

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

Но я бы посоветовал вместо этого сменить рабочий процесс веб-разработки из нулевых на что-то более вменяемое или сменить инструмент: в TortoiseHG | Mercurial мне для выполнения требуемой по задаче операции требуется 3 клика мышью или 1 консольная (родная для меруриала) команда

→ Ссылка