2012-01-26 2 views
11

Мне нужно экспортировать в архив набор коммитов в репозитории git. Как это сделать? Используя svn, я мог бы выбрать фиксацию и экспорт в zip.Git: получить конкретную фиксацию

+0

Вы имеете в виду экспортные различия этих коммитов? – CharlesB

+0

Да, теперь я понимаю, что это было непросто понять. Мне нужен архив с большинством файлов обновлений между 2 коммитами. – user1170896

ответ

18

Чтобы экспортировать в хранилище до определенного фиксации:

git archive -o export.zip <COMMIT>. Замените <COMMIT> номером фиксации, который вы хотите экспортировать.

Чтобы создать патч между двумя фиксаций:

git diff COMMIT1 COMMIT2 > patch.txt

+0

Я, хотя эта команда будет экспортировать каждую фиксацию в репозиторий до тех пор, пока не будет найдена указанная фиксация. Мне нужно экспортировать только указанные фиксации. Как патч. – user1170896

+0

Ответ отрегулирован. – tobiasbayer

+0

ok ... Но патч предназначен для использования в другом репозитории. Он содержит разметку, чтобы понять, где были сделаны модификации. Мне нужен архив только с измененными (обновленными) файлами между указанными коммитами. – user1170896

10

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

Команда, которую вы хотите, это git format-patch и способ, которым вы применяете эти отформатированные исправления обратно в git с помощью команды git am.

Например, если у вас есть два коммиты C1 и Cn, которые вы хотите экспортировать в виде набора GIT патчей вам нужно всего лишь:

git format-patch -k C1..Cn 

Это создаст набор пронумерованных патчи (в текущем каталоге). Каждый патч будет отличаться от фиксации, а также от информации о фиксации (название, комментарий, автор, дата и т. Д.).

Это намного больше, чем простой файл diff между двумя коммитами, которые предоставят вам.

+0

Я думаю, что это должно быть 'git format-patch -k C1 ~ ..Cn' вместо' git format-patch -k C1..Cn', потому что левая часть диапазона _exclusive_, поэтому вы должны дать _parent_ ('~') первого коммита. – nh2

Смежные вопросы