Rama temporal
Suponiendo que el proyecto está actualizado (esto es, con todos los cambios recientes incorporados mediante add, commit y push en su caso), puedes crear una rama temporal si vas a introducir cambios y no estás seguro del resultado:
git checkout -b nombre-de-la-rama
Con eso creas una rama separada donde puedes realizar los cambios necesarios. Si algo sale mal y quieres deshacerlos:
git checkout main
Eso nos devuelve a la rama principal (el tronco).
NOTA: cualquier cambio que hagas en tu código después de crear la rama, pero sin hacer commit, no está aún en la rama. Por lo tanto, si vuelves a main, los cambios seguirán ahí, pendientes. Si quieres volver a main y prescindir de todo lo que cambiaste tras crear la rama, primero haz:
git checkout main
Y luego:
git reset --hard HEAD
Esto restaurará los archivos al último commit en main.
NOTA 2: para deshacer cualquier cambio realizado en la rama temporal que ya hayas confirmado con commit, puedes descartarlo borrando la rama:
git branch -D nombre-de-la-rama
Importante: si haces checkout main después de hacer un commit en nombre-de-la-rama, la rama de prueba sigue existiendo con sus cambios, pero main no los tiene.
Finalmente, si has terminado con el trabajo en la rama y el resultado es satisfactorio, puedes volver a main e integrar los cambios:
git checkout main
git merge nombre-de-la-rama
Si ya no necesitas nombre-de-la-rama, puedes borrarla:
git branch -d nombre-de-la-rama
Si Git te dice que la rama no se puede borrar porque no está completamente fusionada, usa:
git branch -D nombre-de-la-rama
Durante el desarrollo de la rama, para subir el código al repositorio remoto:
git push origin nombre-de-la-rama