¿Hay alguna forma de revertir una confirmación para que mi copia local mantenga los cambios realizados en esa confirmación, pero se conviertan en cambios no confirmados en mi copia de trabajo? Revertir una confirmación lo lleva a la confirmación anterior: quiero mantener los cambios realizados, pero los confirmé en la rama incorrecta.
Esto no ha sido empujado, solo cometido.
git reset --soft
ygit reset --mixed
ambos hacen esto (un poco diferente), vea git-resetRespuestas:
Hay muchas formas de hacerlo, por ejemplo:
en caso de que aún no haya presionado el compromiso públicamente:
Eso es todo, sus cambios de confirmación estarán en su directorio de trabajo, mientras que la ÚLTIMA confirmación se eliminará de su rama actual. Ver git reset man
En caso de que haya presionado públicamente (en una rama llamada 'maestro'):
revertir comprometer normalmente y presionar
ahora, si desea tener esos cambios a medida que cambia localmente en su copia de trabajo ("para que su copia local mantenga los cambios realizados en esa confirmación"), simplemente revierta la
--no-commit
opción revertir confirmación con la opción:He creado un pequeño ejemplo: https://github.com/Isantipov/git-revert/commits/master
fuente
reset
comando mencionado es restablecer "suavemente" a 1 rev antes de la cabeza, lo que preserva todos los cambios locales. Esto no fue inmediatamente evidente para mí para su uso en SourceTree. solo asegúrate de que estás reiniciando la revisión anterior, no la que estás intentando restablecer"Already up to date"
al hacer la fusión.Si presionó los cambios, puede
undo
hacerlo y mover los archivos nuevamente al escenario sin usar otra rama.Creará un archivo de parche que contiene los últimos cambios de rama. Luego revierte los cambios. Y finalmente, aplique los archivos de parche al árbol de trabajo.
fuente
rm patch
también quierasPara el caso: "Esto no ha sido empujado, solo cometido ". - si usa IntelliJ (u otro IDE de JetBrains) y aún no ha introducido cambios , puede hacer lo siguiente.
Hecho.
Esto "confirmará" sus cambios y devolverá su estado de git al punto anterior a su última confirmación local. No perderá ningún cambio que haya realizado.
fuente
git reset --soft "HEAD^"
en Windows, por cierto. :)La mayoría de las veces sucede cuando empujo los cambios a la rama incorrecta y me doy cuenta más tarde. Y los siguientes trabajos en la mayoría de las veces.
fuente
2020 forma simple:
Compite el hash del último compromiso que deseas mantener.
fuente
git checkout branch_name
git merge --abort
estado git
git reset: origen duro / nombre_de_ rama
fuente