
He realizado múltiples confirmaciones. Luego tuve que volver al compromiso en el medio. Hizo cambios allí y creó una nueva sucursal. Ahora lo que quiero hacer es omitir (eliminar, eliminar) todas las demás confirmaciones y usar la rama como versión maestra. Pero no puedo entender cómo hacerlo.
Aquí hay una explicación de la situación:
commit1 (latest)
commit2
commit3 (head pointing here)
other commits...
En el momento de commit3
, hice cambios y creé una nueva rama para impulsarlos.
Ahora me gustaría hacer que la versión de rama sea la principal, eliminando commit2
y commit1
.
Respuesta1
Dado que ha presionado, su opción con menos probabilidades de romper cosas es probablemente git revert
:
git checkout master
git revert commit1 commit2
git merge new-branch
git push
Tenga en cuenta que esto dará como resultado que master tenga exactamente los mismos archivos que new-branch, pero commit1 y commit2 seguirán estando en el historial de master, junto con dos confirmaciones adicionales que revertirán sus cambios.
NO RECOMENDADO
Si realmente quieres eliminar las confirmaciones que ya has enviado desde el maestro, primero, notifica a todos tus compañeros de equipo que probablemente vas a romper cosas, luego usa git reset
:
git checkout master
git reset --hard commit3
git merge new-branch
git push -f
--hard
eliminará todos los cambios realizados por commit1 y commit2 de su sistema de archivos. Puede usarlo --soft
para preservar esos cambios en el sistema de archivos y al mismo tiempo eliminar esas confirmaciones.
Es posible que desee indicar a sus compañeros de equipo la documentación pararecuperándose de una rebase ascendente(git reset apunta a esa sección cuando se habla del uso reset --hard
de confirmaciones ya enviadas).