¿Cómo solucionar el compromiso con la rama Git incorrecta?
Acabo de hacer un compromiso perfectamente bueno con la rama equivocada. ¿Cómo deshago la última confirmación en mi rama maestra y luego tomo esos mismos cambios y los incorporo a mi rama de actualización?
Si aún no ha realizado los cambios, también puede realizar un restablecimiento parcial:
git reset --soft HEAD^
Esto revertirá la confirmación, pero devolverá los cambios confirmados a su índice. Suponiendo que las ramas estén relativamente actualizadas entre sí, git le permitirá realizar un pago en la otra rama, tras lo cual simplemente podrá confirmar:
git checkout branch
git commit -c ORIG_HEAD
La -c ORIG_HEAD
parte es útil para no volver a escribir el mensaje de confirmación.
4 años de retraso en el tema, pero esto podría ser útil para alguien.
Si olvidó crear una nueva rama antes de confirmar y confirmó todo en el maestro, sin importar cuántas confirmaciones haya realizado, el siguiente enfoque es más sencillo:
git stash # skip if all changes are committed
git branch my_feature
git reset --hard origin/master
git checkout my_feature
git stash pop # skip if all changes were committed
Ahora tienes tu rama maestra igual a origin/master
y todas las confirmaciones nuevas están activadas my_feature
. Tenga en cuenta que my_feature
es una sucursal local, no remota.
Si tiene una copia de trabajo limpia (sin modificar)
Para revertir una confirmación (asegúrese de anotar el hash de la confirmación para el siguiente paso):
git reset --hard HEAD^
Para llevar ese compromiso a una rama diferente:
git checkout other-branch
git cherry-pick COMMIT-HASH
Si ha modificado o no se han realizado cambios
También tenga en cuenta que esto git reset --hard
eliminará cualquier cambio modificado y sin seguimiento que pueda tener, por lo que si los tiene, tal vez prefiera:
git reset HEAD^
git checkout .