Con SVN es fácil fusionar inversamente un commit, pero ¿cómo hacer eso con Git?
Con SVN es fácil fusionar inversamente un commit, pero ¿cómo hacer eso con Git?
Respuestas:
Para crear una nueva confirmación que 'deshaga' los cambios de una confirmación anterior, use:
$ git revert <commit>
También es posible eliminar una confirmación de un punto arbitrario en el pasado al cambiar el nombre y luego restablecer, pero realmente no desea hacerlo si ya ha enviado sus confirmaciones a otro repositorio (o alguien más se ha retirado de usted) .
-m <parent number>
opción git revert
para especificar qué cambio revertir. Si desea deshacer una combinación de historial no publicado, use git reset --hard HEAD^1
.
-m
significa que una fusión futura de la rama no fusionada no incluirá los cambios anteriores a esa fusión! Consulte schacon.github.com/git/howto/revert-a-faulty-merge.txt para conocer las formas adecuadas de volver a fusionar una rama no fusionada.
Para revertir una combinación de cometer, es necesario utilizar: git revert -m <parent number>
. Entonces, por ejemplo, para revertir la confirmación de fusión más reciente usando el padre con el número 1, usaría:
git revert -m 1 HEAD
Para revertir una confirmación de fusión antes de la última confirmación, debería hacer lo siguiente:
git revert -m 1 HEAD^
Use git show <merge commit SHA1>
para ver a los padres, la numeración es el orden en que aparecen, por ejemploMerge: e4c54b3 4725ad2
documentación de combinación de git: http://schacon.github.com/git/git-merge.html
Discusión de fusión de git (confusa pero muy detallada): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
para ver a los padres, la numeración es el orden en que aparecen, por ejemploMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
Ese comando funcionó para mí para revertir un commit de fusión que era varios commits de fusión antes del encabezado y tenía muchos commits debajo.
Si te entiendo correctamente, estás hablando de hacer un
svn merge -rn:n-1
para retirarse de una confirmación anterior, en cuyo caso, probablemente esté buscando
git revert
git reset --hard HEAD^
Use el comando anterior para revertir los cambios de fusión.
Si no desea comprometerse, o desea hacerlo más tarde (el mensaje de confirmación aún estará preparado para usted, que también puede editar):
git revert -n <commit>