Периодически возникает задача передать третьим лицам изменения за последнее время в Git репозитории. В этом небольшом совете рассмотрим при помощи каких git команд можно получить разность между ветками и упаковать эти файлы в zip архив для удобной передачи.
Такой подход понадобился на достаточно большом проекте, при следующих условиях:
Очевидным решением является установить Git на сервере и настроить деплоймент, но в этом случае такое решение не подходит, на причинах мы останавливаться не будем.
Команда для создания архива с файлами по разности между двумя ветками Git:
git diff --name-status master develop | awk '{ if ($1 != "D") print $2 }' | xargs git archive -o update.zip develop
Рассмотрим подробно. У нас имеется две ветки master и develop. Ветка master содержит стабильный рабочий код, а ветка develop используется для разработки, т.е. сначала все коммиты делаем в эту ветку, а после проверки переносим в мастер.
Приведенные выше git команды находят все изменения в ветке develop, которых нет в мастере и добавляют их в архив. Архив создается в корне с именем update.zip. Краткое описание каждого действия:
Возможно Вам будет интересно