Мне нужно написать сценарий, который создает патчи для списка номеров SHA1 коммитов.
Я пробовал использовать git format-patch <the SHA1>
, но при этом создавались патчи для каждого коммита, начиная с этого SHA1. После создания нескольких сотен патчей мне пришлось убить процесс.
Есть ли способ генерировать патч только для определенного SHA1?
Попробуйте:
git format-patch -1
или
git format-patch -1 HEAD
Согласно приведенной выше ссылке на документацию, флаг -1
указывает git'у, сколько коммитов должно быть включено в патч;
-
Готовьте патчи из самых верхних
коммитов.
Примените патч с помощью команды:
git am < file.patch
Для генерации патчей из самых верхних
git format-patch -<n> <SHA1>
Последние 10 патчей из head в одном патч-файле:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
Эта команда (как уже предлагалось @Naftuli Цви Кей):
git format-patch -1 HEAD
<суп>заменить "голова" с конкретными хеш или диапазон.</SUP и ГТ;
будет генерировать файл патч для последнего коммита, отформатированные напоминать формат почтового ящика Unix.
-<п>
- подготавливать патчи от высшей <п> совершает.
Затем вы можете повторно применить патч в почтовый ящик в формате:
git am -3k 001*.patch
git format-patch commit_Id~1..commit_Id
git apply patch-file-name
Быстрое и простое решение.
Если вы хотите быть уверены патч (один коммит) будут применяться на определенный коммит, вы можете использовать git-репозиторий, 2.9 (июнь 2016) формат-патч в Git опция --база
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
См. совершить bb52995, совершают 3de6651, совершают fa2ab86, совершают ded2c09 (26 апреля 2016) на Сяолун Йе (`).
<суп>(объединяются по Джунио с Hamano -- gitster
-- в совершить 72ce3ff, 23 мая 2016 года) в</SUP и ГТ;
формат-патч
добавить '--базы
' возможность записи базы дерево информация
разработчики или сторонние тестеры могут хотите знать точное основание дерево серии патч применяется. Учить формат-патч в Git это '
--базы
' вариант для записи базы инфо дерева и добавить его в конце первого сообщение (либо в сопроводительном письме или первый патч в серии).
базовая информация дерево состоит из группы «основание совершения", который является известный коммит, который является частью стабильной частью истории проекта все остальное работает, и или более " нулю;условие патчи", который является известные патчи в полете, что пока не входит в "Основание совершения и" которые должны быть применены на вершине "и основание фиксации" в топологическом порядке перед патчи, может быть применено.
в "Основание совершения" это показано как " База фиксации: в
" с последующим 40-шашни фиксация имя объекта. А "предпосылкой патч" это показано как "
обязательное условие-патч-код: в" с последующим 40-наговор на "патч идентификатор", который может быть получен путем пропускания патч через "
в ГИТ патч-код, стабилен в`" команда.
ГИТ 2.23 (3-й квартал 2019) будет улучшаться, потому что в "--база в
" вариант "в формате-патч в
" вычислить патч-коды для необходимых исправлений в неустойчивом пути, который был обновлен, чтобы вычислить в пути, который совместим с "ГИТ патч-код, стабилен в
".
См. совершить a8f6855, совершают 6f93d26 (26 апреля 2019) по Стивен Бойд (akshayka
).
<суп>(объединяются по Джунио с Hamano -- gitster
-- в совершить 8202d12, 13 июня 2019)</SUP и ГТ;
формат-патч##``: пусть--база патч-код выхода стабильный
мы не'т топить контекст каждый раз, когда мы обрабатывали куском в патч-идентификационный код поколения в дифф.С
, но мы делаем это, когда мы созданный на "стабильный" и патч-коды с ' патч-идентификатор
' инструмент.
давайте's порт, что подобная логика от патч-код.С
в
дифф.ц так мы можем получить тот же хэш-когда мы'патч-идентификаторы создает для 'формат-патч --базы=
' типы вызовами команды.
Перед git 2.24 (4 квартал 2019), на "в Git формат-патч -о <outdir>
" и сделал эквивалент "в команды mkdir <outdir>
" и не "в команды mkdir -Р <outdir>
", который корректируется.
См. совершить edefc31 (11 октября 2019 г.) Wesarg Берт (bertwesarg
).
<суп>(объединяются по Джунио с Hamano -- gitster
-- в совершить f1afbb0, 18 октября 2019)</SUP и ГТ;
формат-патч
: создание ведущих компонентов выходной каталог<суп>подпись от владельца: Wesarg Берт</SUP и ГТ;
'в Git формат-патч -о
' сделали эквивалент 'команды mkdir ' Не 'команды mkdir -Р ', которая корректируется.
избегать использования '
adjust_shared_perm
' на ведущих каталогов, которые могут иметь последствия для безопасности. Достигается путем временного отключения 'конфигурации.sharedRepository
', Как 'ГИТ инит
' не.
Как создать патч только для конкретного алгоритма SHA1?
Это'ы довольно простой:
Вариант 1. ГИТ показать commitID > мой_файл.патч
Вариант 2. ГИТ commitID~1..commitID > мой_файл.патч
Примечание: замените commitID
с фактическим идентификатором (SHA1 для фиксации кода).