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/master
Como 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/master
Depois 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