tag - Eliminar un git commit que no haya empujado
eliminar un commit especifico (8)
Hice un git commit
pero todavía no lo he enviado al repositorio. Así que cuando hago el git status
, obtengo ''# Tu rama está delante de'' master ''con 1 commit.
Entonces, si quiero revertir mi compromiso principal, ¿puedo simplemente hacer:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
Dado que cuando hago git log
obtengo:
commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Date: Tue Sep 29 11:21:41 2009 -0700 commit db0c078d5286b837532ff5e276dcf91885df2296 Date: Tue Sep 22 10:31:37 2009 -0700
En realidad, cuando usa git reset
, debe referirse a la confirmación a la que está restableciendo; por lo que querría la confirmación db0c078
, probablemente.
Una versión más fácil sería git reset --hard HEAD^
, para restablecer la confirmación anterior antes de la cabecera actual; de esa manera no tiene que estar copiando alrededor de los ID de confirmación.
Tenga cuidado cuando realice cualquier git reset --hard
, ya que puede perder cualquier cambio no confirmado que tenga. Es posible que desee verificar el git 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 usar origin/master
como referencia, como lo sugiere @bdonlan en los comentarios: git reset --hard origin/master
Esto es lo que hago:
Primero compruebe su sucursal (para mi caso master
rama):
git reset HEAD^ --hard && git clean -df && git pull
Luego reinicie el mando a distancia en HEAD ^ ( eliminará todos los cambios locales ), haga un esfuerzo de limpieza y tire:
$ git reset HEAD~
He experimentado la misma situación que hice a continuación, ya que esto es mucho más fácil. Al pasar commit-Id
puede acceder a la confirmación en particular a la que desea ir:
git reset --hard {commit-id}
Como desea eliminar su última confirmación, debe pasar el commit-Id
donde necesita mover el puntero:
git reset --hard db0c078d5286b837532ff5e276dcf91885df2296
Una forma sería eliminar la sucursal local y retirar esa sucursal del servidor si su sucursal local está adelantada a la remota mediante múltiples confirmaciones y debe confirmar todas ellas.
simplemente escriba en la consola:
git checkout master
Eliminar el último commit antes de push
git reset --soft HEAD~1
1
significa la última confirmación, si desea eliminar dos últimos usos 2
, y así sucesivamente *
SI NO has empujado tus cambios a remoto
git reset HEAD~1
Compruebe si la copia de trabajo está limpia por git status
.
ELSE has empujado tus cambios a remoto
git revert HEAD
Este comando revertirá / eliminará la última confirmación / cambio y luego puede presionar
git reset --hard origin/master
para restablecerlo a cualquiera que sea el origen.
Esto fue publicado por @bdonlan en los comments . Agregué esta respuesta para las personas que no leen comentarios.