Así que estoy trabajando en un proyecto con otras personas, y hay varios tenedores de github en los que se está trabajando. Alguien solucionó un problema y me fusioné con su tenedor, pero luego me di cuenta de que podía encontrar una mejor solución. Quiero revertir el compromiso que acabo de hacer. Intenté hacer esto con git revert HEAD
pero me dio este error:
fatal: Commit <SHA1> es una fusión pero no se dio la opción -m.
Qué significa eso? Cuando me fusioné y me comprometí, utilicé la opción -m para decir "Combinado con <nombre de usuario>".
¿Qué estoy haciendo mal aquí?
fuente
git cat-file -p [MERGE_COMMIT_ID]
mostrará las ramas principales en orden. El primero en la lista sería-m 1
, el segundo-m 2
.git revert [HASH] -m 2
me dice En la rama 1.x-1.x no hay nada que confirmar, el directorio de trabajo está limpio pero mi confirmación no se revierte.Digamos que el otro tipo creó una barra encima de foo, pero mientras tanto creaste baz y luego te uniste, dando un historial de
Nota: git lola es un alias no estándar pero útil.
Sin dados con
git revert
:Charles Bailey dio una excelente respuesta como siempre. Utilizando
git revert
como enelimina
bar
y produce efectivamente un historial dePero sospecho que quieres tirar el commit de fusión:
Como se documenta en el
git rev-parse
manualasí que antes de invocar
git reset
,HEAD^
(oHEAD^1
) era b7e7176 yHEAD^2
era c7256de, es decir , respectivamente, el primer y el segundo padre de la confirmación de fusión.Tenga cuidado
git reset --hard
porque puede destruir el trabajo.fuente
lola
a sus comandos git:git config --global alias.lola "log --graph --decorate --pretty=oneline --abbrev-commit --all"
Tuve este problema, la solución fue mirar el gráfico de confirmación (usando gitk) y ver que tenía lo siguiente:
Ahora entiendo que quiero hacer
Esto se debe a que
-m 1
se fusionaría en función del padre común, donde como se-m 2
fusiona en función de la rama y, esa es la que quiero elegir.fuente
git-revert
, de eso se trata esta pregunta.-m
opción, no exclusivamente sobregit merge
. Es decir, el razonamiento detrás del uso de la-m
opción parece ser similar para reversiones y selecciones de cereza. Si eso no es cierto, háganoslo saber. Como no he encontrado ninguna otra pregunta que aborde específicamente su uso, gracias por esta respuesta, que probablemente llevó a google a ayudarme a encontrar esta pregunta y una discusión útil y relevante.