Atendendo repo Foo e repo Bar. Quero mesclar Bar com Foo, mas apenas em um branch separado, chamado baz
.
git checkout -b baz
<= coloque o repositório do Bar aqui.
Você não pode fundir um repositório em um branch . Você pode mesclar um branch de outro repositório em um branch em seu repositório local. Supondo que você tenha dois repositórios, foo
e bar
ambos localizados em seu diretório atual:
$ ls
foo bar
Mude para o foo
repositório:
$ cd foo
Adicione o bar
repositório como um remoto e busque-o:
$ git remote add bar ../bar
$ git remote update
Crie um novo branch baz
no foo
repositório com base em qualquer que seja o seu branch atual:
$ git checkout -b baz
Mesclar branch somebranch
do bar
repositório com o branch atual:
$ git merge --allow-unrelated-histories bar/somebranch
( --allow-unrelated-histories
não é necessário antes do git versão 2.9)
--allow-unrelated-histories
ao comando git merge.Atualizado com comandos da "vida real":
Comece a partir do seu diretório repo, certifique-se de que sua cópia de trabalho está limpa (nenhum arquivo foi alterado, adicionado ou removido).
Faça uma nova filial:
git checkout -b <my-branch>
Adicione o controle remoto secundário e busque-o:
Mesclar um de seus branches em seu branch atual:
git merge <repo-name>/<their-branch>
Se você não sabe o que
<their-branch>
quer, vá paramaster
Se você tem certeza de que deseja aceitar todas as alterações remotas e evitar conflitos ( sobrescrever o seu ), você pode especificar
-X theirs
como opçãogit merge
na última etapa.Se você deseja adicioná-lo em um subdiretório, então provavelmente você deve usar submódulos git
fonte
Usando o guia de larsks, consegui fazer isso usando o SourceTree.
fonte