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.
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.
Respostas:
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)
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:
git remote add <repo-name> git@github.com:xxx/<repo-name>.git
git remote update
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ção git merge
na última etapa.
Se você deseja adicioná-lo em um subdiretório, então provavelmente você deve usar submódulos git
Usando o guia de larsks, consegui fazer isso usando o SourceTree.
--allow-unrelated-histories
ao comando git merge.