git - tag - Eliminando/deshaciendo una fusión en Sourcetree
source tree tutorial español (2)
Es muy desafortunado que SourceTree no le facilita revertir las confirmaciones de combinación (al menos en Windows SourceTree 1.5.2.0). Sin embargo, revertir la combinación se puede lograr fácilmente desde la línea de comando, pero ¿desea revertir la combinación agregando otra confirmación que sea la inversa de los resultados de la combinación de combinación, o simplemente desea eliminar la confirmación de combinación del historial? ¿en total?
Si no estás compartiendo tu rama master
con otras personas, lo más simple sería simplemente hacer un restablecimiento completo para eliminar la confirmación de fusión del historial. Sin embargo, si otras personas ya tienen una copia de ese compromiso de fusión, creará un trabajo adicional para ellos mientras intentan volver a sincronizar sus copias del master
con la versión reescrita del suyo.
Así que necesitas averiguar qué opción quieres usar. Daré los pasos para ambos, usando la línea de comando:
Eliminar Commit de la historia
git checkout master
git push origin master --force
Eso sobrescribirá la confirmación de fusión en el origin/master
con el estado actual de su rama master
local, eliminando así la confirmación de combinación.
Revertir compromiso con otro compromiso inverso
git checkout master
git merge origin/master
git revert -m 1 HEAD
Eso hará que su rama master
local esté sincronizada con el origin/master
, y luego puede agregar una confirmación inversa diciéndole a git revert
que el primer padre es el que debe considerarse el padre "principal", y creará Invierta la confirmación en relación con los cambios introducidos desde la otra confirmación principal.
Si más adelante decide que desea volver a introducir los cambios del otro padre, deberá agregar otra confirmación de reversión que revierta la confirmación de reversión que acaba de realizar (una técnica conocida como "revertir la reversión").
Ver también:
- ¿Deshacer una fusión de Git?
- ¿Cómo puedo "deshacer" un commit de Git revertido? .
- git-revert (1) Manual .
- Cómo revertir una fusión defectuosa .
Hice algunos cambios en mi proyecto (estaba trabajando en una sucursal remota y no en el maestro), los BitBucket
y creé una solicitud de extracción en BitBucket
y BitBucket
la rama con el maestro. Me había olvidado de empujar mis cambios después de la confirmación. Ahora, después de intentar cambiar la rama actual a mi rama remota y volver a la confirmación antes de la fusión, logré recuperar todos mis cambios y hacer una copia de seguridad de ellos en otra parte de mi sistema. Lo que quiero hacer ahora es deshacer la mala fusión que hice. Cada vez que hago clic en la combinación y selecciono "Reverse commit"
, aparece el siguiente mensaje de error:
"error: Commit <commit_id> is a merge but no -m option was given.
fatal: revert failed"
Las ramas se ven así ahora:
Básicamente, quiero eliminar la combinación y llevarla a un estado tal que ya no diga master(4 behind)
.
Soy nuevo en el control de código fuente y agradecería que alguien me ayudara con esto.
Este método se basa en la eliminación de la historia:
- Echa un vistazo a la rama que cometió el error en
- Haga clic derecho en la confirmación a la que desea restablecer la rama a
- Haga clic en "Restablecer rama actual para este compromiso"
- Seleccione el modo "duro" y haga clic en "Aceptar"
- Desafortunadamente necesitas un terminal para hacer este bit. Escriba
git push origin name_of_branch --force
en la terminal (es posible que deba ingresar su nombre de usuario y contraseña de git repo para que acepte el comando)
Si aparece un mensaje más adelante en la línea, pregunte si desea abortar la rebase o continuar. Haga clic en "continuar". Si cancela, la combinación aparecerá de nuevo en su copia local.
Esta es probablemente la forma más fácil de hacerlo, pero como se basa en la eliminación del historial, si otros están trabajando en el proyecto, asegúrese de que todos sepan lo que está haciendo para no romper el repositorio de git de nadie.