Artigo original: Git Reset to Remote Head – How to Reset a Remote Branch to Origin

A ramificação é um conceito central no Git. Ela pode ajudá-lo a configurar um fluxo de trabalho distribuído para colaboração em equipe e tornar seu processo de desenvolvimento mais eficiente.

Quando você está usando o controle de versão e distribuindo recursos entre branches, há muita comunicação entre seu computador local e seu repositório on-line no GitHub. Durante esse processo, talvez seja necessário redefinir a cópia original do projeto.

Se redefinir uma ramificação (em inglês, branch) assusta você, não se preocupe – este artigo apresentará branches remotas, remote head e como você pode redefinir facilmente uma branch remota para remote head.

Pré-requisitos

  • Conhecimento básico de como usar um terminal.
  • Git instalado (aprenda como instalar Git aqui, caso ainda não o tenha instalado).
  • Conhecimento básico de GitHub e repositórios.
  • Um sorriso em seu rosto. 😉

O que é uma branch no Git?

Uma branch é um conceito central no Git e no GitHub que você usará o tempo todo. As branches ajudam você a gerenciar diferentes versões de um projeto.

A branch main  é sempre a branch padrão em um repositório e é considerada o "código de produção e implementável". Você pode criar novas branches como prod-staging ou prod-current a partir da branch main.

Screenshot-2021-02-27-at-7.19.26-PM
Todas as branches em https://github.com/freeCodeCamp/freeCodeCamp

O que é uma branch remota no Git?

Uma branch remota é uma referência ao estado das branches em um repositório remoto (uma versão do seu projeto hospedada na internet ou em uma rede como o GitHub).

Quando você clona um repositório, você extrai dados de um repositório na Internet ou de um servidor interno conhecido como remote (algo como (remote)/(branch)).

O que é origin (ou remote head) no Git?

A palavra origin é um alias que o Git criou para substituir o URL remoto de um repositório remoto. Ele representa a branch padrão em um repositório remoto e é uma referência local que representa uma cópia local do HEAD no repositório remoto.


Em resumo, origin/HEAD representa a branch padrão no repositório remoto, que é definida automaticamente quando você clona um repositório da Internet.

Screenshot-2021-03-08-at-8.23.47-AM

Como redefinir uma branch remota para origin no Git

Agora que você tem conhecimento prévio de como os repositórios remotos e branches funcionam, vamos resolver nosso problema e redefinir uma branch remota para a origem usando o comando git reset --hard .

Antes de fazer isso (se for a primeira vez), certifique-se de fazer back-up de sua branch antes de redefini-la caso algo dê errado. Você pode fazer back-up assim:

git commit -a -m "Branch de back-up"
git branch branch-backup

Agora, execute o comando abaixo para redefinir sua branch remota para a origem. Se você tiver um nome de branch remota e padrão diferente (que não seja origin ou main, respectivamente), basta substituí-los pelo nome apropriado.

git fetch origin
git reset --hard origin/main

Se você criou alguns arquivos ou diretórios novos, eles ainda podem permanecer após a redefinição. Você pode usar o comando abaixo para limpar a árvore de trabalho removendo recursivamente os arquivos da ramificação anterior que não estão sob controle de versão.

git clean -xdf
  • A flag -x   remove todos os arquivos não rastreados, incluindo diretórios de compilação ignorados.
  • A flag -d  permite que o Git verifique recursivamente diretórios não rastreados quando nenhum caminho for especificado.
  • A flag -f   substitui a configuração de limpeza padrão do Git e inicia a limpeza de arquivos e diretórios não rastreados.

Conclusão

Se o nome do seu repositório remoto não for "origin" e se a branch nomeada não for "main" no repositório remoto, não se esqueça de atualizar os comandos acima com os nomes apropriados. Você sempre pode executar  git remote show origin para verificar isso.

Espero que este artigo tenha deixado você mais à vontade para trabalhar com branches e redefini-las. Não se esqueça ingressar no novo servidor de bate-papo do freeCodeCamp para interagir com outros alunos e fazer perguntas. Obrigado pela leitura! 💙