¿Es posible seleccionar una confirmación de otro repositorio de git?
Estoy trabajando con un repositorio de git que necesita una confirmación de otro repositorio de git que no sabe nada del primero.
Por lo general, seleccionaría el uso de HEAD@{x}
en el reflog, pero debido a que esto .git
no sabe nada de esta entrada de reflog (directorio físico diferente), ¿cómo puedo seleccionar esto, o puedo?
Estoy usando git-svn
. Mi primera rama usa git-svn
un trunk
repositorio de Subversion y la siguiente rama usa git-svn
una rama de Subversion.
La respuesta, tal como se dio, es usar format-patch, pero como la pregunta era cómo seleccionar de otra carpeta, aquí hay un fragmento de código para hacer precisamente eso:
$ git --git-dir=../<some_other_repo>/.git \
format-patch -k -1 --stdout <commit SHA> | \
git am -3 -k
Explicación del comentario de Cong Ma del 28 de agosto de 2014.
El comando git format-patch crea un parche a partir de la confirmación de some_other_repo especificada por su SHA (-1 para una sola confirmación). Este parche se canaliza a git am, que aplica el parche localmente (-3 significa intentar la combinación de tres vías si el parche no se aplica limpiamente).
Deberá agregar el otro repositorio como remoto y luego recuperar sus cambios. Desde allí verás el compromiso y podrás seleccionarlo.
Como eso:
git remote add other https://example.link/repository.git
git fetch other
Ahora tienes toda la información para hacerlo de forma sencilla git cherry-pick
.
Cuando termine, es posible que desee quitar el control remoto nuevamente, si ya no lo necesita, con
git remote remove other
Más información sobre cómo trabajar con controles remotos aquí: https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
A continuación se muestra un ejemplo de combinación de búsqueda remota.
cd /home/you/projectA
git remote add projectB /home/you/projectB
git fetch projectB
Entonces tú puedes:
git cherry-pick <first_commit>..<last_commit>
o incluso podrías fusionar toda la rama (solo si realmente necesitas fusionar todo)
git merge projectB/master