Nota lateral: você pode achar que é útil git fetch upstreamem primeiro lugar, em seguida, tomar um rápido olhar git diff upstream/branchpara ver o que você vai fundir em Se tudo estiver bem, então prosseguir com.git merge upstream/branch
Shahbaz
1
Você perderá todo o seu credito na rua e receberá uma semana de pagamento se algum programador moderno o ver executar comandos git a partir de uma GUI, mas o GitHub Desktop e o Atom possuem botões simples e seguros para undoconfirmar e marcar caixas de seleção, para fácil e claramente exibir e desestabilizar arquivos. GUIs também são pessoas!
Dem Pilafian
Respostas:
391
Ou, para torná-lo mais explícito do que a outra resposta:
git pull
gritos?
git reset --keep HEAD@{1}
Versões do git anteriores a 1.7.1 não possuem --keep. Se você usar essa versão, poderá usar --hard- mas essa é uma operação perigosa, pois perde as alterações locais.
ORIG_HEAD é o estado anterior do HEAD, definido por comandos que têm um comportamento possivelmente perigoso, para facilitar a reversão. Agora é menos útil que o Git tenha reflog: HEAD @ {1} é aproximadamente equivalente a ORIG_HEAD (HEAD @ {1} é sempre o último valor de HEAD, ORIG_HEAD é o último valor de HEAD antes de operações perigosas)
@ hugemeow Essa seria uma ótima pergunta para SO. Enquanto isso man git-rev-parsedescreve isso. HEAD@{1}é o valor anterior de simbólico HEADno reflogconsiderando que HEAD^é a (primeira) revisão pai da corrente HEAD. Esses dois precisam ser equivalentes (por exemplo, depois de uma nova atualização, uma reinicialização total, uma troca de ramificação e outras coisas). Leia o artigo vinculado para reflog. Cheers
veja 28/08/12
10
Usuários do PowerShell, escapem dos suportes com um bastão:git reset HEAD@`{1`}
Robert Claypool
3
ss64.com/ps/syntax-esc.html Acho que você quis digitar HEAD@`{1`}ou, nesse caso, faça o que funciona também com os shells POSIX:'HEAD@{1}'
veja
2
Eu acho que não apenas redefinir o pull, mas também meus commits = (
falsarella 24/04
67
git reflog showdeve mostrar a história do HEAD. Você pode usar isso para descobrir onde você estava antes do pull. Então você pode fazer o resetseu HEADcommit.
O git reflog show forneceu esta saída: c9e5e4d HEAD @ {0}: pull: avanço rápido 1c86a22 HEAD @ {1}: pull master de origem: avanço 05c141a HEAD @ {2}: pull: avanço rápido Posso redefinir com segurança o HEAD para HEAD @ {1}
Kartins 28/04/11
A outra resposta de sehe tem detalhes sobre como chegar lá.
Noufal Ibrahim
Isso foi super útil depois que um commit desastroso, de alguma forma, intercalou os commits em minha história. Faça isso procurando um último bem conhecido no reflog e depois force o empurrão.
Domenic
E se pullfor a primeira ação? Se pullestá em HEAD@{1}, e nada mais antes disso, como você volta a um estado antes disso?
Hendra Uzia
Recriar o repositório?
Noufal Ibrahim 17/07/2013
29
Isso funcionou para mim.
git reset --hard ORIG_HEAD
Desfazer uma mesclagem ou pull:
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
Encontre o <SHA#>para o commit que você deseja ir. Você pode encontrá-lo no github ou digitando git logou git reflog showna linha de comando e depois
git reset --hard <SHA#>
Mesmo que você tenha modificações locais em sua árvore de trabalho, pode dizer com segurança git pullquando souber que a alteração na outra ramificação não se sobrepõe a elas.
Após inspecionar o resultado da mesclagem, você pode achar que a alteração na outra ramificação não é satisfatória. A execução git reset --hard ORIG_HEAD
permitirá que você volte para onde estava, mas descartará as alterações locais, que você não deseja. git reset --mergemantém suas alterações locais.
git fetch upstream
em primeiro lugar, em seguida, tomar um rápido olhargit diff upstream/branch
para ver o que você vai fundir em Se tudo estiver bem, então prosseguir com.git merge upstream/branch
undo
confirmar e marcar caixas de seleção, para fácil e claramente exibir e desestabilizar arquivos. GUIs também são pessoas!Respostas:
Ou, para torná-lo mais explícito do que a outra resposta:
gritos?
Versões do git anteriores a 1.7.1 não possuem
--keep
. Se você usar essa versão, poderá usar--hard
- mas essa é uma operação perigosa, pois perde as alterações locais.Para o comentarista
fonte
man git-rev-parse
descreve isso.HEAD@{1}
é o valor anterior de simbólicoHEAD
noreflog
considerando queHEAD^
é a (primeira) revisão pai da correnteHEAD
. Esses dois precisam ser equivalentes (por exemplo, depois de uma nova atualização, uma reinicialização total, uma troca de ramificação e outras coisas). Leia o artigo vinculado para reflog. Cheersgit reset HEAD@`{1`}
HEAD@`{1`}
ou, nesse caso, faça o que funciona também com os shells POSIX:'HEAD@{1}'
git reflog show
deve mostrar a história do HEAD. Você pode usar isso para descobrir onde você estava antes dopull
. Então você pode fazer oreset
seuHEAD
commit.fonte
pull
for a primeira ação? Sepull
está emHEAD@{1}
, e nada mais antes disso, como você volta a um estado antes disso?Isso funcionou para mim.
Desfazer uma mesclagem ou pull:
Faça o checkout disso: HEAD e ORIG_HEAD no Git para obter mais informações.
fonte
Encontre o
<SHA#>
para o commit que você deseja ir. Você pode encontrá-lo no github ou digitandogit log
ougit reflog show
na linha de comando e depoisgit reset --hard <SHA#>
fonte
<SHA#>
De https://git-scm.com/docs/git-reset#Documentation/git-reset.txt-Undoamergeorpullinsideadirtyworkingtree
Consulte também https://stackoverflow.com/a/30345382/621690
fonte