В гите есть встроенные средства для создания и накладывания патчей. Но по умолчанию git не сохраняет сообщения коммитов "как есть" и изменяет время коммитов на время, когда были наложены патчи. Из-за этого меняются хэши коммитов. Что особенно неприятно если у вас есть два репозитория и один является субмодулем (git submodule) другого (т.к. основной репозиторий проверяет актуальность субмодуля именно по хэшу, который в данном случае не будет совпадать).
Чтобы сохранить комментарии и время коммитов патч нужно формировать командой:
Накладывать полученный патч следует командой (одной строкой):
UPD: если использование патчей не является обязательным условием, а нужен механизм синхронизации репозиториев как таковой, то возможно вам стоит копнуть в сторону git bundle.
Чтобы сохранить комментарии и время коммитов патч нужно формировать командой:
git format-patch -k --stdout $HASH > ./patch_fileГде $HASH — хэш коммита, начиная с которого изменения необходимо сохранить в патче.
Накладывать полученный патч следует командой (одной строкой):
GIT_COMMITTER_NAME='Paul' GIT_COMMITTER_EMAIL='paul@example.com' git am -k --committer-date-is-author-date < patch_fileГде Paul — имя автора коммитов из патча, paul@example.com — адрес его почты (как указано в конфиге гита).
UPD: если использование патчей не является обязательным условием, а нужен механизм синхронизации репозиториев как таковой, то возможно вам стоит копнуть в сторону git bundle.
0 коммент.:
Подписаться на:
Комментарии к сообщению (Atom)