Como reverter para a versão do arquivo da ramificação principal da origem


425

Estou na ramificação principal do meu computador local de uma ramificação master clonada de um repositório a partir de um servidor remoto.

Atualizei um arquivo e quero voltar à versão original a partir da ramificação principal remota.

Como posso fazer isso?

Respostas:


874

Supondo que você não confirmou o arquivo ou o adicionou ao índice, então:

git checkout -- filename

Supondo que você o adicionou ao índice, mas não o confirmou, então:

git reset HEAD filename
git checkout -- filename

Supondo que você o tenha comprometido, então:

git checkout origin/master filename

Supondo que você queira eliminar todos os commits do seu ramo (MUITO DESTRUTIVO):

git reset --hard origin/master

43
Sua terceira opção é muito diferente das duas primeiras opções, pois toca todos os arquivos e não apenas um. Você pode apontar isso mais explicitamente. Além disso, por que não recomendar git checkout HEAD filenamee, git checkout origin/master filenamepara as opções um e dois, seria mais consistente?
CB Bailey

5
@CharlesBailey: adicionei a git checkout origin/master filenameopção à resposta do gahooa.
Frank

2
@cilphex que afugenta todos os commits em sua ramificação atual
WattsInABox

1
Eu acidentalmente refiz o branchA fora do branchB e precisava redefinir para dominar o branch local. git reset --hard mastersozinha foi minha solução, já que não queria chegar à origem. Obrigado.
Tb

3
@gahooa Provavelmente deveria ser git checkout - filename, e se o arquivo for chamado de "master", você terá um comportamento que não foi planejado.
user2602152

50

Eu enfrentei o mesmo problema e me deparei com esse segmento, mas meu problema era com upstream. Abaixo o comando git funcionou para mim.

Sintaxe

git checkout {nome-remoto} / {branch} - {file / path.js}

Exemplo

git checkout upstream / desenvolva - public / js / index.js


0

Se você ainda não o submeteu à ramificação principal, é fácil:

  • saia do ramo principal (como git checkout -b oops/fluke/dang)
  • comprometa suas alterações lá (como git add -u; git commit;)
  • voltar ao ramo principal (como git checkout master)

Suas alterações serão salvas no ramo oops / fluke / dang; mestre será como era.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.