Eu tenho um projeto com vários ramos. Eu os enviei para o GitHub , e agora que outra pessoa está trabalhando no projeto, preciso extrair suas ramificações do GitHub. Funciona bem no mestre. Mas diga que alguém criou um ramo xyz
. Como posso puxar ramificação xyz
do GitHub e mesclá-la em ramificação xyz
no meu localhost
?
Na verdade, tenho a minha resposta aqui: Empurre e puxe ramos no Git
Mas recebo um erro "! [Rejeitado]" e algo sobre "avanço rápido".
Alguma sugestão?
git fetch origin --force
", mas leia a documentação antes de fazê-lo.Respostas:
Isso ocorre porque o Git não pode mesclar as alterações dos ramos no seu mestre atual. Digamos que você fez check-out da ramificação
master
e deseja mesclar na ramificação remotaother-branch
. Quando você faz isso:Git está basicamente fazendo isso:
Ou seja, a
pull
é apenas afetch
seguido de amerge
. No entanto, quandopull
-ing, o Git só será mescladoother-branch
se puder executar uma mesclagem de avanço rápido . Uma mesclagem de avanço rápido é uma mesclagem na qual o cabeçalho do ramo em que você está tentando mesclar é um descendente direto do cabeçalho do ramo que você deseja mesclar. Por exemplo, se você tiver essa árvore do histórico, a mesclagemother-branch
resultará em uma mesclagem de avanço rápido:No entanto, isso não seria uma mesclagem de avanço rápido:
Para resolver seu problema, primeiro busque a ramificação remota:
Em seguida, mescle-o em sua ramificação atual (presumo que seja
master
) e corrija quaisquer conflitos de mesclagem:fonte
git fetch -f
o problema foi corrigido! Obrigado!xzy
localmaster
, que não é o que estava implícito na pergunta original; "Como posso extrair o branch xyz do GitHub e fundi-lo no branch xyz no meu host local?"Basta rastrear suas ramificações remotas explicitamente e um simples
git pull
fará exatamente o que você deseja:Esta última é uma operação local.
Ou ainda mais adequado à documentação do GitHub sobre bifurcação :
fonte
Você pode puxar uma ramificação para uma ramificação com os seguintes comandos.
Quando você está no ramo principal, também pode fazer o checkout de um ramo como:
Isso cria uma nova ramificação, "xyz", do mestre e faz o check-out diretamente.
Então você faz:
Isso puxa a nova ramificação para sua
xyz
ramificação local .fonte
A melhor maneira é:
fonte
git fetch
irá pegar a lista mais recente de ramos.Agora você pode
git checkout MyNewBranch
Feito :)
Para mais informações, consulte docs: git fetch
fonte
Não sei se entendi completamente o problema, mas puxar um ramo existente é feito assim (pelo menos funciona para mim :)
Isso pressupõe que sua filial local seja criada fora da origem / FILIAL.
fonte
Isso me ajudou a obter ramificação remota antes de mesclá-la com outra:
fonte
Simplificando, se você deseja obter do GitHub o ramo
the_branch_I_want
:fonte
Normalmente, se você tiver apenas repo atribuído ao seu código, o gitreponame seria a origem.
Se você estiver trabalhando em dois repositórios, como um local e outro remoto, como você pode verificar a lista de repositórios no git remote -v . isso mostra quantos repositórios estão atribuídos ao seu código atual.
BranchName deve existir no gitreponame correspondente.
você pode usar os dois comandos a seguir para adicionar ou remover repositórios de repositório
fonte
você também pode fazer
corrigir conflitos de mesclagem, se houver
-r é para rebase. Isso fará com que você ramifique a estrutura de
para
Isso levará a uma história mais limpa. Nota: Caso você já tenha enviado sua outra ramificação para a origem (ou qualquer outro controle remoto), pode ser necessário forçar a sua ramificação após o rebase.
fonte
eu fiz
Ao invés de
Como sugerido por @innaM. Quando usei a versão upstream, ele dizia 'fatal: Não é um nome de objeto válido:' upstream / remote_branch_name ''. Eu não fiz
git fetch origin
como um comentário sugerido, mas simplesmente substituí-loupstream
pororigin
. Eu acho que eles são equivalentes.fonte
para puxar o ramo do GitHub, você pode usar
Verifique se o nome da ramificação é exatamente o mesmo.
fonte