lab 16 Deshacer Cambios Confirmados (Committed)
Metas
- Aprender a revertir los cambios que se enviaron a Commit en un repositorio local.
Deshacer Commits 01
Algunas veces se da cuenta que el cambio que ya está confirmado era incorrecto y desea deshacer ese Commit. Hay varias formas de manejar este asunto, y la manera en que vamos a usar en este laboratorio siempre es segura.
Esencialmente desharemos el Commit al crear un nuevo Commit que retorne el cambio no deseado.
Cambie el archivo y haga el Commit. 02
Cambie el archivo hello.rb
con lo siguiente.
Archivo: hello.rb
# This is an unwanted but committed change name = ARGV.first || "World" puts "Hello, #{name}!"
Ejecute:
git add hello.rb git commit -m "Oops, we didn't want this commit"
Crear y Revertir Commit 03
Para deshacer el cambio confirmado, necesitamos generar un commit que quite los cambios introducidos en nuestro Commit no deseado.
Ejecute:
git revert HEAD
Esto hará aparecer el editor. Puede editar el mensaje por defecto del Commit o dejarlo como está. Guarde y cierre el archivo. Debería ver …
Salida:
$ git revert HEAD --no-edit [master 9ad227a] Revert "Oops, we didn't want this commit" 1 files changed, 1 insertions(+), 1 deletions(-)
Debido a que estamos deshaciendo el último Commit que hicimos, podemos usar HEAD
como el argumento a revertir. Podemos revertir arbitrariamente cualquier Commit en el historial simplemente al especificar su hash.
Nota: El parámetro --no-edit
en la salida puede ser ignorado. Esto es necesario para generar la salida sin abrir el editor.
Revise el log 04
Al revisar el log nos muestra ambos Commit, el no deseado y el Commit paa revertir los cambios en nuestro repositorio.
Ejecute:
git hist
Salida:
$ git hist * 9ad227a 2012-03-06 | Revert "Oops, we didn't want this commit" (HEAD, master) [Jim Weirich] * d20d016 2012-03-06 | Oops, we didn't want this commit [Jim Weirich] * 4054321 2012-03-06 | Added a comment (v1) [Jim Weirich] * 1b754e9 2012-03-06 | Added a default value (v1-beta) [Jim Weirich] * 3053491 2012-03-06 | Using ARGV [Jim Weirich] * 3cbf83b 2012-03-06 | First Commit [Jim Weirich]
Esta técnica funcionará con cualquier commit (aunque puede que tenga que resolver conflictos). Es seguro de usar aún en ramas que están públicamente compartirdas en repositorios remotos.
A Continuación 05
Como siguiente paso, veremos una técnica que puede ser usada para quitar los Commits más recientes del repositorio público.