Curso
Cuando trabajas en un proyecto complejo con Git, es fácil perder de vista qué archivos se han modificado, cuáles están en staging y cuáles siguen sin seguimiento. Ahí es donde entra en juego git status. Este comando esencial de Git te ofrece una instantánea clara y completa del estado actual de tu repositorio, destacando qué archivos han cambiado, qué está listo para hacer commit y qué aún necesita atención.
Tanto si estás resolviendo conflictos de fusión, revisando cambios en staging o asegurándote de no dejar nada atrás antes de un commit, git status te da la visibilidad que necesitas para mantener el orden.
En esta guía, explicaré cada sección de la salida de git status y comentaré personalizaciones avanzadas para ayudarte a tener más control sobre tu flujo de trabajo de control de versiones.
¿Qué es git status?
El comando git status ofrece un resumen en tiempo real del estado de tu repositorio de Git. Concretamente, compara el directorio de trabajo (tus archivos locales) y el área de staging (también llamada índice) con la última instantánea confirmada. Así puedes ver qué archivos se han modificado, qué cambios están en staging y listos para commit y qué archivos nuevos siguen sin seguimiento.
Al ejecutar git status, los desarrolladores verifican que los cambios correctos estén en staging o en commit, detectan ediciones pasadas por alto y evitan introducir actualizaciones incompletas. Esto es especialmente útil al gestionar varias ramas o resolver conflictos de merge, ya que ofrece un feedback preciso sobre qué está siguiendo Git y qué no.
Entender cómo git status refleja la interacción entre el árbol de trabajo, el área de staging y el historial del repositorio es clave para usar Git con eficacia y evitar errores comunes.

