Cómo comprobar si un repositorio de Git está limpio

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ás cómo comprobar de manera eficiente si un repositorio de Git está limpio utilizando el comando git status --porcelain. Este comando proporciona una salida legible por máquina, lo que lo hace ideal para scripting y comprobaciones rápidas de estado.

Explorarás la diferencia entre el git status estándar y la versión --porcelain, observando cómo cambia la salida cuando el repositorio está limpio en comparación con cuando contiene archivos no rastreados o modificados. Esta experiencia práctica demostrará cómo verificar la ausencia de cambios pendientes de forma programática.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/add -.-> lab-560095{{"Cómo comprobar si un repositorio de Git está limpio"}} git/status -.-> lab-560095{{"Cómo comprobar si un repositorio de Git está limpio"}} end

Utiliza git status --porcelain para comprobar si está limpio

En este paso, aprenderemos sobre una variante útil del comando git status: git status --porcelain. Este comando proporciona una salida limpia y legible por máquina, ideal para scripting o comprobar rápidamente el estado sin todo el texto adicional.

Primero, asegúrate de estar en el directorio de tu proyecto. Abre tu terminal y escribe:

cd ~/project/my-time-machine

Ahora, ejecuta de nuevo el comando git status estándar para ver el estado actual de nuestro repositorio. Dado que acabamos de hacer un commit en el paso anterior, debería estar limpio:

git status

Deberías ver una salida similar a esta, lo que indica que tu directorio de trabajo está limpio:

On branch master
nothing to commit, working tree clean

Ahora, probemos la versión porcelain:

git status --porcelain

Este comando no debería producir ninguna salida si tu repositorio está limpio. Esta es la diferencia clave: solo muestra la salida para archivos que no están rastreados, modificados o preparados (staged). Esto lo hace muy útil para comprobar rápidamente si hay cambios pendientes.

¿Por qué es esto útil? Imagina que estás escribiendo un script que necesita saber si hay cambios no confirmados antes de realizar una acción. Analizar la salida regular de git status puede ser complicado porque está diseñada para ser leída por humanos. La salida de --porcelain está diseñada para scripts, lo que facilita comprobar los cambios de forma programática.

En el siguiente paso, veremos cómo cambia la salida cuando tenemos archivos no rastreados o modificados.

Verificar que no hay archivos no rastreados o modificados

En este paso, verificaremos explícitamente que el comando git status --porcelain no produce salida cuando el repositorio está limpio. Esto refuerza el concepto de que este comando está diseñado para mostrar solo cambios.

Primero, asegúrate de estar en el directorio correcto:

cd ~/project/my-time-machine

Ahora, ejecuta de nuevo el comando git status --porcelain. Dado que no hemos realizado ningún cambio desde el último commit, no debería haber salida.

git status --porcelain

Si tu terminal no muestra ninguna salida después de ejecutar este comando, significa que tu directorio de trabajo está limpio y no hay archivos no rastreados o modificados. Este es el comportamiento esperado para un repositorio limpio cuando se utiliza la opción --porcelain.

Esta ausencia de salida es una señal clara de que Git no ve nada nuevo o cambiado que necesite ser rastreado o confirmado. Es una forma rápida y eficiente de confirmar que estás partiendo de un estado limpio antes de realizar nuevos cambios o llevar a cabo otras operaciones de Git.

En el siguiente paso, introduciremos algunos cambios para ver cómo cambia la salida de --porcelain.

Probar con diferentes estados de repositorio

En este paso, crearemos algunos cambios en nuestro repositorio para ver cómo git status --porcelain los reporta. Esto te ayudará a entender los diferentes códigos utilizados en la salida porcelain.

Primero, asegúrate de estar en el directorio correcto:

cd ~/project/my-time-machine

Ahora, creemos un nuevo archivo no rastreado. Lo llamaremos notes.txt:

echo "Some random notes" > notes.txt

Ejecutemos git status --porcelain de nuevo:

git status --porcelain

Ahora deberías ver una salida similar a esta:

?? notes.txt

El ?? indica que notes.txt es un archivo no rastreado. Git ve el archivo, pero actualmente no está gestionando sus versiones.

A continuación, modifiquemos el archivo message.txt que confirmamos anteriormente. Agregaremos otra línea a él:

echo "Hello again, Future Me" >> message.txt

El operador >> agrega el texto al archivo existente, en lugar de sobrescribirlo.

Ahora, ejecutemos git status --porcelain una vez más:

git status --porcelain

Deberías ver una salida similar a esta:

 M message.txt
?? notes.txt

La M indica que message.txt ha sido modificado. El espacio antes de la M significa que el cambio está en el directorio de trabajo, pero aún no se ha preparado (staged). El ?? para notes.txt permanece porque sigue siendo un archivo no rastreado.

Finalmente, preparemos (stage) el archivo message.txt modificado utilizando git add:

git add message.txt

Y ejecutemos git status --porcelain por última vez:

git status --porcelain

La salida ahora debería verse así:

M  message.txt
?? notes.txt

La M ahora está en la primera columna, lo que indica que message.txt ha sido preparado (staged) para confirmar (commit). El espacio en la segunda columna significa que no hay más modificaciones en el directorio de trabajo desde que se preparó. notes.txt sigue siendo un archivo no rastreado.

Comprender estos códigos (?? para archivos no rastreados, M en la segunda columna para archivos modificados pero no preparados, M en la primera columna para modificaciones preparadas) es clave para interpretar rápidamente la salida de git status --porcelain.

Resumen

En este laboratorio, aprendimos cómo verificar si un repositorio de Git está limpio utilizando el comando git status --porcelain. Descubrimos que este comando proporciona una salida legible por máquina, que está vacía cuando el directorio de trabajo está limpio. Esto contrasta con la salida estándar de git status, que proporciona información legible por humanos incluso cuando está limpio.

Practicamos ejecutar git status --porcelain en un repositorio limpio y observamos que no produjo salida, lo que confirma su utilidad para la escritura de scripts y para comprobaciones rápidas de cambios pendientes.