В качестве взлома вы можете попробовать изменить рецепт для сравнения коммитов в двух разных репозиториях на странице 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 :
- Перейдите во второй репозиторий, из которого вы хотите скопировать коммиты, и сгенерируйте патчи из нужных коммитов с помощью
git format-patch
- При желании скопируйте патчи (0001- * и т. Д.) В свой репозиторий.
- Используйте
git am --3wayдля применения патчей