Apontar uma branch de um fork para a branch principal do repo original

Fork sempre atualizado !

Uma pequena dica para quando trabalhar com forks de repositórios e apontar branch principal do seu fork (ou qualquer outra) para a branch principal do repositório original.

Isso ajuda a manter seu código no fork sempre na versão mais atualizada do repositório original, permitindo que suas customizações e merges sejam mais práticos

Configurando os remotes

Após realizar o fork de um repositório e o clone para sua máquina local, você pode executar em um terminal o comando git remote -v, o mesmo ira retornar para quais remotes o repositório está apontando.

Inicialmente temos apenas o remote do nosso fork:

$ git remote -v
> origin	git@github.com:<your_git_account>/<repo>.git (fetch)
> origin	git@github.com:<your_git_account>/<repo>.git (push)

Com o comando git remote add podemos incluir um novo remote, no caso vamos adicionar o repositório original, mas poderiamos adicionar qualquer outro fork, ou apontas para nosso fork para vários serviços git ao mesmo tempo. Ao executarmos a adição e na sequência um git remote -v agora vemos que o nosso fork tem mais de um remote configurado.

$ git remote add upstream git@github.com:<origin_account>/<repo>.git
$ git remote -v
> origin	git@github.com:<your_git_account>/<repo>.git (fetch)
> origin	git@github.com:<your_git_account>/<repo>.git (push)
> upstream	git@github.com:<original_git_account>/<repo>.git (fetch)
> upstream	git@github.com:<original_git_account>/<repo>.git (push) 

Executamos um fetch para trazer todas as branchs de todos os remotes para nosso fork

git fetch upstream

Branchs atualizadas !

Agora podemos apontar a branch principal do nosso fork para o repositório original. Primeiro criamos uma branch temporária e movemos para ela:

git checkout -b tmp

Na sequência apagamos a branch principal do nosso fork:

git branch -D <main_branch_fork>

Logo após criamos novamente uma branch com o mesmo nome no nosso fork, mas apontando para a branch principal do repositório original:

git checkout upstream/<main_origin_repo> -b <main_branch_fork>

Pra finalizar excluimos a branch temporária

git branch -D tmp

Ou se preferir apenas criar uma nova branch no seu fork, mantendo a sua principal, basta criar uma nova branch:

git checkout upstream/<main_origin_repo> -b <new_branch_name>

Com isso agora podemos sempre executar um git pull <new_branch_name> ou <main_branch_fork> e teremos em nosso fork o código do repositório original atualizado.

Para mais detalhes a documentação do GitHub pode ajudar.