Git deshacer intento de fusión

90

Tengo el directorio de trabajo (# 1) que tiene el directorio de proveedores (# 2) en él. Hay una dependencia que quería extraer manualmente sin compositor (versión php de npm / gem). Estaba trabajando en el n. ° 1, no he guardado / confirmado los cambios, cuando decidí que quiero actualizar la biblioteca en el n. ° 2. Navegué a vendor / myname, e hice git pull repository.

Desafortunadamente, comenzó a extraerse y fusionarse con el n. ° 1, en lugar de crear un nuevo directorio en la carpeta del proveedor.

Ahora tengo:

  • Carpeta # 1 con mis cambios
  • Carpeta # 1 con archivos que no quiero del repositorio incorrecto
  • # 1 fusionar conflictos como composer.json, Readme.md ... (archivos generales)

Quiero "deshacer" este último git pull sin perder ningún cambio que hice en la carpeta # 1. ¿Cómo puedo hacer esto?

ewooycom
fuente
Git evita la extracción o fusión si hay cambios no confirmados, ¿está seguro de que esto es lo que sucedió?
CharlesB
1
@CharlesB Se abortó la fusión, los proyectos no se fusionan a chorro. No sé nada sobre la prevención de git antes de tirar ...
ewooycom

Respuestas:

170

git merge --abort podría ser lo que estás buscando.

aragaer
fuente
6
En versiones anteriores de git: git reset --merge
razz0
Funciona, pero inútilmente no le dice nada. Hacer una git statuspara confirmar.-
aliteralmind
17

Git moderno:

git merge --abort

Más viejo:

git reset --merge

Old-school (advertencia: descartará todos sus cambios locales):

git reset --hard

Pero en realidad, vale la pena notar que git merge --abortsolo equivale a git reset --mergedado que MERGE_HEADestá presente. Esto se puede leer en la ayuda de git para el comando merge.

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

Después de una fusión fallida, cuando no hay MERGE_HEAD, la fusión fallida se puede deshacer con, git reset --mergepero no necesariamente con git merge --abort, por lo que no solo son sintaxis antigua y nueva para lo mismo . Personalmente lo encuentro git reset --mergemucho más útil en el trabajo diario.

Martín G
fuente
2

Con Git 2.10 (Q3 2016), sabrá qué hacer, porque git statuspropondrá la git merge --abortopción.

Consulte la confirmación b0a61ab (21 de julio de 2016) de Matthieu Moy ( moy) .
(Combinado por Junio ​​C Hamano - gitster- en el compromiso 5a2f4d3 , 03 de agosto de 2016)

status: sugerir ' git merge --abort' cuando sea apropiado

Ya sugerimos ' git rebase --abort' durante un rebase conflictivo.
Del mismo modo, sugiera " git merge --abortdurante la resolución de conflictos git merge".

VonC
fuente