El diagrama anterior ilustra la relación entre el directorio de trabajo, el área de staging y el repositorio (historial de commits), y cómo encaja git status:
- Cambios sin staging (archivos modificados en tu directorio de trabajo) aparecen como "Changes not staged for commit".
- Cambios en staging (archivos añadidos al índice con
git add) aparecen como "Changes to be committed". - Archivos sin seguimiento (archivos nuevos que Git aún no conoce) también se listan, invitándote a añadirlos o ignorarlos.
- Si estás en medio de un merge,
git statustambién te informará de los conflictos y los próximos pasos.
Ejemplo de salida de git status:
$ git status
On branch feature/login
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: src/auth.js
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: src/utils.js
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/new-feature.js
Para tener una visión más amplia de Git y su papel en el control de versiones, echa un vistazo a esta guía completa de Git.
Aprende hoy los fundamentos de Git
Cómo usar git status
Aquí tienes un enfoque paso a paso para aprovechar git status en tu día a día.
Si aún no has configurado Git, esta guía de configuración te acompaña en la instalación y la configuración inicial en distintos sistemas.
Uso básico de git status
- Abre tu terminal:
Usa tu terminal o intérprete de comandos preferido. Te da acceso directo para ejecutar comandos de Git y ver el estado del repositorio en tiempo real.
- Navega al directorio de tu proyecto:
Usa el comando cd para entrar en la carpeta donde está tu proyecto Git.
cd /path/to/your/project
- Ejecuta
git status:
Una vez dentro del directorio del proyecto, ejecuta el siguiente comando.
git status
Como vimos antes, Git devolverá una salida que normalmente incluye:
- El nombre de la rama actual.
- Una lista de cambios en staging listos para commit.
- Una lista de archivos modificados pero sin staging.
- Cualquier archivo sin seguimiento, es decir, archivos nuevos que aún no se han añadido a Git.
Usar el formato corto
Si necesitas una vista rápida sin tanto detalle, el formato corto es tu aliado:
git status --short
Esta vista concisa lista cada archivo en una línea con símbolos de estado, lo que resulta muy útil para localizar un cambio concreto o integrar el comando en un script.
Ejemplo de salida:
M index.html
A new-script.js
?? temp.txt
Cómo interpretar la salida:
- El primer carácter indica el estado en el área de staging.
- El segundo carácter indica el estado en el directorio de trabajo.
|
Código |
Significado |
|
M |
Modificado |
|
A |
Añadido |
|
D |
Eliminado |
|
?? |
Archivo sin seguimiento |
|
MM |
Modificado en ambas etapas |
|
AM |
Añadido y luego modificado |
Entender la opción -u en git status
La opción -u (atajo de --untracked-files) te permite controlar cómo se muestran los archivos sin seguimiento en la salida, algo muy útil en proyectos con muchos archivos generados. Esto es lo que significa cada modo:
normal(por defecto)
Muestra los archivos sin seguimiento en un formato estándar y compacto.
Ejemplo:
git status -u normal
Es el comportamiento estándar que la mayoría ve al ejecutar git status.
all
Lista todos los archivos sin seguimiento, incluso los que se ignoran por defecto.
Ejemplo:
git status -u all
Este modo te da visibilidad total, útil para depurar problemas de generación de archivos o revisar qué se está excluyendo vía .gitignore.
-
no
Oculta los archivos sin seguimiento para centrarte solo en cambios de archivos ya controlados por Git.
Ejemplo:
git status -u no
En uno de mis proyectos grandes —una aplicación Node.js con un proceso de build complejo— la salida de git status se llenaba de temporales, cachés y artefactos de compilación. Añadir la opción -u no me permitió centrarme exclusivamente en los cambios de archivos seguidos, sin distracciones de ficheros temporales o generados automáticamente.
Personalizar la salida con --porcelain
Para scripting o tareas de automatización, necesitas una salida predecible. La opción --porcelain ofrece un formato limpio, estable y legible por máquinas de git status, ideal para herramientas personalizadas o flujos CI/CD:
git status --porcelain
Este modo imita el formato corto (--short) pero garantiza una salida consistente entre versiones y configuraciones de Git. A diferencia del git status por defecto, que puede incluir saltos de línea extra, ayudas o color según la configuración del usuario, --porcelain elimina todo ese formato para que los scripts puedan analizar la salida de forma fiable.
Próximos pasos tras ejecutar git status
Después de ejecutar git status y analizar la salida, toca decidir el siguiente movimiento: poner archivos en staging, confirmar cambios o limpiar tu directorio de trabajo. Así puedes continuar.
Poner archivos en staging
El staging prepara tus cambios para incluirlos en el próximo commit. Puedes poner en staging archivos individuales o todo de una vez.
- Poner un archivo concreto en staging:
Úsalo cuando quieras controlar con precisión qué se confirma.
git add <file-name>
- Poner todos los cambios en staging:
Incluye archivos modificados y nuevos en el directorio actual.
git add .
- Poner solo cambios de archivos ya seguidos (excluye nuevos sin seguimiento):
git add -u
Te recomiendo revisar los cambios con git status o git diff antes de hacer staging para evitar incluir archivos no deseados. Combinar git status con el comando git diff ofrece una visión aún más detallada de lo que ha cambiado en tus archivos.
Hacer commit de los cambios
Tras poner los cambios en staging, el siguiente paso es crear un commit. Un mensaje de commit claro y descriptivo no solo registra qué cambió, sino también por qué hiciste el cambio, lo que facilita entender el historial del proyecto con el tiempo.
git commit -m "Describe your changes here"
Buenas prácticas para mensajes de commit:
- Usa modo imperativo (p. ej., "Fix login bug", no "Fixed login bug").
- Mantén la línea de resumen por debajo de 50 caracteres cuando sea posible.
- Si hace falta, usa un mensaje multilínea (
git commitsin-m) para separar el resumen de la explicación detallada.
He aprendido que dedicar un minuto extra a escribir un buen mensaje de commit puede ahorrarte horas en revisiones o depuración. Una vez revisados tus cambios, considera hacer squash de los commits para limpiar tu historial de Git.
Gestionar archivos sin seguimiento
Los archivos sin seguimiento pueden saturar la salida de git status, especialmente en proyectos con artefactos de build, logs o directorios de dependencias. Si hay archivos o carpetas que no piensas versionar, exclúyelos añadiendo entradas a un archivo .gitignore en la raíz del repositorio.
# Ignora carpetas de dependencias y archivos de log
node_modules/
*.log
# Ignora archivos de sistema
.DS_Store
Thumbs.db
Así te aseguras de que en tu repositorio solo estén los archivos relevantes, manteniendo la salida de git status limpia y enfocada. Cuando necesites eliminar archivos sin seguimiento que sigan en tu directorio de trabajo, git clean también es una herramienta interesante.
Revisar el estado con regularidad
Ejecutar git status con frecuencia es un hábito sencillo pero potente que ayuda a mantener un flujo de desarrollo limpio y controlado. Puedes evitar errores comunes —como confirmar cambios incompletos o pasar por alto archivos sin seguimiento— comprobando el estado del directorio de trabajo y el área de staging a intervalos regulares, especialmente antes de hacer commits, cambiar de rama o hacer merges.
Yo ya lo he incorporado a mi rutina diaria, y ha reducido drásticamente los fallos en mi historial de commits.
Resolver problemas habituales con git status
Aunque es sencillo, a veces git status puede mostrar información abrumadora o confusa. Aquí tienes algunos problemas comunes y cómo abordarlos.
Archivos sin seguimiento no deseados
En proyectos grandes, sobre todo si usan herramientas de build, puedes ver muchos archivos que nunca pensaste versionar. Si aparecen, revisa tu .gitignore y, si hace falta, elimínalos del seguimiento con:
git rm --cached <file-name>
Tras actualizar tu .gitignore y usar git rm --cached, ejecuta git status de nuevo para verificar que el archivo ya no está controlado ni aparece sin necesidad.
Salida abrumadora
En proyectos con muchos archivos —especialmente si generan logs, cachés o recursos temporales— la salida de git status puede volverse ruidosa y difícil de escanear. Cuesta centrarse en los cambios relevantes que requieren atención.
En ese caso, muestra un resumen conciso, una línea por archivo:
git status --short
O bien oculta por completo los archivos sin seguimiento:
git status -u no
Combinadas, estas opciones hacen que git status sea más enfocado y manejable, sobre todo en bases de código grandes o flujos automatizados.
Conclusión
En resumen, git status es una herramienta imprescindible que te ofrece una ventana en tiempo real a la salud de tu repositorio. Si dominas su vista por defecto, el formato corto y opciones avanzadas como la bandera -u, podrás agilizar tu flujo de trabajo con Git y evitar errores habituales. Prueba estos modos en tus proyectos y verás cómo la mayor claridad al gestionar cambios acelera tu desarrollo.
Si eres nuevo en Git, entender git status es aún más potente si lo combinas con git init, el comando que inicializa repositorios. Si aún no lo has hecho, échale un vistazo a mi tutorial de Git init para aprender cómo crear un repositorio desde cero.
Y si quieres llevar todavía más lejos tus habilidades con Git, explora estos cursos de DataCamp:
- Intermediate Git – Mejora con técnicas de branching, merging y resolución de conflictos.
- GitHub Foundations – Aprende a integrar Git con GitHub para proyectos colaborativos.
¡Feliz programación! Y que no se te escape nada en tu repositorio.
Aprende hoy los fundamentos de Git
FAQs
¿En qué se diferencia git status de git diff?
Mientras que git status muestra un resumen de cambios, git diff enseña las diferencias de contenido reales entre archivos, ofreciendo una comparación más detallada.
¿Puedo personalizar la salida de git status?
Sí. Con opciones como --short, --porcelain y -u puedes adaptar la salida para que sea más concisa o apta para scripts, según tus necesidades.
¿Cuál es la diferencia entre cambios en staging y sin staging en Git?
Los cambios en staging se han añadido al índice y están listos para commit, mientras que los cambios sin staging siguen en tu directorio de trabajo y no se han marcado para confirmar.
¿Cómo ignoro archivos que aparecen en git status?
Puedes añadir patrones de archivos a un .gitignore para evitar que ciertos ficheros (como logs o artefactos de build) aparezcan como sin seguimiento en git status.
¿Por qué siguen apareciendo archivos sin seguimiento en git status?
Los archivos sin seguimiento no se han añadido al índice de Git. Seguirán apareciendo si no los ignoras explícitamente en .gitignore o no los pones en seguimiento con git add.
¿Cómo ayuda git status a evitar malos commits?
Al ejecutar git status antes de confirmar, puedes revisar todos los cambios en staging y sin staging, asegurándote de no olvidar archivos ni confirmar algo incompleto por accidente.
¿Es útil git status para resolver conflictos de merge?
Totalmente. git status resalta los conflictos y te guía sobre cómo resolverlos antes de finalizar un merge.
¿Con qué frecuencia debería usar git status en mi flujo de trabajo?
¡A menudo! Usar git status antes de hacer staging, confirmar o cambiar de rama te ayuda a mantener el orden y evitar errores costosos.
Soy ingeniero de datos y creador de comunidades. Trabajo con canalizaciones de datos, nube y herramientas de IA, al tiempo que escribo tutoriales prácticos y de gran impacto para DataCamp y programadores emergentes.
