Eu tenho um projeto hospedado no GitHub que alguém bifurcou. No garfo, eles criaram um novo ramo "foo" e fizeram algumas alterações. Como puxo o "foo" deles para um novo ramo também chamado "foo" no meu repositório?
Entendo que eles poderiam enviar uma solicitação de recebimento para mim, mas eu gostaria de iniciar esse processo pessoalmente.
Suponha o seguinte:
- Porque eles bifurcaram meu projeto, ambos os nossos repositórios compartilham a mesma 'história'
- Embora o GitHub mostre que o projeto foi bifurcado do meu, meu repositório local não tem nenhuma referência ao projeto dessa pessoa. Preciso adicionar o deles como controle remoto?
- Ainda não tenho um ramo chamado "foo" - não sei se preciso criá-lo manualmente primeiro.
- Eu definitivamente quero que isso seja puxado para um ramo separado e não meu mestre.
fonte
git://
URL da página de repositório do GitHub da outra pessoa no lugar de//path/to/coworkers/repo.git
. (Descrevendo que foi o que fez a minha resposta muito lenta;))Não, você não precisa adicioná-los como um controle remoto. Isso seria complicado e uma dor para fazer a cada vez.
Agarrando seus commits:
Isso cria um ramo local chamado,
ournameforbranch
exatamente o mesmo quetheirbranch
era para eles. Para o exemplo da pergunta, o último argumento seriafoo:foo
.Observe que
:ournameforbranch
parte pode ser deixada de lado se pensar em um nome que não entre em conflito com um de seus próprios ramos é incômodo. Nesse caso, uma referência chamadaFETCH_HEAD
está disponível. Você podegit log FETCH_HEAD
ver os commits deles e fazer coisas comocherry-picked
escolher os commits.Empurrando de volta para eles:
Muitas vezes, você quer consertar algo deles e empurrá-lo de volta. Isso também é possível:
Se o trabalho em estado desanexado o preocupa, crie um ramo usando
:ournameforbranch
e substituindoFETCH_HEAD
eHEAD
acima porournameforbranch
.fonte
master
ramo)git branch -m newbranch
enquanto estiver nesse estado desanexado, o git perderá a cabeça e começará a dizer que seu repo não é mais válido.git init
parece corrigi-lo e colocá-lo de volta mais ou menos no estado em que estava antes, com o ramo chamado "newbranch".Se a resposta da Antak:
da-te:
Então (seguindo o conselho de Przemek D) use
fonte
A seguir, é uma boa solução conveniente que funciona com o GitHub para verificar a ramificação PR do fork de outro usuário. Você precisa saber o ID da solicitação de recebimento (que o GitHub exibe junto com o título do PR).
Exemplo:
Corrigindo seu código inseguro # 8,
Alice deseja mesclar 1 commit
your_repo:master
deher_repo:branch
Substitua o seu controle remoto, se diferente de
origin
.Substitua
8
pelo ID da solicitação de recebimento correto.fonte
O GitHub tem uma nova opção em relação às respostas anteriores, basta copiar / colar as linhas de comando do PR:
Merge
ouSquash and merge
view command line instructions
fonte
Se o repositório bifurcado estiver protegido para que você não possa empurrá-lo diretamente, e seu objetivo é fazer alterações no foo deles, será necessário colocar o branch foo no repositório da seguinte maneira:
Agora você tem uma cópia local do foo sem o upstream associado a ele. Você pode confirmar alterações (ou não) e depois enviar seu foo para seu próprio repositório remoto.
Agora, foo está no seu repositório no GitHub e seu foo local está rastreando-o. Se eles continuarem fazendo alterações em foo, você pode buscá-los e fundir-se a ele.
fonte