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?


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.


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.


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'.

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.