Deshacer cambios en Git

John Wachira 15 febrero 2024
  1. Use el comando git log para verificar el historial de commits en Git
  2. Use el comando git clean para deshacer cambios en Git
  3. Use el comando git revert para deshacer cambios en Git
  4. Use el comando git reset para deshacer cambios en Git
Deshacer cambios en Git

Este tutorial cubre los diversos comandos para deshacer cambios en sus repositorios locales y remotos. Estos comandos incluyen:

  1. git clean
  2. git reset
  3. git revert

Use el comando git log para verificar el historial de commits en Git

Primero veamos cómo verificamos el historial de nuestras commits. Comprobamos esto usando el comando git log.

pc@JOHN MINGW64 ~/Git (main)
$ git log
commit 195e5c362975354d62ebc469da2e3cd276c7da03 (HEAD -> main)
Author: John <wachirajohnie11@gmail.com>
Date:   Mon Feb 21 12:11:12 2022 +0300
commit 7b19db4b35c1ca15e5ecb8df1f805d44aad62e5f
Author: John <wachirajohnie11@gmail.com>
Date:   Mon Feb 21 10:09:31 2022 +0300
   first commit

El comando solo muestra el historial de su rama de trabajo. Para verificar todas las ramas, use el siguiente comando.

git log --branches=*

Use el comando git checkout para ver un commit específica, como se muestra a continuación.

git checkout

Ahora puede acceder a los archivos sin alterar el estado actual de su proyecto. Utilice el comando git checkout main para volver al espacio de trabajo del proyecto actual.

Use el comando git clean para deshacer cambios en Git

Usamos el comando git clean para deshacer cambios en archivos sin seguimiento. No puede deshacer un comando git clean.

  1. La opción git clean -n actúa como un comando de prueba. Solo muestra los archivos sin seguimiento, pero no los elimina.

Ejemplo:

```bash
pc@JOHN MINGW64 ~/Git (main)
$ git clean -n
Would remove Hello world.txt
Would remove Test1.txt
```
  1. El comando git clean --force elimina todos los archivos y carpetas sin seguimiento en su directorio de trabajo. Puede usar el comando .gitignore para lanzar excepciones.

Ejemplo:

```bash
pc@JOHN MINGW64 ~/Git (main)
$ git clean --force
Removing Hello world.txt
Removing Test1.txt
```

Comprobemos si los archivos están en nuestro directorio.

```bash
pc@JOHN MINGW64 ~/Git (main)
$ git status
On branch main
nothing to commit, working tree clean
```

La salida muestra una rama limpia. El comando eliminó los archivos con éxito.

Use el comando git revert para deshacer cambios en Git

El comando git revert actúa sobre los cambios realizados por un commit y los sobrescribe. Lo usamos para volver a un punto y hacer cambios.

Usemos el comando para cambiar nuestro first commit.

git revert first commit
#[first commit [7b19db4] Revert 'first commit'
#1 file changed, 1 deletion(-)

Tienes que pasar una referencia de compromiso.

Use el comando git reset para deshacer cambios en Git

El último comando que cubriremos es el git reset. Este comando opera en el HEAD.

  1. La opción git reset --hard cambia el commit especificada. Sin embargo, cualquier cambio en el índice de ensayo y su directorio de trabajo coincide con los cambios. Todas las commits por etapas se pierden en el proceso.

Ejemplo:

```bash
$ git reset --hard
HEAD is now at 78129a6 Revert "$first commit"
```

El comando ejecuta un hard reset al HEAD.

  1. El comando git reset --mixed guarda los cambios del índice de preparación en su directorio de trabajo.

Ejemplo:

```bash
$ git reset --mixed
Unstaged changes after reset:
M       .bash_history
M       text.txt.txt
M       text.txt.txt.bak
```

El comando ha guardado los cambios deshechos en nuestro directorio de trabajo desde la salida. Comprobemos el estado de nuestra rama.

```bash
$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
		modified:   .bash_history
		modified:   text.txt.txt
		modified:   text.txt.txt.bak
Untracked files:
  (use "git add <file>..." to include in what will be committed)
		.bash_history.bak
no changes added to commit (use "git add" and/or "git commit -a")
```
  1. El comando git reset --soft solo cambia el historial de commits. El puntero por defecto es siempre el HEAD.

Ejemplo:

```bash
pc@JOHN MINGW64 ~/Git (main)
$ git reset --soft
pc@JOHN MINGW64 ~/Git (main)
$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
		modified:   .bash_history
		modified:   text.txt.txt
		modified:   text.txt.txt.bak
Untracked files:
  (use "git add <file>..." to include in what will be committed)
		.bash_history.bak
no changes added to commit (use "git add" and/or "git commit -a")
```

A partir del resultado anterior, nuestro directorio de trabajo y el índice de preparación no se modifican. Use el hash de su confirmación para restablecer un commit específica.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Artículo relacionado - Git Reset