NO RECOMENDADO

NO RECOMENDADO

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

--hardeliminará todos los cambios realizados por commit1 y commit2 de su sistema de archivos. Puede usarlo --softpara 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 --hardde confirmaciones ya enviadas).

información relacionada