Como truco, puede intentar modificar la receta para comparar confirmaciones en dos repositorios diferentes en la página de GitTips , es decir:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)
donde ../repoes la ruta al otro repositorio.
Con Git moderno, puede usar múltiples revisiones y rangos de revisión con selección de cerebros .
El $(git --git-dir=../repo/.git rev-parse --verify <commit>)
está aquí para traducir <commit>(por ejemplo HEAD, o v0.2, o master~2, que son valores en el segundo depósito de la copia se realiza) en SHA-1 identificador de comprometerse. Si conoce SHA-1 de un cambio que desea elegir, no es necesario.
TENGA EN CUENTA, sin embargo, que Git puede omitir la copia de objetos del repositorio de origen, ya que no sabe que el repositorio de objetos alternativo es solo temporal, para una operación. Es posible que deba copiar objetos del segundo repositorio con:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects git repack -a -d -f
Esto coloca esos objetos prestados del segundo repositorio en el almacenamiento del repositorio original
No probado.
Una solución no tan hacky es seguir la respuesta de knittl :
- Vaya al segundo repositorio desde el que desea copiar las confirmaciones y genere parches a partir de las confirmaciones que desee con
git format-patch
- Opcionalmente, copie los parches (0001- * etc.) a su repositorio
- Úselo
git am --3waypara aplicar parches