Como você atualiza um fork do repositório GitHub na interface da web?

58

Eu tenho um repositório do Github que eu peguei de outro projeto há alguns meses. Agora, alguns meses depois, o repo master original foi alterado. Gostaria de atualizar meu repositório para refletir essas alterações. Isso é possível na interface da web do Github? Ou só preciso excluir o repositório e re-bifurcá-lo?

Jake Wilson
fonte

Respostas:

43

Você pode tentar reverter como as solicitações pull acontecem.

  1. Vá para o seu garfo
  2. Emitir uma solicitação pull

    Por padrão, este será o seu fork à direita ( repositório principal ) solicitando envio de confirmações e alterações no repositório original ( repositório base ) à esquerda.

  3. Clique no menu suspenso do repositório base e do repositório principal e selecione os repositórios um do outro.

    Você quer o seu listado à esquerda (aceitando alterações) enquanto o repositório original está à direita (aquele com alterações a serem pressionadas). Conforme ilustrado nesta imagem:

    garfo feito sobre si mesmo

  4. Enviar a solicitação de recebimento

    Se o seu garfo não tiver sofrido alterações, você poderá aceitar automaticamente a mesclagem.

Se o seu código de alguma forma entrar em conflito ou não for suficientemente limpo, isso não funcionará para atualizar através da interface da web do GitHub e você precisará pegar o código e resolver quaisquer conflitos na sua máquina antes de voltar ao seu fork.

Oito Dias de Mal-estar
fonte
3
Isso ainda funciona, mas sim, não é o ideal. Definitivamente é apenas um truque. Não é a maneira correta de fazer isso.
Jake Wilson
3
Confirmou uma má ideia. Isso polui o repositório de uma maneira que o Github sugere que você solicite um commit vazio para o projeto original. Veja, por exemplo, github.com/dthommes/RoboSpring/pull/3 - Depois de contribuir, sincronizei e agora o Github quer que eu envie um commit "Syncing my fork" rotulado como "Merge pull request # 1 de dthommes / master … "
usr-local-
1
Acho que isso não funciona mais. Embora pareça um pouco estranho, não há uma maneira simples de fazer isso.
Toby Allen
1
Eu apenas tentei e não pareceu funcionar imediatamente - ao trocar um dos garfos, ele imediatamente abriu uma página "Comparando alterações". Mas clicar no link "comparar entre garfos" permite alterar o outro garfo de qualquer maneira. Talvez você possa adicionar algo nesse sentido à sua resposta.
Peter Mortensen
4
GitHub deve adicionar um botão "Sync Fork" assim que você don "t tem que criar um milhão de PRs Por agora eu estou usando a linha de comando para atualizar meus garfos.
Suici Doga
22

Vai ser mais fácil.

  1. Vá para o repositório bifurcado (seu) e basta clicar no botão - "Nova solicitação de recebimento".
  2. Na página que é aberta, há um pequeno link para "base de comutação" na mensagem abaixo das seleções suspensas. Clique no link.
  3. Agora, ele levará automaticamente ao seu repo original. Clique no botão Criar solicitação pull e escreva alguma mensagem de confirmação.
  4. Agora, ele levará ao seu repositório bifurcado automaticamente, clique em Mesclar solicitação de recebimento e Confirmar mesclagem para concluir.
Youngjae
fonte
Você deve esclarecer o que os botões verdes são e seria uma grande resposta ....
Rodrigo Graça
Esta é definitivamente a melhor resposta a partir de 4/2016.
dr01
7
O problema com esse método é que ele adiciona uma confirmação extra à sua ramificação, portanto não está realmente sincronizada com o repositório upstream.
Mottie
@Ottie Existe uma maneira de sabermos se nossa bifurcação está por trás da versão mais recente do upstream e ver uma diferença das mudanças, sem realmente puxá-las?
Sujay Phadke
1
@SujayPhadke Na página principal do repositório de bifurcações, abaixo do botão de seleção da ramificação, aparecerá uma mensagem "Esta ramificação é xx confirmada por trás de xxxx: master". Quanto à visualização do diff, existe um botão "comparar" na mesma linha da mensagem; ou você pode acessar este link:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie 15/12
3

Como atualizar um repositório bifurcado do GitHub com alterações no repositório remoto upstream


Instruções da Ajuda do GitHub:

Configurando um garfo remoto

Sincronizando um garfo


Instruções de configuração / operação:

Abra o Git Bash (Windows) ou o terminal Linux / Mac

Se você ainda não clonou seu repositório, deve-se mudar para o diretório ativo da sua pasta de desenvolvimento e cloná-lo na sua estação de trabalho.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Mude para o diretório de trabalho do seu repositório bifurcado em sua estação de trabalho.

$ cd /user/development/my_forked_repo/

Liste o repositório remoto configurado atualmente para o seu fork.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Especifique um novo repositório upstream remoto que será sincronizado com o fork.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Verifique o novo repositório upstream que você especificou para o seu fork.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Busque as ramificações e suas respectivas confirmações no repositório upstream. As confirmações para mestre serão armazenadas em uma filial local, a montante / mestre.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Confira a filial principal local do seu garfo.

$ git checkout master

Switched to branch 'master'

Mesclar as alterações do upstream / master em sua filial principal local. Isso sincroniza a ramificação principal do seu fork com o repositório upstream, sem perder as alterações locais.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Se sua filial local não tiver nenhum commit exclusivo, o Git executará um "avanço rápido":

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Agora você precisará enviar os commit para o seu fork.

$ git push

Se você ainda não está autenticado, ele solicitará seu nome de usuário / senha do github. Uma vez autenticados, os novos commits devem ser enviados para o fork e visíveis no github.

ode2k
fonte
5
Obrigado por sua resposta detalhada, no entanto, a esperança era de uma solução usando a interface da web.
Toby Allen