Comentarios en: Cómo deshacer el último commit en git https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/ Información y experiencias sobre el uso de git Thu, 25 Jul 2024 14:48:40 +0000 hourly 1 https://wordpress.org/?v=6.6.1 Por: admin https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-77136 Fri, 27 Mar 2020 08:30:54 +0000 https://aprendegit.com/?p=630#comment-77136 En respuesta a Daniel.

Hola Daniel:

Acabo de ver este comentario metido entre el SPAM del blog. Disculpa que haya tardado tanto tiempo en responderte. Es una buena pregunta y aunque haya pasado tiempo, te respondo por si aún te sirve la respuesta.

Para eliminar ese commit necesitas hacer un rebase interactivo.

3b4r4903 (ramaX)
549nf34
4m3400
904g4jf4
aaabbbccc

(date cuenta que a los commits que has puesto tu yo he añadido el commit aaabbbccc, que sería el padre de 904g4jf4)

El comando sería:


> git checkout ramaX
> git rebase -i aaabbbccc

Este comando abrirá un editor de texto con una pantalla similar a la siguiente:


pick 904g4jf Comentario de este commit...
pick 4m3400 Comentario de este commit...
pick 549nf34 Comentario de este commit...
pick 3b4r490 Comentario de este commit...

# Rebase aaabbbccc..3b4r490 onto 3b4r490 (4 commands)
#
# Commands:
# p, pick = use commit
# r, reword
= use commit, but edit the commit message
# e, edit
= use commit, but stop for amending
# s, squash
= use commit, but meld into previous commit
# f, fixup
= like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop
= remove commit
# l, label

Siguiendo las instrucciones que te muestra el comando en pantalla, en la línea correspondiente al commit 549nf34 sustituyas «pick» por «drop». Guarda y cierra tu editor y el rebase interactivo comenzará a ejecutarse.

Si te salen conflictos (cosa que dependerá de lo que tengas en los commits) resuelvelos, sube los ficheros al staging area con un git add y luego continúa el rebase con git rebase –continue.

Espero haberte resuelto la pregunta y, de nuevo, perdona el retraso.

]]>
Por: Daniel https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-59394 Thu, 05 Dec 2019 18:42:58 +0000 https://aprendegit.com/?p=630#comment-59394 Ejemplo tengo una serie de commits

3b4r4903
549nf34
4m3400
904g4jf4

Si yo quiero eliminar únicamente el 549nf34 pero quiero conservar los demás sin tener que eliminar el primero 3b4r4903 ,4m3400, 904g4jf4 ?

Que comando tengo que usar?

Que es lo que tengo que hacer?

]]>
Por: Oscar https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-26576 Tue, 23 Oct 2018 12:28:32 +0000 https://aprendegit.com/?p=630#comment-26576 Hola, buenos días.

Hice un commit que quedó en el repositorio local, luego hice un revert pero se me perdió el último código que había generado. Es posible recuperar ese código? Qué puedo hacer?

Gracias

]]>
Por: admin https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-16906 Thu, 28 Dec 2017 23:09:54 +0000 https://aprendegit.com/?p=630#comment-16906 En respuesta a JAvi.

Creo que ahora entiendo mejor la pregunta. Según me indicas, imagina tienes un fichero «» que modificas en 3 commits consecutivos (según el ejemplo que me has puesto).

Supongamos que este es el contenido del fichero en cada commit según me has indicado en el comentario anterior (en cada commit que haces modificas el fichero)


# Commit1
<a href="pagina1.html" rel="nofollow">Página 1</a>


# Commit2
<a href="pagina1.html" rel="nofollow">Página 1</a>
<a href="pagina2.html" rel="nofollow">Página 2</a>


# Commit3
<a href="pagina1.html" rel="nofollow">Página 1</a>
<a href="pagina2.html" rel="nofollow">Página 2</a>
<a href="pagina3.html" rel="nofollow">Página 3</a>

Si quieres borrar el fichero «» del primer commit, podrías hacerlo con un rebase interactivo en el que seleccionas la opción «edit» del primer commit para borrarlo. Eso sí, cuando regenere el segundo commit durante el rebase te va a dar conflictos ya que estarás modificando un fichero que en el paso anterior del rebase has borrado. Te pongo un ejemplo como hacerlo con un repo con commits reales:

Imagina que este es tu repositorio:

* d36db1d (master) Commit 3
* d7c982c Commit 2
* ac1a1c8 Commit 1
* 49bbab1 Commit inicial

Quieres borrar el fichero index del Commit 1 (ac1a1c8). El comando sería


#git rebase -i 49bbab1

Y en la interfaz que te sale para seleccionar las acciones del rebase interactivo estas quedarían:

edit ac1a1c8 Commit 1
pick d7c982c Commit 2
pick d36db1d Commit 3

Como te he comentado antes, en el primer paso del rebase al poner edit git te permite editar el commit en lugar de hacerlo automáticamente y ahí podrías borrar el fichero . También podrías usar la opción «exec» del rebase interactivo y borrar el fichero ejecutando un comando rm.

Cuando termines el primer paso del rebase interactivo y git genere el siguiente commit, te dará un conflicto ya que estarías intentando modificar el fichero que acabas de borrar. Lo resuelves y continúas el rebase hasta que aplique todos los commits.

¿Te he respondido a la pregunta?

]]>
Por: JAvi https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-16898 Thu, 28 Dec 2017 12:40:03 +0000 https://aprendegit.com/?p=630#comment-16898 En respuesta a admin.

Muy buenas,
no es que quiera borrar un fichero.

