Como um hack, você pode tentar modificar a receita para comparar commits em dois repositórios diferentes na página GitTips , ou seja:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)
onde ../repoé o caminho para o outro repositório.
Com o Git moderno, você pode usar várias revisões e intervalos de revisão com a escolha certa .
O $(git --git-dir=../repo/.git rev-parse --verify <commit>)
está aqui para traduzir <commit>(por exemplo HEAD, ou v0.2, ou master~2, que são valores no segundo repositório do qual você copiou) no identificador SHA-1 de confirmação. Se você conhece o SHA-1 de uma alteração que deseja escolher, não é necessário.
NOTE, entretanto, que o Git pode pular a cópia de objetos do repositório de origem, pois ele não sabe que o repositório de objetos alternativos é apenas temporário, para uma operação. Pode ser necessário copiar objetos do segundo repositório com:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects git repack -a -d -f
Isso coloca os objetos emprestados do segundo repositório no armazenamento do repositório original
Não testado.
Uma solução não tão hacky é seguir a resposta knittl :
- Vá para o segundo repositório do qual deseja copiar os commits e gere os patches dos commits que deseja
git format-patch
- Opcionalmente, copie os patches (0001- * etc.) para o seu repositório
- Use
git am --3waypara aplicar patches