Ответ 1
В качестве взлома вы можете попробовать изменить рецепт сравнения коммитов в двух разных репозиториях на странице 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
для применения исправлений.