Pongamos siguiente ejemplo de ficheros que subo por commit:

Commit 1 –> fichero a modificado
Commit 2 –> fichero a modificado
Commit 3 –> fichero a modificado
Commit 4 –> fichero a modificado

De alguna manera sé, que el fichero «a» del commit 1 ya no lo voy a necesitar nunca mas.
La pregunta viene en como podría borrar ese fichero.

]]>
Por: admin https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-16897 Thu, 28 Dec 2017 11:44:38 +0000 https://aprendegit.com/?p=630#comment-16897 En respuesta a JAvi.

Hola Javi:

Si lo que quieres es borrar ciertos ficheros debes usar el comando «git rm». Por ejemplo:


#git rm fichero1.txt app/fichero2.txt
#git commit -m'Borrando ficheros!!'

A partir de este commit, los ficheros ya no estarán. Ten en cuenta, es sí, que si haces checkout de un commit anterior los ficheros volverán a aparecer en tu área de trabajo.

]]>
Por: JAvi https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-16896 Thu, 28 Dec 2017 10:36:40 +0000 https://aprendegit.com/?p=630#comment-16896 Buenos días,
en mi caso no es que me interese borrar un commit tal cual, sino que tengo la problemática de que necesito borrar ciertos ficheros que he subido en un commit.

Son ficheros que nunca mas voy a utilizar, ni siquiera para hacer un rollback ¿Como podría hacer ese borrado?

un saludo
Javi

]]>
Por: Mis Comandos Gits – Pedro Caicedo https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-12198 Mon, 28 Aug 2017 17:48:27 +0000 https://aprendegit.com/?p=630#comment-12198 […] Fuente: aprendegit-como-deshacer-el-ultimo-commit-en-git […]

]]>
Por: admin https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-12153 Fri, 25 Aug 2017 05:34:21 +0000 https://aprendegit.com/?p=630#comment-12153 En respuesta a hector.

Hola Hector:

cuando has ejecutado el comando git reset ¿la consola sólo te ha mostrado el mensaje «¿Más?» ? No recuerdo haber visto ese mensaje.

En cualquier caso, si has ejecutado «git reset HEAD^» estás utilizando la opción –mixed del comando reset de manera implícita y esto hace que tras ejecutar el comando que has puesto, el último commit se «elimine» y que las modificaciones del mismo permanecen en tu área de trabajo. De esta manera, aunque el commit lo dejes de ver, el código fuente sigue disponible en tu área de trabajo. Al ejecutar este comando de git, no te sale ningún mensaje por consola, git lo ejecuta y ya está.

Si quieres «eliminar» completamente ese commit y que el código fuente que se ha modificado vuelva estar como estaba antes de hacerlo, tendrías que ejecutar el comando «git reset –hard HEAD^». Pero ten mucho cuidado porque la opción –hard del comando reset borra cualquier cambio que tengas en tu área de trabajo. Antes de hacerlo asegurate de que tu área de trabajo está limpia y si no lo está usa el comando git stash para guardarla. Los comandos serían:

  • git stash
  • git reset –hard HEAD^
  • git stash pop

¿Te he aclarado un poco lo que me estabas preguntando?

]]>
Por: hector https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-12104 Tue, 15 Aug 2017 15:56:29 +0000 https://aprendegit.com/?p=630#comment-12104 Hola cuando realizo un git rebase -i HEAD~2 y utlilizo el edit en el ultimo commit
y me di cuenta que quiero eliminar el ultimo commit realizo git reset HEAD^
apreto enter y me sale por consola ¿Más? por lo que no se que estoy haciendo mal.
Si me pueden orientar se los agradeceria.
Saludos

]]>
Por: Azeroth https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-2330 Thu, 26 Feb 2015 12:34:33 +0000 https://aprendegit.com/?p=630#comment-2330 Gracias, justo lo que estaba buscando y muy bien explicado.

]]>
Por: alfonso https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-1281 Tue, 28 Jan 2014 06:46:03 +0000 https://aprendegit.com/?p=630#comment-1281 En respuesta a Mario.

¡¡De nada!! Gracias a tí por el feedback.

]]>
Por: Mario https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-1280 Sat, 25 Jan 2014 06:12:03 +0000 https://aprendegit.com/?p=630#comment-1280 Hola!

Vengo de Subversion y se me esta haciendo muy complicado comprender git. Esta explicación me lo ha dejado claro. Gracias!

Un saludo!:)

]]>
Por: alfonso https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-1155 Sun, 15 Sep 2013 05:46:09 +0000 https://aprendegit.com/?p=630#comment-1155 En respuesta a Rafa.

Hola Rafa:

Efectivamente, como bien pones en tu post está la opción git reset –soft HEAD~1. La opción por defecto es –mixed. La diferencia entre las dos:

–mixed: mantiene los ficheros pero no los marca como para hacer commit
–soft: mantiene los ficheros y los marca para hacer commit. Si ejecutas un git status, te aparecerán en la sección «Changes to be commited»

¡Gracias por la aclaración!

P.D. En la página de manual están las tres opciones: –hard –soft –mixed (https://www.kernel.org/pub/software/scm/git/docs/git-reset.html)

]]>
Por: Rafa https://aprendegit.com/como-deshacer-el-ultimo-commit-en-git/#comment-1148 Wed, 11 Sep 2013 17:19:54 +0000 https://aprendegit.com/?p=630#comment-1148 Yo descubrí 3 formas, y seguro que alguna forma más 😉

http://xthefull.blogspot.com.es/2013/08/git-reset-viaje-en-el-tiempo-local.html?m=1

]]>