¿Cuál es la forma más sencilla de deshacer una confirmación particular que es:
- no en la cabeza o CABEZA
- Ha sido empujado al control remoto.
Porque si no es el último commit,
git reset HEAD
no funciona Y porque ha sido empujado a un control remoto,
git rebase -i
y
git rebase --onto
causará algún problema en los controles remotos.
Más aún, no quiero modificar la historia realmente. Si había un código incorrecto, estaba allí en la historia y se puede ver. Solo lo quiero en la copia de trabajo, y no me importa una confirmación de fusión inversa.
En otras palabras, ¿cuál es el equivalente Git de los siguientes comandos svn:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
que elimina todos los cambios de 295 a 302 mediante la fusión inversa de todos los cambios en esas revisiones, como una nueva confirmación.
svn merge -c -302 ^/trunk
que deshace la confirmación 302, por supuesto, agregando otra confirmación que invierte combina los cambios de esa confirmación respectiva.
Pensé que debería ser una operación bastante simple en Git y un caso de uso bastante común. ¿Cuál es el objetivo de los compromisos atómicos?
Tenemos almacenamiento oculto y todo para garantizar que los commits sean perfectamente atómicos, ¿no debería poder deshacer uno o más de esos commits atómicos fácilmente?