Um projeto no GitHub do qual tenho uma bifurcação tem uma nova solicitação de puxar que quero puxar para a minha bifurcação que o autor ainda não retirou.
Existe uma maneira simples de aplicar solicitação pull de outros garfos no meu garfo? Há mais alguma coisa aqui que estou perdendo?
git
github
pull-request
alho-poró
fonte
fonte
Respostas:
Você pode fazer isso manualmente com bastante facilidade:
adicione o outro fork como um controle remoto do seu repositório:
buscar os commits de seu repo
Você tem duas opções para aplicar a solicitação de recebimento (se não quiser escolher a opção 1.)
Se você não se importa em aplicar também as confirmações eventuais que foram adicionadas entre a origem e a solicitação de recebimento, basta refazer a ramificação na ramificação na qual a solicitação de recebimento foi formada
Se você deseja apenas as confirmações na solicitação pull, identifique seu SHA1 e faça
fonte
git pull URL branchname
Atualização: Via página da Web
Você também pode fazer isso na página do github.
Suponho que você já deve ter um fork (
MyFork
) do repositório comum (BaseRepo
) que tem a solicitação de recebimento pendente de um fork (OtherFork
) do qual está interessado.OtherFork
) que iniciou a solicitação de recebimento que você deseja acessar (MyFork
)OtherFork
OtherFork
ramo adequado também. Selecione no lado esquerdo a base do garfo do garfo (MyFork
) ( IMPORTANTE ).View pull request
deve mudar paraCreate pull request
. Clique aqui.Agora você deve ter uma solicitação de recebimento pendente em seu fork (
MyFork
), que você pode simplesmente aceitar.fonte
OtherFork
, no menu suspenso 'comparar' à direita. Em seguida, selecionei o lado esquerdo como o garfo de base, conforme descrito acima, como capaz de criar a solicitação de recebimento.Como Tekkub disse anteriormente, você pode simplesmente puxar o ramo diretamente. Na maioria das vezes com o GitHub, o ramo é simplesmente "mestre" na bifurcação do usuário solicitante do projeto.
Exemplo:
git pull https://github.com/USER/PROJECT/ BRANCH
E como um exemplo prático:
Digamos que você tenha bifurcado um projeto no github chamado safaribooks e existe a seguinte solicitação de recebimento, no projeto de origem, que você deseja colocar no seu fork:
Em seguida, na pasta de projeto clonada do seu fork, execute:
fonte
git pull https://github.com/{upstream/project} refs/pull/{id}/head
.As solicitações de recebimento para o projeto podem vir de vários autores (garfos) e provavelmente você não deseja um controle remoto separado para cada bifurcação. Além disso, você não deseja fazer suposições sobre a ramificação que o autor usou ao enviar a solicitação de recebimento ou o que mais pode estar na ramificação principal do autor. Portanto, é melhor fazer referência à solicitação pull, como aparece no repositório upstream, em vez de nos outros bifurcações.
Passo 1:
Você provavelmente já executou esta etapa, mas, se não, deseja um controle remoto definido para o projeto upstream. O URL é o URL do clone do projeto que você bifurcou. Mais informações em Configurando um controle remoto para um garfo e Sincronizando um garfo .
upstream
é o nome que você está dando ao controle remoto e, embora possa ser qualquer coisa,upstream
é o nome convencional.Passo 2:
... onde
{id}
está o número da solicitação de recebimento.upstream
é o nome do controle remoto a ser retirado, ou seja, apenas "upstream" se você seguiu exatamente a etapa 1. Também pode ser um URL. Nesse caso, você pode pular a etapa 1.Etapa 3:
Digite uma mensagem de confirmação para a consolidação de mesclagem. Você pode manter o padrão, embora eu recomende fornecer um bom resumo de uma linha com o número da solicitação de recebimento, o problema corrigido e uma breve descrição:
fonte
git pull upstream refs/pull/{id}/head
para obter os commits em seu repo local, em seguida, referenciá-los comoFETCH_HEAD
(por exemplo,git log ..FETCH_HEAD
para ver o que está nele, entãogit merge FETCH_HEAD
)Algumas informações mais detalhadas que funcionaram para mim.
Meu arquivo .git / config para o repositório bifurcado tem a seguinte aparência:
Em seguida, execute "git fetch source", que listou todas as solicitações pull do repositório bifurcado.
E para mesclar uma solicitação de recebimento específica, execute "git merge master origin / pr / 67"
fonte
refs/pull/
namespace remoto somente leitura específico do GitHub .smartgit.branch.otherRefs=notes;pull
ao smartgit.properties conforme syntevo.com/doc/display/SG/System+Properties - você também pode mesclá-las a partir daí .O que eu faria é o seguinte;
Agora mesclei as alterações em uma ramificação de teste, chamada
test_fork
. Para que quaisquer alterações não sujem minha árvore.Opcionalmente, você pode usar cherry-pick como descrito acima para escolher um commit específico, se for mais preferível.
Viagens felizes :)
fonte
Eu uso um script dandy útil para isso. Eu executo o script digitando:
e obtém todas as solicitações pull do fork upstream.
Para criar o script, crie um arquivo
~/bin/git-prfetch
.O arquivo deve conter o seguinte:
Assegure-se de que seu caminho inclua o script configurando:
Você pode adicionar este arquivo a
~/.bashrc
para tornar a alteração permanente.Agora, adicione a bifurcação da qual deseja obter as solicitações pull:
E depois
fonte