Me he encontrado con un pequeño problema aquí: tenía una rama específica del problema 28s
en Git, que fusioné en la develop
rama general . Resulta que lo había hecho demasiado rápido, así que usé git-revert para deshacer la fusión. Ahora, sin embargo, ha llegado el momento de fusionar 28s
en develop
, pero comando git-merge ve la fusión original y anuncia feliz de que todo está bien y ramas ya se han fusionado. ¿Qué hago ahora? Crear un 'Revertir "Revertir" 28s -> desarrollar ""' commit? No parece ser una buena forma de hacerlo, pero no puedo imaginar ninguna otra en este momento.
Aspecto de la estructura de árbol:
git
git-merge
git-revert
Toms Mikoss
fuente
fuente
Respuestas:
Tienes que "revertir la reversión". Dependiendo de usted cómo se revirtió el original, puede que no sea tan fácil como parece. Mire el documento oficial sobre este tema .
permitir:
fuente
Supongamos que tienes esa historia
Donde A, B falló confirmaciones y W - se revierte de M
Entonces, antes de comenzar a solucionar los problemas encontrados, hago una selección de W de mi rama
Luego revierto W commit en mi rama
Después puedo seguir arreglando.
La historia final podría verse así:
Cuando envío un RP, mostrará claramente que el RP se deshace, revierte y agrega algunas confirmaciones nuevas.
fuente
Para revertir la reversión sin arruinar demasiado su flujo de trabajo:
Su rama de características ahora debería poder fusionarse normalmente cuando esté listo para ello. El único inconveniente aquí es que tendrá algunos compromisos adicionales de fusión / reversión en su historial.
fuente
Para revertir una reversión en GIT:
fuente
En lugar de usar
git-revert
, podría haber usado este comando en ladevel
rama para descartar (deshacer) la confirmación de fusión incorrecta (en lugar de simplemente revertirla).Esto también ajustará los contenidos del directorio de trabajo en consecuencia. Tenga cuidado :
git-reset
. ¡Todas las confirmaciones después de la que especifique comogit reset
argumento desaparecerán!Recomiendo estudiar la
git-reset
página de manual cuidadosamente antes de intentar esto.Ahora, después del reinicio, puede volver a aplicar sus cambios
devel
y luego hacerEsta será una verdadera fusión de
28s
aldevel
igual que la inicial (que ahora está borrado de la historia del GIT).fuente
reset --hard
ypush origin
. También tenga en cuenta que un empuje forzado al origen realmente puede acumular relaciones públicas abiertas en GitHub.Acabo de encontrar esta publicación cuando enfrento el mismo problema. Me parece muy asustadizo hacer restablecimientos duros, etc. Terminaré borrando algo que no quiero y no podré recuperarlo.
En cambio, verifiqué el commit al que quería que la rama volviera, por ejemplo
git checkout 123466t7632723
. Luego se convirtió en una ramagit checkout my-new-branch
. Luego borré la rama que no quería más. Por supuesto, esto solo funcionará si eres capaz de tirar la rama que arruinaste.fuente
git reflog
protegerá en un restablecimiento completo durante un par de meses en caso de que luego descubra que necesita las confirmaciones perdidas. El reflog se limita a su repositorio local.Le sugiero que siga los pasos a continuación para revertir una reversión, diga SHA1.
Ahora cree relaciones públicas para la sucursal
users/yourname/revertOfSHA1
fuente
En este punto, tendrá una rama limpia de 'desarrollo' en la que puede fusionar su brach de características como lo hace regularmente.
fuente