A veces, el archivo no rastreado no es desechable; es trabajo que quieres conservar. En este caso, el enfoque correcto es añadir el archivo al sistema de seguimiento de Git mediante su commit. Esta sección también cubre las mejores prácticas para evitar que este error ocurra en primer lugar.
Primero, volvamos a la rama main y recreemos nuestro archivo conflictivo.
cd ~/project/git-checkout-demo
git checkout main
echo "## My local changes to feature documentation" > feature.md
Método: Seguir el Archivo
Si el archivo no rastreado es importante, debes hacerle un commit a la rama actual.
-
Añade el archivo al área de preparación (staging area).
git add feature.md
-
Haz commit del archivo preparado.
git commit -m "Add local version of feature.md"
Ahora que tus cambios están guardados de forma segura en la rama main, Git puede manejar el cambio. Cuando hagas checkout a feature-branch, Git simplemente reemplazará el archivo del espacio de trabajo con la versión de esa rama.
git checkout feature-branch
El checkout es exitoso. Tus cambios confirmados están seguros en el historial de la rama main.
Mejor Práctica: Usar .gitignore
Para evitar que ciertos archivos (como logs, artefactos de compilación o archivos de entorno) sean rastreados, debes usar un archivo .gitignore. Git ignorará cualquier archivo o directorio que coincida con los patrones en .gitignore, evitando que se conviertan en archivos no rastreados conflictivos.
Creemos un archivo .gitignore para ignorar todos los archivos .log.
## Vuelve a main para añadir el archivo .gitignore
git checkout main
## Crea el archivo .gitignore
echo "*.log" > .gitignore
Ahora, crea un archivo de log.
touch app.log
Verifica el estado.
git status
Observa que app.log no aparece como un archivo no rastreado. Sin embargo, el propio archivo .gitignore no está rastreado.
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Siempre debes hacer commit de tu archivo .gitignore para que las reglas se compartan en todo el proyecto.
git add .gitignore
git commit -m "Add .gitignore to ignore log files"
Al hacer commits frecuentemente y usar .gitignore de manera efectiva, puedes reducir significativamente las posibilidades de encontrar este error de checkout.