Garfoi um repositório GitHub. Então eu coloquei algumas alterações no meu garfo. Em seguida, o repositório original mesclou minhas alterações e outras. Agora, quero mesclar as alterações que estão faltando. Eu tentei um simples pull seguido de push, mas isso rende meus commits em duplicado. Qual é a melhor maneira de fazer isso?
Você provavelmente tem um "remoto" para cada repositório. Você precisa puxar de um controle remoto e empurrar para o outro.
Se você clonou originalmente no seu fork, esse controle remoto será chamado de "origem". Se você ainda não o adicionou, precisará adicionar o repositório da primeira pessoa como outro controle remoto:
Depois que tudo estiver configurado, você poderá realmente
git pull firstrepo master
git push origin
Lembre-se, git pullnada mais é do que uma macro que faz git fetche git merge, nessa ordem. Você só precisa buscar a lista de confirmações no repositório da primeira pessoa e depois mesclar o ramo delas na sua árvore. A fusão deve fazer a coisa certa com seus commits nos dois ramos.
O GitHub, em toda sua grandiosidade perpétua, fornece um atalho, é claro. Há um botão de "avanço rápido" em sua bifurcação do repositório que você pode usar para encontrar sua bifurcação se estiver totalmente fundido no outro lado.
Existe uma maneira de fazer isso inteiramente com operações remotas? Se bem entendi, com esse método, você fará o download de todas as alterações no repositório local e, em seguida, carregará (enviará) todas de volta para a bifurcação no github. Prefiro, de alguma forma, puxar todas as alterações diretamente para o fork no github.
22711 Ken Liu
1
Não. O Git não suporta isso. Felizmente, o Github agora tem um botão de mesclagem na interface da web.
cweiske
13
@cweiske - onde fica esse botão Mesclar? Eu olhei por todas as páginas de administração e páginas principais, mas não consigo encontrá-lo :(.
Adam
2
@ Adam, está na página Pull Request. Portanto, o falsificador abriria uma solicitação de recebimento para mesclar um de seus ramos a um dos seus. Lá você pode clicar no botão mesclar.
Rob Barreca
2
O botão Avanço rápido não parece mais estar disponível. Para obter informações, usei outra URL git dentro do meu comando:git remote add snaury [email protected]:snaury/script-runner
olibre 5/12/13
72
Portanto, a resposta aceita acima não funcionou perfeitamente para mim. Nomeadamente, parecia perder o link para o autor original do github quando funcionava, e depois não parecia mais funcionar depois disso. Acho que o problema foi que a resposta deixou de fora o / entre o nome remoto e o ramo. Por isso, buscaria uma ramificação chamada master no controle remoto, mas não conseguiria fazer nada com ela. Não tenho muita certeza do porquê.
Depois de clonar seu repositório bifurcado, é necessário adicionar um controle remoto apontando para o original, como a resposta anterior disse. Eles gostam de chamá-lo a montante, mas isso não importa.
Então você só precisa escolher a ramificação na qual deseja mesclar. Lembre-se de que não são ramificações locais, elas são armazenadas em controles remotos. Mas, desde que você não tenha uma filial local chamada upstream / master (o que é permitido), você deve se unir bem à linha abaixo:
git merge upstream/master
Como alternativa, você pode atalho a busca / mesclagem (após a busca inicial pelo menos) com esta linha:
O problema é que, se você já possui alterações, as alterações incorporadas criarão uma confirmação de mesclagem. Útil em alguns casos, mas na maioria das vezes um pouco inútil.
Pablo Olmos de Aguilera C.
1
Em aqueles casos de uso git rebaseque iria funcionar muito melhor, e deixar de fora aqueles commits mesclagem vazias feias
git remote add snaury [email protected]:snaury/script-runner
Portanto, a resposta aceita acima não funcionou perfeitamente para mim. Nomeadamente, parecia perder o link para o autor original do github quando funcionava, e depois não parecia mais funcionar depois disso. Acho que o problema foi que a resposta deixou de fora o / entre o nome remoto e o ramo. Por isso, buscaria uma ramificação chamada master no controle remoto, mas não conseguiria fazer nada com ela. Não tenho muita certeza do porquê.
Aqui está a maneira como o github recomenda em seu site .
Depois de clonar seu repositório bifurcado, é necessário adicionar um controle remoto apontando para o original, como a resposta anterior disse. Eles gostam de chamá-lo a montante, mas isso não importa.
Então você busca
e você verá as versões disponíveis para mesclar
Então você só precisa escolher a ramificação na qual deseja mesclar. Lembre-se de que não são ramificações locais, elas são armazenadas em controles remotos. Mas, desde que você não tenha uma filial local chamada upstream / master (o que é permitido), você deve se unir bem à linha abaixo:
Como alternativa, você pode atalho a busca / mesclagem (após a busca inicial pelo menos) com esta linha:
fonte
git rebase
que iria funcionar muito melhor, e deixar de fora aqueles commits mesclagem vazias feias