Como mover uma ramificação Git para seu próprio repositório?

180

Eu tenho um ramo que gostaria de mover para um repositório Git separado e, idealmente, mantenha o histórico desse ramo no processo. Até agora eu estive olhandogit filter-branch , mas não consigo entender se é possível fazer o que quero.

Como extrair uma ramificação Git em seu próprio repositório?

Aupajo
fonte

Respostas:

281

Você pode simplesmente enviar uma ramificação para um novo repositório. Toda a sua história será acompanhada. Você pode escolher se deseja excluir a ramificação do repositório original.

por exemplo

git push url://to/new/repository.git branch-to-move:new-branch-name

Para um novo repositório, new-branch-name é geralmente mestre.

A criação de um novo repositório vazio pode ser feita com git init.

CB Bailey
fonte
15
Caso alguém esteja se perguntando, substituí a URL pelo caminho para um diretório de repositório Git, e isso funcionou perfeitamente.
Aupajo
48
Você também pode nomear o nome da filial no novo repositório: git push url://to/new/repository.git branch-to-move:new-branch-name
Yves Van Broekhoven
4
O comentário acima de Yves está correto, caso contrário você não terá um mestre lá e o processo de clonagem será concluído warning: remote HEAD refers to nonexistent ref, unable to checkout.. Se já nessa fase, basta ir com git checkout -b branch-to-movee você está seguro ou você simplesmente ir com git checkout -b masterpara ter o seu branch master :)
Ain Tohvri
git checkout -b masterresolveu o meu problema que estava na tela error: src refspec master does not match any.(só me pergunto por que não vi o nome da agência em que eu estava) Obrigado
kangkyu
2
Caso essa resposta também tenha sido confusa para você, veja como eu a entendi para fazê-la funcionar: 1) no seu terminal, esteja no diretório que contém o repositório e a ramificação que você deseja transformar em um novo repositório; 2) urldeve ser um URL do git, como [email protected]: brianzelip / groceries.git; 3) branch-to-moveé o ramo do repo atual que você deseja transformar em um novo repo; 4) new-branch-nameé o nome que deseja para o novo ramo no novo repo sendo criado, ou seja: master.
22818 Brian Zelip #
19

Isso manterá o histórico de todas as ramificações, mas faça sua cópia apontar para uma ramificação em particular:

git clone -b newbranch CurrentRepo NewRepo

Isso não "move" nada, apenas faz uma cópia.

Damon
fonte
2
Vale a pena notar que clone -bé novo. Requer git> = 1.6.5 (lançado em outubro de 2009).
CB Bailey
Eu tive problemas para fazer isso funcionar, mas isso foi antes de ver a mensagem de Charles Bailey.
Aupajo