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.