Как хак, вы можете попробовать изменить рецепт для сравнения коммитов в двух разных репозиториях на странице GitTips , то есть:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)
, где ../repo
- это путь к другому репозиторию.,
С современным Git вы можете использовать несколько ревизий и диапазонов ревизий с cherry-pick .
$(git --git-dir=../repo/.git rev-parse --verify <commit>)
здесь для перевода <commit>
(например, HEAD
, или v0.2
, или master~2
, которые являются значениями во втором хранилище, из которого вы копируете) в идентификатор SHA-1 коммита.Если вы знаете SHA-1 об изменениях, которые вы хотите выбрать, это необязательно.
ПРИМЕЧАНИЕ однако Git может пропускать копирование объектов из исходного репозитория, так как не знает, чтохранилище альтернативных объектов является временным для одной операции.Вам может потребоваться скопировать объекты из второго хранилища с помощью:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects git repack -a -d -f
Это помещает объекты, заимствованные из второго хранилища, в исходное хранилище хранилища
Не проверено.
Не очень удачное решение - следовать knittl answer :
- Перейти во второй репозиторий, из которого вы хотите копировать коммиты, и генерировать патчи из коммитов, которые выхотите с
git format-patch
- При желании скопируйте исправления (0001- * и т. д.) в свой репозиторий
- Используйте
git am --3way
для применения исправлений