Deshacer el commit en Git

Abdul Jabbar 30 enero 2023
  1. Deshacer confirmación en Git - Restablecimiento completo
  2. Deshacer confirmación en Git - Restablecer Git
  3. Deshacer confirmación en Git - Soft Reset Git
  4. Deshacer confirmación en Git - Recuperar archivos de restablecimiento completo
Deshacer el commit en Git

Este artículo está a punto de guiarnos sobre cómo recuperar lo que no queremos hacer mientras usamos Git commit. Git no es tan complicado que necesitemos un gran proceso para abordar nuestro problema particular, pero es más que el problema que se causa es tan grande que se requieren diferentes técnicas dependiendo de lo que tengamos, el problema y el resultado que deseamos.

Hay muchos aspectos de Git que son fáciles de entender, pero volver a donde estábamos antes es mucho más fácil y apreciable; es más fácil deshacer cambios importantes en un repositorio. Es un momento un poco aterrador cuando no sabemos cómo se realiza usando comandos. Pero en realidad, es sorprendentemente fácil hacer cosas pequeñas como confirmar o deshacer los commits.

Pero, ¿qué haría en este caso para deshacer su commit no deseado y luego commit sus nuevos cambios?

Supongamos que si realizó algunos cambios y luego confirmó los cambios, para ese propósito, hay cuatro métodos para hacer esto:

Deshacer confirmación en Git - Restablecimiento completo

Si tiene esto, donde 40 es su HEAD y (42) es el estado de nuestros archivos.

   (42)
38-39-40
  Head

Y quiere deshacer el commit 40 y no quiere volver a verlo nunca más y borrar todos los cambios en los archivos modificados localmente.

Usaremos el siguiente comando:

git reset --hard HEAD ~ 1

Producción :

 (42)
38-39
 Head

Ahora 39 es el HEAD. Debido a que en el ejemplo anterior, usamos --hard, ahora sus archivos se restablecen a su estado en la cabeza del commit que es el 39.

Deshacer confirmación en Git - Restablecer Git

Supongamos que el último commit 40 no fue un gran problema, pero solo un poco fuera de lugar. Ahora queremos deshacer el commit pero mantener nuestros cambios. Empezando de nuevo desde aquí, con 40 como nuestra HEAD:

   (42)
38-39-40
  Head

En lugar de usar el parámetro --hard, usaremos el siguiente comando:

git reset HEAD ~ 1

Producción :

   (42)
38-39-40
Head

Como hemos visto en ambos casos, HEAD solo define el último commit. Cuando hacemos un git reset HEAD~1, el comando Git mueve el puntero HEAD de nuevo a un commit. Pero (a menos que use --hard) dejamos nuestros archivos como estaban antes. No hemos perdido nada en él.

Deshacer confirmación en Git - Soft Reset Git

En una nota más ligera, incluso puede deshacer nuestro compromiso pero dejar nuestros archivos y nuestro índice usando lo siguiente:

git reset --soft HEAD ~ 1

Esto no solo dejará nuestros archivos allí; incluso deja nuestro índice allí solo. Cuando hacemos git status, veremos que los mismos archivos están en el índice que antes. De hecho, veremos después de este comando, podríamos hacer git commit y estaríamos haciendo nuevamente el commit anterior que acabamos de tener.

Deshacer confirmación en Git - Recuperar archivos de restablecimiento completo

Supongamos que deshacemos un commit como en el ejemplo de la primera opción, pero luego nos damos cuenta de que la necesitamos después. ¿Ahora qué hacer?

No se preocupe, todavía hay una forma de recuperarlo. Usaremos el comando git reflog y veremos una lista de commits (inacabadas) en las que nos hemos movido. Busque el commit que destruimos y haga esto:

git checkout -b BranchName CommitYouDestroyed

Ahora hemos restaurado ese compromiso. En Git, los commits no se eliminan durante los 90 días desde el día en que se eliminó, por lo que podemos restaurarlas fácilmente como una copia de seguridad nuevamente en los repositorios.

Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

Artículo relacionado - Git Undo