Questão Como posso ressincronizar um garfo do original


Eu apenas bifurquei um projeto no Github. Fiz modificações e enviei um pedido de pull. O proprietário fundiu meu fork com o projeto principal e depois disso ele fez algumas modificações. Então, por enquanto, meu fork não é atualizado com o projeto principal. Eu sinto falta das modificações que ele fez depois de fundir o meu pedido de puxar. Como posso atualizar meu fork com o projeto Main? Existe uma maneira de fazer isso na interface da web?

obrigado


33


origem


Eu escrevo uma instrução simples. confira aqui: webapps.stackexchange.com/a/58140/63016 - Youngjae
Há agora um documento oficial que é bem feito: help.github.com/articles/syncing-a-fork - Andre Miras


Respostas:


Por design, a criação de um projeto cria um repositório separado que não é atualizado quando o repositório original é alterado. Contudo, git torna muito fácil atualizar manualmente.

Você precisa da ajuda de um terceiro repositório (sua cópia local é suficiente). Existem 3 repos:

  • "Upstream": o repositório do projeto upstream no Github.
  • "Origem": o repositório do seu fork no Github
  • "Local": seu repositório local em seu computador. Eu assumirei que você o criou clonando o Fork usando git clone git@github.com:your-username/projectname.git, e que todo mundo está usando filial master.

Presumindo que atualmente "Origem" e "Local" estejam no mesmo estado, e "Upstream" está adiantado em 1 ou mais commits (a fusão e quaisquer alterações subseqüentes).

Primeiro adicione o projeto upstream como Git remote:

git remote add upstream https://github.com/upstream-username/projectname.git

Então puxe (significando buscar e depois fundir automaticamente) as alterações do controle remoto master ramificar no atual do seu repositório local (master) ramo:

git pull upstream master

Agora seu repositório local está em sincronia com upstream. Finalmente, empurre seu repositório local para o garfo do Github:

git push origin master

Agora tudo está em sincronia.


35



Muito obrigado .. é uma pena que isso não seja possível para fazer isso na interface web .. - bAN
Isso é realmente possível na interface da web: webapps.stackexchange.com/a/31010/10390 - thSoft
Yeehaw! Eu estava arrancando meu cabelo tentando encontrar essa informação explícita. Obrigado por compartilhar! - pepoluan
... mas por favor, dê também uma olhada nos comentários da resposta, provando que o Resync via web não é a melhor opção, pois polui o repositório - usr-local-ΕΨΗΕΛΩΝ
o que você faz quando diz "já atualizado" após a atração, mas obviamente não é? (existem arquivos que eu mudei todos em um subdiretório, e eu não deveria ter diferenças em nenhum outro arquivo, mas eu faço) - roberto tomás


Você precisa adicionar um controle remoto Ajuda do GitHub) e puxe desse novo controle remoto.

git remote add mainProject https://github.com/user/mainProject
git pull mainProject master

1