Hice un git commit
pero aún no lo he empujado al repositorio. Entonces, cuando lo hago git status
, obtengo '# Su rama está por delante de' maestro 'por 1 commit.
Entonces, si quiero revertir mi confirmación principal, ¿puedo hacer lo siguiente?
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
dado que cuando lo hago git log
me sale:
commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Fecha: martes 29 de septiembre 11:21:41 2009 -0700 commit db0c078d5286b837532ff5e276dcf91885df2296 Fecha: martes 22 de septiembre 10:31:37 2009 -0700
reset --hard
puede provocar la pérdida de trabajo, porque al hacerlo, git sobrescribe sus archivos locales (su nuevo trabajo) con los de la web (me pasó a mí). Las preguntas y respuestas sobre git deberían indicar explícitamente qué están haciendo sus comandos y cuáles son los riesgos para los lectores.Respuestas:
En realidad, cuando se utiliza
git reset
, se debe hacer referencia a la confirmación de que se está reposicionando a ; entonces querrías eldb0c078
commit, probablemente.Una versión más fácil sería
git reset --hard HEAD^
restablecer el commit anterior antes del encabezado actual; de esa manera no tiene que estar copiando los ID de confirmación.Tenga cuidado cuando haga alguno
git reset --hard
, ya que puede perder cualquier cambio no confirmado que tenga. Es posible que desee verificargit status
para asegurarse de que su copia de trabajo esté limpia, o que desee eliminar cualquier cambio que haya allí.Además, en lugar de HEAD, puede usarlo
origin/master
como referencia, como lo sugiere @bdonlan en los comentarios:git reset --hard origin/master
fuente
git reset --hard origin/master
, para restablecerlo a cualquier origen.git reset
tu código. Hazte un favor areset
reset --soft
reset --hard
git add
git status
lo tanto, a no mostrará cambios y la confirmación se eliminará / se perderán los cambios).git reset --hard HEAD^
ya que perderá los cambios en los archivos comprometidos (sus cambios se eliminarán). Hay dos ramas para esta pregunta: para revertir una confirmación pero aún tener cambios en el disco, hágalogit reset --soft HEAD~1
SI NO ha empujado sus cambios a control remoto
Compruebe si la copia de trabajo está limpia por
git status
.OTROS has empujado tus cambios a control remoto
Este comando revertirá / eliminará el último commit / change y luego puede presionar
fuente
para restablecerlo a cualquiera que sea el origen.
Esto fue publicado por @bdonlan en los comentarios . Agregué esta respuesta para las personas que no leen los comentarios.
fuente
master
que debo usarorigin/mybranch
?git reset HEAD~
que solo retrasan la confirmación en el códigoHay dos ramas para esta pregunta (deshacer una confirmación no significa que quiera perder todos mis cambios locales):
1. Para revertir los últimos cambios de confirmación y descarte en el archivo confirmado, haga lo siguiente:
git reset --hard HEAD~1
2. Para revertir la última confirmación pero conservar los cambios locales (en el disco), haga lo siguiente:
git reset --soft HEAD~1
Este (el comando posterior) lo llevará al estado en el que hubiera estado si lo hubiera hecho
git add
.Si desea quitar la etapa de los archivos después de eso, haga
git reset
Ahora puede hacer más cambios antes de agregar y luego volver a comprometerse.
fuente
Simplemente escriba en la consola:
Este comando descarta todas las confirmaciones locales antes del HEAD remoto
fuente
Creo que uno de esos se ajustará a tus necesidades.
1 - Deshacer confirmar y mantener todos los archivos organizados:
git reset --soft HEAD~;
2 - Deshacer el compromiso y desestadificar todos los archivos
git reset HEAD~;
3 - Deshacer la confirmación y eliminar completamente todos los cambios:
git reset --hard HEAD~;
aquí es donde encontré la respuesta
fuente
Elimine la última confirmación antes de presionar
git reset --soft HEAD~1
1
significa la última confirmación, si desea eliminar dos últimos usos2
, y así sucesivamente *fuente
--soft
es una gran adición a las posibles respuestas, pero ¿podrías mencionar también por qué? Explicar su solución siempre es útil. También trate de seguir con el inglés. Gracias--soft
- asegura que no pierdas los cambios en el archivo cuya confirmación estás tratando de deshacerHe experimentado la misma situación que hice a continuación, ya que esto es mucho más fácil. Al pasar
commit-Id
, puede llegar al compromiso particular al que desea ir:Como desea eliminar su última confirmación, debe pasar el lugar
commit-Id
donde necesita mover el puntero:fuente
Esto es lo que hago:
Primero revise su sucursal (para mi
master
sucursal):Luego reinicie a HEAD remoto ^ ( eliminará todos los cambios locales ), fuerce la limpieza y tire:
fuente
Una forma sería eliminar la sucursal local y retirar esa sucursal del servidor si su sucursal local está por delante de la remota por múltiples confirmaciones y necesita deshacerlas todas.
fuente
Simplemente tuve el mismo problema y terminé haciendo:
(N es el número de confirmaciones que le mostrará git)
Eso solicita su editor de texto y luego puede eliminar la confirmación que desea eliminando la línea asociada a él.
fuente