GIT: Deshacer cosas

  • En cualquier momento vamos a querer deshacer algo como por ejemplo el mensaje de un commit o cuando modifico dos archivos y los añadió al «SA» y luego se dio cuenta que debían ser en dos commit’s separados entonces como hacemos esto? o realizó un commit y se dio cuenta que le falto incluir un archivo en el «SA»
git status
En la rama master
Cambios no preparados para el commit:
 (use «git add <archivo>...» para actualizar lo que se confirmará)
 (use «git checkout -- <archivo>...» para descartar cambios en el directorio de trabajo)

 modificado: css/estilo.css

no hay cambios agregados al commit (use «git add» o «git commit -a»)
  • ¿Cómo incluimos el «estilo.css»?
git add -A
git commit --amend
git log
  • Con esto incluimos el nuevo archivo y modificamos al último commit para que sea uno
commit 1c2c2e35347c6b7f556e21710c3ea2ebb381b3cb (HEAD -> master)
Author: abelhongo1983 <gustavo.matamoros.gonzalez@una.ac.cr>
Date: Thu Mar 8 15:22:06 2018 -0600

 Modificado el estilo

Deshacer un Archivo Preparado

  • Que pasa para el caso que modificar dos archivos y los añadió al «SA» y luego se dio cuenta que debían ser en dos commit’s separados entonces cómo hacemos para sacarlos del «SA»? 
  • Vamos a modificar dos archivos, los añadimos al «SA» y vamos a ver el estado:
git add -A
git status
En la rama master
Cambios para hacer commit:
 (use «git reset HEAD <archivo>...» para sacar del stage)

 modificado: css/estilo.css
 nuevo archivo: index.html
  • Ahora si necesitamos sacar «estilos.css»
git reset HEAD css/estilo.css
git status
 En la rama master
Cambios para hacer commit:
 (use «git reset HEAD <archivo>...» para sacar del stage)

 modificado: index.html

Cambios no preparados para el commit:
 (use «git add <archivo>...» para actualizar lo que se confirmará)
 (use «git checkout -- <archivo>...» para descartar cambios en el directorio de trabajo)

 modificado: css/estilo.css
  • Ya lo hemos sacado el «SA» ya que reset si parámetros solo afecta el «SA»

Deshacer un Archivo Modificado

  • Ahora continuando con el ejemplo que pasa si nos damos cuenta que no deseamos los cambios hechos sobre «estilo.css» y lo deseamos regresar al último commit?
  • Para esto utilizamos el comando checkout — file
git checkout -- css/estilo.css
git status
  • Con esto hemos sobrescrito el archivo a la versión del último commit
En la rama master
Cambios para hacer commit:
 (use «git reset HEAD <archivo>...» para sacar del stage)

 modificado: index.html