Git desfazer tentativa de mesclagem

88

Eu tenho o diretório de trabalho (# 1) que contém o diretório do fornecedor (# 2). Há uma dependência que eu queria extrair manualmente sem o composer (versão php do npm / gem). Eu estava trabalhando no # 1, não salvei / confirmei as alterações, quando decidi que quero atualizar a biblioteca no # 2. Eu naveguei até vendor / myname e criei o repositório git pull.

Infelizmente, ele começou a puxar e mesclar para # 1, em vez de criar um novo diretório na pasta do fornecedor.

Agora eu tenho:

  • Pasta nº 1 com minhas alterações
  • Pasta nº 1 com arquivos que não quero do repositório errado
  • Conflitos de mesclagem nº 1, como composer.json, Readme.md ... (arquivos gerais)

Eu quero "desfazer" este último git pull sem perder nenhuma mudança que fiz na pasta # 1. Como posso fazer isso?

Ewooycom
fonte
Git impede pull ou merge se houver mudanças não confirmadas, você tem certeza que foi isso que aconteceu?
CharlesB
1
@CharlesB Abortou a mesclagem, os projetos não são mesclados a jato. Não sei nada sobre git prevenir antes de puxar ...
ewooycom

Respostas:

167

git merge --abort pode ser o que você está procurando.

Aragaer
fonte
6
Em versões mais antigas do git: git reset --merge
razz0
Funciona, mas não lhe diz nada de maneira inútil. Faça uma git statuspara confirmar.-
aliteralmind
17

Git moderno:

git merge --abort

Mais velho:

git reset --merge

Old-school (aviso: descartará todas as alterações locais):

git reset --hard

Mas, na verdade, é importante notar que isso git merge --abortequivale apenas a um git reset --mergedado que MERGE_HEADestá presente. Isso pode ser lido na ajuda do git para o comando merge.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

Depois de uma mesclagem com falha, quando não houver MERGE_HEAD, a mesclagem com falha pode ser desfeita com, git reset --mergemas não necessariamente com git merge --abort, portanto , não são apenas sintaxe antiga e nova para a mesma coisa . Pessoalmente, acho git reset --mergemuito mais útil no trabalho diário.

Martin G
fonte
2

Com Git 2.10 (Q3 2016), você saberá o que fazer, pois git statusirá propor a git merge --abortopção.

Veja commit b0a61ab (21 de julho de 2016) de Matthieu Moy ( moy) .
(Fundido por Junio ​​C Hamano - gitster- no commit 5a2f4d3 , 03 de agosto de 2016)

status: sugerir ' git merge --abort' quando apropriado

Já sugerimos ' git rebase --abort' durante um rebase em conflito.
Da mesma forma, sugira ' git merge --abort' durante a resolução de conflitos em ' git merge'.

VonC
fonte