que acabo de hacer un¿Cómo deshacer una calabaza de combinación git?
git merge --squash feature-branch
en mi develop
rama.
El problema es que el comando anterior actualizó el encabezado sin crear un nuevo compromiso. Mi intención era crear un compromiso único para aplicar al jefe de develop
.
En resumen, el registro para la rama develop
antes y después de la fusión es exactamente el mismo.
¿Hay alguna forma de revertir develop
a lo que era antes del git merge
?
Gracias.
Solución
Basado en el comentario de Dan D. y la respuesta aceptada por debajo pude resolver mi problema. Vea a continuación lo que hice en caso de que esté en el mismo barco:
1 - Ejecuté git reflog
y enumeré todas las confirmaciones y registros que hice con mi sucursal develop
.
2 - En lugar de hacer un git reset [email protected]{1}
según lo sugerido, encontré el número cuando hice el último compromiso para desarrollar que quería mantener. En mi caso fue [email protected]{188}
. Así que escribí git reset [email protected]{188}
.
3 - ejecuté git log
y tenía un registro limpio que mostraba solo las confirmaciones que tenía antes de hacer la combinación incorrecta.
4 - Ejecuté git add -A .
para representar todos los nuevos archivos creados durante el desarrollo de mi función.
5 - Me corrió git commit -m "install feature-x"
6 - Como resultado ahora tengo rama develop
con los archivos correctos y el registro se limpia - mostrando sólo un commit para todos los cambios que hice durante el desarrollo de feature-x
.
Todavía tengo que averiguar por qué mi git merge --squash feature-branch
original no funcionó según lo previsto.
Solución 2
respuesta de Mark Longair es una solución definitiva a mi problema. Lo acabo de probar y funciona. Véase a continuación el proceso que estoy usando ahora para aplastar todas las confirmaciones internas dentro de un feature-branch
e incluyen sólo una comprometo a la rama develop
:
git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"
La secuencia anterior funciona como un encanto.
Use 'git reflog'. –