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?
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>