Git создавать полные патчи файлов для загрузки / распространения? - PullRequest
9 голосов
/ 11 февраля 2011

Либо я схожу с ума, либо никому не понравилась / не понравилась эта функция, но давным-давно я использовал subversion с системой sourceforge. У меня была возможность создавать полные патчи файлов для коммитов.

Я никак не могу понять, как создать их в git, все, что мне нужно, это файлы, которые были изменены с XX коммита, и только эти файлы целиком, чтобы я мог передать их кому-либо / загрузить только эти файлы в определенное место .

В настоящее время я застрял, перезагружая весь проект, потому что у меня нет ничего, что говорило бы мне, что было изменено. Поскольку мы также используем общий веб-хостинг, невозможно получить git на сервере без обновления до более дорогого пакета.

Я пробовал

git archive --output=/home/username/temp.zip <commit id>

, который поместил все в почтовый индекс, но он сделал это, он все сложил. Также пробовал вариант формата-патча, но это не сработало.

Ответы [ 2 ]

15 голосов
/ 11 февраля 2011

Кажется, я неправильно понял, что вы хотели в моем другом ответе. git archive может взять список путей для включения в архив, поэтому вы можете сделать:

git archive -o /tmp/foo.zip HEAD $(git diff --name-only oldcommit HEAD)

Если ваши имена файлов содержат удивительные символы, было бы безопаснее:

git diff -z --name-only oldcommit HEAD | xargs -0 git archive HEAD -o /tmp/blah.zip --
3 голосов
/ 11 февраля 2011

Первое, что нужно попробовать, это сохранить вывод git diff, что может быть достаточно в вашей ситуации:

git diff oldcommit > test.patch

Если вы изменили двоичные файлы с тех пор, вы можете попробовать:

git diff --binary oldcommit > test-with-binaries.patch

В этом случае вам нужно будет применить патч с git apply.В противном случае я бы создал новую ветвь на основе oldcommit, произвел бы сдавленное слияние с master, зафиксировал результат и использовал бы git format-patch для создания патча.Этот метод (и несколько других решений вашей проблемы) более подробно описаны в ответах на этот похожий вопрос stackoverflow: Как вы вводите коммиты в один патч с помощью git format-patch?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...