Recentemente, participei de um projeto do GitHub. Eu fiz o seguinte:
Bifurcou o repositório original, clonou-o na minha máquina local, fiz um branch para corrigir o bug existente, consertou o bug que estava naquele branch, empurrei esse branch para o meu repo, enviei uma solicitação de pull para o autor do repositório para mesclar meu branch de correção para seu ramo mestre.
Foi a primeira vez que me comprometi com o código de outra pessoa, então não sei o que fazer. Agora minha solicitação pull foi mesclada ao repositório / projeto original do autor.
O que eu devo fazer a seguir? Devo excluir o ramo? Devo mesclar o branch? Algo mais?
Informação adicional:
O projeto original possui uma única ramificação.
Eu também tenho um upstream definido para obter as atualizações mais recentes do repositório original. (Eu fiz assim) :
git remote add upstream https://path/to/original/repo.git
E eu recebo atualizações como esta:
git fetch upstream
:)
Respostas:
O que fazer a seguir é: continuar contribuindo com novos recursos ou consertando outros bugs em seus próprios branches dedicados (enviados apenas para seu fork).
O que significa que o garfo fica, mas os galhos dentro do garfo podem ir e vir.
Você também pode remover a bifurcação se não estiver planejando contribuir mais, mas isso removerá a entrada correspondente em 'Repositórios para os quais você contribui' .
É mais fácil:
fix
branch (na verdade, agora ele foi excluído para você ) em seu fork (e em seu repositório clonado local: consulte " Excluir um branch Git local e remotamente ")git pull upstream master
(semaster
foi o branch no qual sua correção foi integrada: a fusão será rápida): nenhum rebase necessário neste ponto.master
(agora com o mais recente deupstream master
).No entanto, nunca se esqueça de uma etapa antes de enviar qualquer solicitação pull futura :
rebase primeiro seu branch atual (
fix
) do branch de destino upstream(
upstream
sendo o repo original que você bifurcou: veja " Qual é a diferença entre origem e upstream no github ")Antes de enviar qualquer coisa de volta para o repo original ("upstream"), você precisa se certificar de que seu trabalho é baseado no último do dito repo original (ou a solicitação de pull não resultará em uma mesclagem de avanço rápido uma vez aplicada de volta ao
upstream
repo).Veja, por exemplo, " Fluxo de trabalho para gerenciar solicitações pull em repositórios compartilhados no github ".
Em outras palavras,
upstream
pode evoluir (ter novos commits enviados) enquanto você está ocupado consertando coisas. Você precisa repetir suas correções sobre o trabalho mais recente do upstream para ter certeza de que seus commits ainda são compatíveis com o mais recente deupstream
.O OP Santosh Kumar pergunta nos comentários :
Se você não fez nenhuma nova correção desde sua solicitação pull recente, veja acima (exclua e recrie um novo branch
fix
em cima do atualizadomaster
).Se você tiver feito mais algum trabalho desde sua solicitação de pull, eu não faria a mesclagem de
upstream
se quiser fazer uma nova solicitação de pull: eu puxaria e rebasearia :Dessa forma, todo o meu novo trabalho local é reproduzido em cima dos
upstream
master
commits mais recentes (obtidos em meu repositório local), supondo quemaster
seja o branch de destino que integrará minha solicitação de pull futura.Em seguida, posso enviar meu trabalho local para '
origin
', que é minha bifurcação no GitHub doupstream
.E da minha bifurcação no GitHub, posso fazer uma solicitação de pull com segurança, sabendo que só adicionará novos commits
upstream
sem a necessidade de qualquer resolução de mesclagem: mesclar esses novos commits noupstream
repo significará uma mesclagem simples e rápida.A
git pull --rebase
sem especificar o branch no topo do qual você deseja realocar seufix
branch (atualmente em check-out) não funcionaria:Sim, você pode especificar o branch que será o alvo da solicitação de pull, por exemplo '
master
'.Isso não excluirá seu
fix
branch, mas irá reproduzi-lo em cima do upstreammaster
obtido em seu repo.fonte
You asked to pull from the remote 'upstream', but did not specify a branch.
Devo acrescentarmaster
finalmente? E o que isso fará ?, excluirá meu branch de correção ?Em primeiro lugar, parabéns pela sua primeira contribuição para um projeto no Github.
O fluxo de trabalho normal do Github é criar um novo branch para cada problema que você resolver. Dessa forma, o mantenedor do repositório principal pode decidir qual de suas soluções fundir e qual rejeitar. Depois que um branch foi mesclado com o upstream, ele não será mais necessário e normalmente pode ser excluído.
fonte