Dado repo Foo y repo Bar. Quiero fusionar Bar con Foo, pero solo en una rama separada, llamada baz
.
git checkout -b baz
<= ponga el repositorio de Bar aquí.
No puede fusionar un repositorio en una rama . Puede fusionar una rama de otro repositorio en una rama de su repositorio local. Suponiendo que tiene dos repositorios, foo
y bar
ambos ubicados en su directorio actual:
$ ls
foo bar
Cambie al foo
repositorio:
$ cd foo
Agregue el bar
repositorio como un control remoto y recójalo:
$ git remote add bar ../bar
$ git remote update
Cree una nueva rama baz
en el foo
repositorio en función de su rama actual:
$ git checkout -b baz
Fusionar la rama somebranch
del bar
repositorio en la rama actual:
$ git merge --allow-unrelated-histories bar/somebranch
( --allow-unrelated-histories
no es necesario antes de la versión 2.9 de git)
--allow-unrelated-histories
al comando git merge.Actualizado con comandos de la "vida real":
Comience desde su directorio de repositorio, asegúrese de que su copia de trabajo esté limpia (no se hayan cambiado, agregado o eliminado archivos).
Haz una nueva rama:
git checkout -b <my-branch>
Agrega el control remoto secundario, luego recógelo:
Fusiona una de sus ramas en tu rama actual:
git merge <repo-name>/<their-branch>
Si no sabe lo
<their-branch>
que quiere, busquemaster
Si está seguro de que desea aceptar todos los cambios remotos y evitar conflictos ( sobrescribir los suyos ), puede especificar
-X theirs
como opcióngit merge
en el último paso.Si desea agregarlo en un subdirectorio, probablemente debería usar los submódulos git
fuente
Usando la guía de larsks, pude hacer esto usando SourceTree.
fuente