Los comandos de Git son complicados y es posible que a menudo te encuentres pensando: «¡Al diablo con esto, empezaré de nuevo!». Afortunadamente, Git está diseñado para rastrear cada versión de sus cambios y, si cometió un error, proporciona herramientas para restablecer su repositorio a su antiguo estado de funcionamiento.
Guardar sus cambios (Git Stash)
Antes de ejecutar un comando para restablecer su repositorio, debe asegurarse de no perder los datos que desea guardar.
Git proporciona algunos tipos diferentes de reinicios. Los reinicios suaves y mixtos restablecerán el repositorio al estado en el que se encontraba en una determinada confirmación (a menudo, el HEAD de una rama), pero mantendrán los cambios locales que aún no haya confirmado. Los restablecimientos completos, por otro lado, son destructivos y desecharán los cambios que aún no se han realizado.
A menudo es necesario un reinicio completo para limpiar adecuadamente el repositorio. Sin embargo, si lo desea, puede «guardar» sus cambios, lo que tomará todos los cambios no confirmados y los almacenará localmente. Puedes abrir el alijo con «aplicar alijo» más adelante.
git stashgit stash apply
También puede crear una nueva rama, confirmar los cambios y luego restablecerla al maestro. Esto mantendría sus cambios en el historial de confirmaciones para siempre y también podría enviarse al control de fuente remoto para compartirlo con sus compañeros de trabajo.
Realizar un reinicio (Git Reset)
Primero, deberá obtener el estado más reciente del repositorio remoto, generalmente «origen», y luego verificar la rama maestra (o cualquiera que esté restableciendo).
git fetch origingit checkout master
También puede retirar y restablecer una confirmación individual usando su IDpor ejemplo, git checkout 342c47a4.
Luego, realice un restablecimiento completo (a menos que desee conservar los cambios con un restablecimiento parcial). Tenga en cuenta que esta operación es destructivo a cualquier cambio no guardado.
git reset --hard origin/master
Puede restablecer a una confirmación local en lugar de origen/maestro, pero la mayoría de las veces restablecerá el estado del control remoto.
Restablecer archivos sin seguimiento (Git Clean)
Sin embargo, git reset no suele ser suficiente. Restablecer en Git solo restablece los archivos de los que Git realmente realiza un seguimiento. Esto incluye código y recursos que reciben cambios.
Sin embargo, también hay archivos como paquetes, configuración local, artefactos/salidas de compilación, archivos de registro y otros elementos transitorios que no se almacenan en el repositorio de Git (y se ignoran en .gitignore). Para limpiarlos y llevar su repositorio local al 100% de paridad con el estado del control remoto, puede ejecutar git clean:
git clean -d --force
De hecho, puedes ejecutar este comando. sin ejecutar git reset, que en realidad puede ser lo que quieres. Si no desea afectar sus archivos de código, pero desea borrar sus compilaciones, registros y paquetes para comenzar de nuevo, git clean puede ser todo lo que necesita.
En su lugar, darse por vencido: clonar un nuevo repositorio
Si bien lo anterior es la «forma limpia» de hacerlo con los comandos oficiales de Git, hacer un reinicio completo no está muy lejos de simplemente destruir la carpeta de su repositorio local y clonar una nueva. No es ninguna vergüenza hacerlo si planeas restablecer todo de todos modos:
sudo rm -r git-repositorygit clone https://github.com/user/git-repository.git
cd git-repository
Tenga en cuenta que esto solo puede restablecerse al estado de su repositorio remoto, no a una confirmación local. Esto clonará la rama maestra de forma predeterminada, pero puedes cambiar a la rama que elijas con git switch o clonarla desde el principio con git clone -b