¿Cuál es la forma más sencilla de deshacer una confirmación en concreto es:deshacer una confirmación en concreto en Git que ha sido empujado a pases remotos
-
no
- en la cabeza o la cabeza
- ha sido empujado a la distancia.
Porque si no es la última confirmación,
git reset HEAD
no funciona. Y porque ha sido empujado a un mando a distancia,
git rebase -i
y
git rebase --onto
causará algún problema en los mandos a distancia.
Más aún, no quiero modificar realmente el historial. Si había un código incorrecto, estaba allí en la historia y se puede ver. Solo quiero que salga en la copia de trabajo, y no me importa un compromiso de fusión inversa.
En otras palabras, ¿cuál es la Git equivalente 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 fusión inversa todos los cambios en esas revisiones, como un nuevo comprometerse.
svn merge -c -302 ^/trunk
que deshace el 302 confirmación, por supuesto, por la adición de otro commit que inversa fusiona los cambios de ese respectivo cometido.
Pensé que debería ser una operación bastante simple en Git y un caso de uso bastante común. ¿Qué más es el punto de los compromisos atómicos?
Tenemos puesta a stashing y todo para asegurar que los commits sean perfectamente atómicos, ¿no debería poder deshacer uno o más de estos commits atómicos fácilmente?
Y utilizar el parámetro -n si Desea que se devuelva el código, pero no se confirma automáticamente en – jaygooby
¿Qué hace la opción "m"? Probé git revert 8213f7d pero obtuve esto en su lugar: error: Commit 8213f7dad1ed546b434a0d8a64cb783b530a5a30 es una fusión, pero no se dio la opción -m. fatal: revertió el error – Malcolm
'git help revert' dice que le permite elegir a qué padre de la fusión desea volver. No puede revertir una combinación sin elegir un padre. La documentación lo dirige a https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt –