Restablecer y restaurar en Git
Git tiene algunos comandos que hacen cosas con archivos individuales, pero son bastante raros. Estos comandos son git add
, git rm
, git mv
, git checkout
, git reset
, git restore
y sus respectivos opuestos.
Sin embargo, Git es inteligente; recuerda dónde tenemos el trabajo que hemos obtenido para que pueda recuperarlo más tarde desde el siguiente marcador de recuperación. Significa que podemos tener un repositorio de Git que contenga solo los commits que hemos creado localmente. Si ya hemos obtenido las mismas commits de otro repositorio, Git puede evitar recuperarlas nuevamente.
Aquí, en este artículo, discutiremos los dos comandos importantes de Git:
git restore
git reset
Comando git restore
El comando restore
de Git se usa para restaurar archivos en el árbol de trabajo desde el índice u otra commit. Este comando no actualiza la rama actual. También puede restaurar archivos en el índice desde otra commit. Es muy útil si queremos usar el código de un commit diferente al compromiso en la rama actual. El comando restore
ayuda a descartar cambios locales no confirmados en la rama local.
Git restore
se puede usar en tres situaciones diferentes, dependiendo de la situación actual, si nos gusta revertir el trabajo en la copia de trabajo o en el índice, o en ambos.
git restore [--worktree] <file>
El comando anterior sobrescribirá <file>
en nuestra copia de trabajo junto con el contenido de nuestro archivo de índice. O podemos decir que revierte nuestros cambios en la copia de trabajo. No importa si lo especificamos porque se sugiere si no decimos lo contrario.
git restore --staged <file>
El comando anterior sobrescribirá <file>
en nuestro archivo de índice con el presente HEAD del repositorio local. O podemos decir los cambios no confirmados del contenido recientemente organizado. No estará mal si decimos que es igual al antiguo git reset HEAD <file>
.
git restore --staged --worktree --source HEAD <file>
Para sobrescribir tanto, como se mencionó anteriormente, la copia de trabajo y el índice con el presente HEAD, usamos el comando anterior. Esta versión podrá hacer ambas cosas: revertir nuestra copia de trabajo a HEAD y deshacer el trabajo preparado recientemente de la rama local actual.
Comando Git restablecer
Git reset
se trata de actualizar nuestra rama, moviendo la punta para agregar o eliminar commits de la rama. Esta operación cambia el historial de commits. Git reset
se usa para restaurar el índice, superponiéndose con Git restore. Si se cambia un archivo, ya sea mediante una edición manual o mediante un método git add, git reset
no lo maneja bien.
El archivo se copia en la nueva commit y luego se marca como eliminado en la commit anterior. Da una advertencia de que el archivo parece haber sido eliminado de la copia de trabajo. Git reset tampoco maneja bien los cambios de nombre. No significa eliminar un archivo y agregar un archivo con el mismo nombre, pero lo hace.
El comando reset
no se puede utilizar para mover archivos en la copia de trabajo. Los archivos no solo se copian en un commit diferente; se eliminan de la copia de trabajo y se restauran como archivos nuevos en la commit de destino. Cuando hemos realizado cambios no deseados en un archivo, no es necesario eliminar el archivo. Podemos deshacer todos los cambios en un archivo, pero no deshace el archivo en sí.
Diferencia entre git reset
y git restore
El comando restore
nos ayuda a eliminar o descartar cambios locales no confirmados. Se puede usar para restaurar archivos en el árbol de trabajo desde el índice u otra commit. Este comando no actualiza nuestra rama. También puede ser útil restaurar archivos en el índice desde otro commit.
Git reset
se usa para actualizar la rama actual. También puede ser útil restaurar el índice, cruzando con git restore. Git reset
se usa para restablecer el índice para descartar cambios en el árbol de trabajo. Este comando no actualizará nuestra rama. Se usa principalmente con la opción --soft
, que solo restablece el índice y deja el árbol de trabajo sin cambios. Es útil si tenemos cambios escenificados que no queremos descartar.
Git reset
se completará con éxito si el directorio de trabajo está limpio (no se deben confirmar cambios), mientras que Git Restore
fallará si el directorio de trabajo está limpio. Ambos pueden afectar la CABEZA. Sin embargo, git restore
solo afectará a HEAD indirectamente a través del área de preparación. Git reset
puede trabajar directamente con el índice y el HEAD. Ambos pueden afectar la CABEZA. La restauración
de Git solo afectará al índice y al HEAD indirectamente a través del área de ensayo.
Git reset
se puede usar para modificar el repositorio local solo si aún no hemos enviado nada. Si hemos enviado al servidor remoto, git-reset modificará el área de preparación y la copia de trabajo, pero no el repositorio. Es útil si queremos deshacer cambios locales pero no queremos volver a introducirlos.
Git restore
es lo contrario, ya que solo se puede usar para modificar nuestro repositorio, no el área de preparación o la copia de trabajo local. No afectará a ningun commit que hayamos impulsado.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedInArtículo relacionado - Git Reset
- Diferencia entre Git RM --Cached y Git Reset File
- Diferencia entre los comandos Git Reset, Revert y Checkout
- Haga que la rama de desarrollo sea idéntica a la rama principal
- Revertir una combinación de Git con conflictos
- Varios métodos utilizados para eliminar los cambios locales de Git
- Deshacer cambios en Git