clean - git rollback pull
Git rollback 1 tirĂ³n (5)
Tengo un servidor web que sirve un proyecto que es un repositorio git. Cuando hago algunos cambios en el código, hago un git pull desde el servidor. A veces, el nuevo código simplemente falla, me gustaría poder hacer una reversión al último impulso, el anterior. Quiero hacer eso con un script, sin tener que buscar lo que es el último sha. ¿Cómo puedo hacer eso?
Edit: Solo para aclarar, solo quiero tener que hacer una acción, como presionar un botón que dice "¡Ups! Este último tirón que acabo de hacer fue un error, me gustaría no haberlo hecho". No quiero tener que buscar sha o etiquetas o cualquier otra cosa en esta situación, es más como una función ''deshacer''. Luego quiero poder seguir trabajando en el código y la próxima extracción del servidor debe traer los últimos cambios.
En este caso, puede tener sentido utilizar una rama, que puede eliminarse o fusionarse fácilmente en caso de fracaso o éxito. Esto le ayudará a realizar un seguimiento de las novedades y a aclarar las cosas si tiene casos más complicados que "simplemente eliminar el último compromiso" (especialmente porque quiere hacer eso con un script). Así que en su servidor:
git fetch --all # fetch new commits from remote
git checkout -b testing # create and switch to branch ''testing''
git merge origin/master # merge new commits from remote branch master
# (in branch ''testing'')
... entonces prueba cosas ... si es exitoso
git checkout master # switch back to master
git merge testing
y ante el fracaso:
git checkout master
git branch -D testing # remove testing branch
Pero de todos modos ... tu único punto es eliminar la última confirmación, puedes usar git reset
como lo señaló Josh.
La respuesta aceptada de @Karl Bielefeldt no funcionó exactamente para mí. Estoy usando GIT versión 2.10.0.windows.1 Puede ser que esto funcione para versiones anteriores. Estoy obteniendo el error "switch ''e'' desconocido". Finalmente, hice algunos cambios y funcionó.
A continuación, se encuentran los pasos para volver al estado anterior a la extracción anterior:
- Use
git reflog
para ver la lista como Karl mencionó. - Elija la versión de confirmación de la lista a la que desea retroceder.
- Ejecutar
git reset --hard <commit version>
Otra forma de hacer esto implicaría el uso de etiquetas. La idea es que puede etiquetar su HEAD con algún número de versión antes del pull, hacer el pull, luego, si necesita revertir el HEAD, puede hacer git reset {tag name}
esa manera, si el pull tiene múltiples confirmaciones, puede omitir Volver a donde estabas antes de la fusión.
git reset --hard HEAD^1
te llevará de vuelta una confirmación de lo que hiciste. Si desea volver al estado en que estaba antes de jalar, use git reset --hard HEAD@{1}
. La @{1}
rastrea la ubicación de la cabeza antes de la última operación que la cambió en su repositorio local, por lo que retrocederá varias confirmaciones si se presionaron varias antes de que usted hiciera su extracción. También vea git reflog
para mostrar la lista completa.
git reset HEAD^
debería llevarte a la confirmación anterior. Vea here para más información.