Cómo comprobar si un repositorio de Git tiene archivos no rastreados

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo identificar archivos no rastreados dentro de un repositorio de Git. Comprender los archivos no rastreados es crucial para gestionar el estado de su proyecto y garantizar que solo se incluyan en el control de versiones los archivos relevantes.

Comenzaremos utilizando el comando fundamental git status para enumerar los archivos no rastreados y entender su salida. A continuación, exploraremos el comando git ls-files --others, que proporciona una forma más directa de enumerar los archivos no rastreados. Finalmente, abordaremos brevemente cómo considerar los archivos ignorados en este proceso.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/SetupandConfigGroup -.-> git/config("Set Configurations") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/config -.-> lab-560093{{"Cómo comprobar si un repositorio de Git tiene archivos no rastreados"}} git/status -.-> lab-560093{{"Cómo comprobar si un repositorio de Git tiene archivos no rastreados"}} end

Ejecutar git status para enumerar archivos no rastreados

En este paso, aprenderemos cómo usar el comando git status para ver qué archivos en el directorio de nuestro proyecto no están siendo rastreados por Git. Este es un comando fundamental para entender el estado de tu repositorio.

Primero, asegúrate de estar en el directorio de tu proyecto. Si seguiste el laboratorio anterior, debes estar en el directorio ~/project/my-time-machine. Puedes verificar tu directorio actual utilizando el comando pwd:

pwd

La salida debe ser similar a:

/home/labex/project/my-time-machine

Ahora, creemos un nuevo archivo en este directorio. Lo llamaremos notes.txt:

echo "Some random notes" > notes.txt

Este comando crea un archivo llamado notes.txt y escribe el texto "Some random notes" en él.

Ahora, ejecutemos git status para ver cómo Git ve este nuevo archivo:

git status

Deberías ver una salida similar a esta:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt

no changes added to commit (use "git add" and/or "git commit -a")

Observa la sección "Untracked files:" (Archivos no rastreados). Git nos dice que notes.txt es un archivo no rastreado. Esto significa que Git ve el archivo, pero actualmente no está gestionando sus versiones. Git no incluirá este archivo en los commits a menos que se lo indiques explícitamente.

Comprender los archivos no rastreados es importante porque te ayuda a mantener tu repositorio limpio y a rastrear solo los archivos que forman parte de tu proyecto. A menudo, los archivos temporales, los artefactos de compilación o las notas personales se dejan sin rastrear.

Utilizar git ls-files --others para la comprobación

En el paso anterior, utilizamos git status para ver los archivos no rastreados. Si bien git status ofrece una buena visión general del estado del repositorio, a veces es posible que desees una lista más simple solo de los archivos no rastreados. Aquí es donde resulta útil git ls-files --others.

Asegúrate de que todavía estés en el directorio ~/project/my-time-machine.

Ahora, ejecuta el siguiente comando:

git ls-files --others

Deberías ver la siguiente salida:

notes.txt

Este comando enumera todos los archivos en tu directorio de trabajo que no son rastreados por Git. Es una forma más directa de ver solo los archivos no rastreados en comparación con la salida detallada de git status.

La opción --others le indica a git ls-files que solo liste los archivos que no forman parte del índice de Git (es decir, no son rastreados). Esto es útil para la programación de scripts o cuando solo necesitas una lista rápida de lo que es nuevo y no rastreado en tu proyecto.

Puedes preguntarte por qué utilizarías git ls-files --others en lugar de git status. Si bien git status proporciona una vista integral que incluye archivos modificados y preparados para el commit, git ls-files --others está diseñado específicamente para listar solo los archivos no rastreados. Esto puede ser muy útil cuando deseas procesar o gestionar los archivos no rastreados de forma programática, por ejemplo, en un script que limpie archivos temporales.

Combinar con la comprobación de archivos ignorados

En los pasos anteriores, aprendimos cómo identificar archivos no rastreados utilizando git status y git ls-files --others. Sin embargo, a veces tienes archivos que intencionalmente no quieres que Git rastree, como archivos temporales, salidas de compilación o archivos de configuración que contengan información sensible. Git te permite especificar estos archivos en un archivo .gitignore.

En este paso, crearemos un archivo .gitignore y veremos cómo afecta a la salida de git status y git ls-files --others.

Primero, asegúrate de estar en el directorio ~/project/my-time-machine.

Ahora, creemos un archivo que queramos ignorar. Lo llamaremos temp.log:

echo "This is a temporary log file" > temp.log

Ejecuta git status de nuevo:

git status

Deberías ver tanto notes.txt como temp.log enumerados como archivos no rastreados:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt
        temp.log

no changes added to commit (use "git add" and/or "git commit -a")

Ahora, creemos un archivo .gitignore y agreguemos temp.log a él. Utiliza el editor nano para crear y editar el archivo:

nano .gitignore

Dentro del editor nano, escribe la siguiente línea:

temp.log

Presiona Ctrl + X, luego Y para guardar y Enter para confirmar el nombre del archivo.

Ahora, ejecuta git status una vez más:

git status

Esta vez, temp.log ya no debería aparecer en la lista de "Archivos no rastreados":

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git ahora sabe que debe ignorar temp.log. Veamos también cómo se ve afectado git ls-files --others:

git ls-files --others

La salida ahora solo debe mostrar notes.txt:

notes.txt

Por defecto, git ls-files --others no enumera los archivos ignorados. Este suele ser el comportamiento deseado, ya que normalmente no quieres ver los archivos que has indicado explícitamente a Git que ignore.

Si quieres ver los archivos ignorados junto con otros archivos no rastreados, puedes utilizar la opción --ignored con git ls-files --others:

git ls-files --others --ignored

La salida ahora incluirá tanto archivos no rastreados como archivos ignorados:

.gitignore
notes.txt
temp.log

Ten en cuenta que .gitignore en sí es un archivo no rastreado hasta que lo agregues y confirmes.

Comprender cómo usar .gitignore es crucial para mantener tu repositorio limpio y centrado en los archivos reales del proyecto. Evita la confirmación accidental de archivos que no deberían estar bajo control de versiones.

Resumen

En este laboratorio (lab), aprendimos cómo identificar archivos no rastreados en un repositorio de Git. Comenzamos utilizando el comando fundamental git status, que proporciona una visión general integral del estado del repositorio, incluyendo una sección dedicada a los archivos no rastreados. Este comando es esencial para entender qué archivos Git no está gestionando actualmente.

Luego exploramos el comando git ls-files --others como un método alternativo para enumerar los archivos no rastreados. Este comando ofrece una salida más simple, listando solo los archivos no rastreados en sí. Si bien no se proporciona el contenido completo del tercer paso, el título sugiere que implicaría combinar esta comprobación con la consideración de archivos ignorados, que son archivos intencionalmente excluidos del seguimiento de Git a través de un archivo .gitignore.