Gabu
Gabu
Esse que voz fala!

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:

1
2
3
$ git remote -v
> origin	[email protected]:<your_git_account>/<repo>.git (fetch)
> origin	[email protected]:<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.

1
2
3
4
5
6
$ git remote add upstream [email protected]:<origin_account>/<repo>.git
$ git remote -v
> origin	[email protected]:<your_git_account>/<repo>.git (fetch)
> origin	[email protected]:<your_git_account>/<repo>.git (push)
> upstream	[email protected]:<original_git_account>/<repo>.git (fetch)
> upstream	[email protected]:<original_git_account>/<repo>.git (push) 

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

1
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:

1
git checkout -b tmp

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

1
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:

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

Pra finalizar excluimos a branch temporária

1
git branch -D tmp

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

1
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.

comments powered by Disqus