Git Eliminar cambios no confirmados
-
Use
git checkoutpara eliminar cambios no confirmados en Git -
Use
git resetpara eliminar cambios no confirmados en Git -
Use
git stashygit stashpara 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
--hardespecifica 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 statuspara verificar los archivos de trabajo. - Alias
HEADpara 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 checkoutsolo 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 HEADpuede ser más corto que el anterior pero es potencialmente peligroso.git stashcongit 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