Tive um conflito de fusão. Como posso abortar a fusão?
Eu usei "puxão de merda" e tive um conflito de fusão:
unmerged: _widget.html.erb
You are in the middle of a conflicted merge.
Eu sei que a outra versão do ficheiro é boa e que a minha é má, por isso todas as minhas alterações devem ser abandonadas. Como posso fazer isso?
2374
3
Como o seu
pull
não foi bem sucedido então oHEAD
(não oHEAD^
) é o último compromisso "válido" na sua filial:A outra peça que você quer é deixar que as mudanças deles substituam as suas mudanças.
Versões mais antigas do git permitiam que você usasse a estratégia de fusão "deles":
Mas isto já foi removido, como explicado em esta mensagem de Junio Hamano (o mantenedor do Git). Como observado em o link, ao invés disso você faria isso:
Acho que é "reiniciar" que você precisa.
Cuidado que
git revert
significa algo muito diferente de, digamos,svn revert
- no Subversion a reversão irá descartar suas alterações (não comprometidas), retornando o arquivo para a versão atual do repositório, enquantogit revert
"desfaz" um commit.O
git reset
deve fazer o equivalente asvn revert
, ou seja, descartar suas alterações indesejadas.Neste caso de uso particular, você não quer realmente abortar a fusão, apenas resolver o conflito de uma determinada maneira.
Também não há necessidade particular de reiniciar e realizar uma fusão com uma estratégia diferente. Os conflitos foram corretamente destacados pelo git e a exigência de aceitar as mudanças dos outros lados é apenas para este arquivo.
Para um arquivo não fundido em um git de conflito torna disponível a base comum, versões locais e remotas do arquivo no índice. (É daqui que eles são lidos para uso em uma ferramenta de comparação de 3 vias por
git mergetool
.) Você pode utilizar ogit show
para visualizá-los.A maneira mais simples de resolver o conflito para usar a versão remota literalmente é:
Ou, com o git >= 1.6.1: