Artigo original: How to Overwrite Local Files with Git Pull
Tradução realizada em português europeu
Se sentires a necessidade de descartar todas as alterações locais e simplesmente começar de novo/substituir tudo por uma cópia de uma ramificação (do inglês, branch) remota, deves seguir este guia.
Importante: caso tenhas alguma alteração local, ela será perdida. Com ou sem a opção --hard, quaisquer commits locais que ainda não foram enviados serão perdidos.
Se tiveres algum ficheiro que não seja rastreado pelo Git (por exemplo, conteúdo carregado pelo utilizador), ele não será afetado.
O fluxo de substituição:
Para substituir os teus ficheiros locais, faz:
git fetch --all
git reset --hard <remoto>/<nome_da_ramificacao>Por exemplo:
git fetch --all
git reset --hard origin/masterComo funciona:
git fetch descarrega a versão remota mais recente sem tentar fazer merge ou rebase de nada.
De seguida, o git reset redefine a ramificação principal para o que acabaste de procurar. A opção --hard altera todos os ficheiros no fluxo de trabalho para corresponderem aos ficheiros em origin/master.
Informação adicional:
Vale a pena notar que é possível manter os commits locais atuais ao criar uma ramificação do master ou qualquer outra ramificação na qual queiras trabalhar antes de redefinir:
Por exemplo:
git checkout master
git branch nova-ramificacao-para-guardar-os-commits-atuais
git fetch --all
git reset --hard origin/masterDepois disso, todos os commits antigos serão mantidos em nova-ramificacao-para-guardar-os-commits-atuais. No entanto, alterações em que não se fez o commit (nem se colocou em stage), serão perdidas. Certifica-te que fazes stash e commit a tudo o que precisares.
Atribuições:
Este artigo é baseado numa pergunta feita no Stack Overflow