Git Eliminar cambios no confirmados
-
Use
git checkout
para eliminar cambios no confirmados en Git -
Use
git reset
para eliminar cambios no confirmados en Git -
Use
git stash
ygit stash
para eliminar cambios no confirmados en Git
Este artículo lo guiará sobre cómo deshacer los cambios no confirmados que hemos realizado en el repositorio local.
Cuando trabajamos con una función, primero podemos crear nuevos archivos, agregar cambios a los archivos existentes y luego eliminar algunos archivos. Eventualmente, nos damos cuenta de que todo está mal y necesitamos volver al commit anterior. ¿Qué debemos hacer?
$ echo 'Add new implementation' > feature.txt
$ echo 'Enhance exising feature' >> file.txt
$ git add file.txt
$ rm deprecated_feature.txt
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file.txt
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: deprecated_feature.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
Tenemos varias formas de lograrlo.
Use git checkout
para eliminar cambios no confirmados en Git
Este comando revertirá los cambios no confirmados para los archivos rastreados. Los archivos rastreados son archivos que git conoce, generalmente después de haber sido agregados por git add
$ git checkout .
Updated 2 paths from the index
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
nothing added to commit but untracked files present (use "git add" to track)
Tenga en cuenta que git checkout
no funcionará si los archivos ya se han agregado al área de preparación a través de git add
.
$ echo 'Enhance exising feature' >> file.txt
$ git add file.txt
$ git checkout file.txt
Updated 0 paths from the index
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
En el ejemplo anterior, los cambios en file.txt
no se revierten porque este archivo está en el área de ensayo.
Use git reset
para eliminar cambios no confirmados en Git
Para eliminar los cambios no confirmados en el área de preparación, debemos seguir los siguientes pasos.
- Quite el archivo del área de ensayo con
git reset
. - Deshacer cambios usando
git checkout
.
$ git reset file.txt
Unstaged changes after reset:
M file.txt
$ git checkout file.txt
Updated 1 path from the index
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
nothing added to commit but untracked files present (use "git add" to track)
Otra forma de eliminar los cambios no confirmados usando git reset
es con la opción --hard
y los parámetros HEAD
.
$ git reset --hard HEAD
HEAD is now at 1e087f5 Make some change to file.txt
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
nothing added to commit but untracked files present (use "git add" to track)
- La opción
--hard
especifica a Git para lanzar TODOS los cambios entre el estado actual y el commit en el último argumento. Por esa razón, este comando se considera peligroso y debe usarse después de ejecutargit status
para verificar los archivos de trabajo. - Alias
HEAD
para el último commit.
Use git stash
y git stash
para eliminar cambios no confirmados en Git
El inconveniente de git checkout
y git reset
es que no pudieron eliminar archivos sin seguimiento. feature.txt
persiste después de ejecutar esos comandos.
Considere el primer ejemplo.
$ echo 'Add new implementation' > feature.txt
$ echo 'Enhance exising feature' >> file.txt
$ git add file.txt
$ rm deprecated_feature.txt
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file.txt
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: deprecated_feature.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
Para eliminar todos los cambios no confirmados, incluidos los archivos preparados, con seguimiento pero sin preparar y archivos sin seguimiento. Vamos a usar el enfoque prolijamente git stash
.
git stash
nos permite guardar los cambios pero no requiere un git commit
; actúa como almacenamiento temporal para archivos no comprometidos.
Después de agregar cambios al almacenamiento temporal, le diremos a Git que descarte
los que están almacenados. Por lo tanto, todos los cambios no confirmados desaparecerán.
$ git add .
$ git stash
Saved working directory and index state WIP on main: 16b9767 deprecated_feature.txt
$ git stash drop
Dropped refs/stash@{0} (aebeb2cbdcec917331f5793ef1238f5a525d29ec)
$ git status
On branch main
nothing to commit, working tree clean
En resumen, tenemos varios enfoques para eliminar los cambios no confirmados:
git checkout
solo es útil cuando los archivos no están en el área de preparación.git reset
útil para los cambios que están en el área de preparación pero no pueden eliminar los cambios en los archivos sin seguimiento, requiere una combinación congit checkout
.git reset --hard HEAD
puede ser más corto que el anterior pero es potencialmente peligroso.git stash
congit add .
puede eliminar todo, incluidos los archivos sin seguimiento.
Artículo relacionado - Git Commit
- Agregar todos los archivos para confirmar excepto un archivo
- Agregar un archivo a la última confirmación en Git
- Cierra el editor de Git Commit en Windows
- Combinar selectivamente los cambios de diferentes ramas en Git
- Comprender la función de aprobación de Git Commit
- Confirmaciones de la lista de Git