Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.54.0 → 2.55.0 no changes
-
2.53.0
2026-02-02
- 2.45.1 → 2.52.0 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.40.1 → 2.42.4 no changes
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 no changes
-
2.39.0
2022-12-12
- 2.35.1 → 2.38.5 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 no changes
-
2.31.0
2021-03-15
- 2.30.2 → 2.30.9 no changes
-
2.30.1
2021-02-08
- 2.24.1 → 2.30.0 no changes
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
- 2.12.5 no changes
-
2.11.4
2017-09-22
- 2.7.6 → 2.10.5 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
- 2.3.10 no changes
-
2.2.3
2015-09-04
- 2.1.4 no changes
-
2.0.5
2014-12-17
DESCRIPCIÓN
Muestra las rutas que tienen diferencias entre el fichero índice y la HEAD de la confirmación actual, las rutas que tengan diferencias entre el árbol de trabajo y el fichero índice, y las rutas en el árbol de trabajo sin seguimiento de Git (y no son ignoradas por gitignore[5]). Las primeras son las que querrías confirmar ejecutando git commit; las segundas y terceras son las que podrías confirmar ejecutando git add antes de git commit.
OPCIONES
-
-s -
--short -
Da la salida en el formato corto.
-
-b -
--branch -
Muestra la rama y la información de rastreo también en formato corto.
-
--show-stash -
Muestra el número de entradas escondidas actualmente.
-
--porcelain[=<versión>] -
Le da a la salida un formato fácil de analizar gramaticalmente para scripts. Es similar a la salida corta, pero permanecerá estable a lo largo de las versiones de Git e independiente de la configuración del usuario. Ver más abajo para detalles.
El parámetro <versión> se usa para especificar la versión del formato. Es opcional y se predetermina al formato
v1de la versión original. -
--long -
Da la salida en formato largo. Este es el predeterminado.
-
-v -
--verbose -
Además de los nombres de ficheros que han cambiado, también muestra los cambios textuales que están presentados para confirmación (es decir, como la salida de
gitdiff--cached). Si se especifica dos veces-v, también muestra los cambios en el árbol de trabajo que no han sido presentados (es decir, como la salida degitdiff). -
-u[<modo>] -
--untracked-files[=<modo>] -
Muestra los ficheros sin seguimiento.
El parámetro de modo es usado para especificar el manejo de ficheros sin seguimiento. Es opcional: se predetermina a
all, y si es especificado, debe adherirse a la opción (p. ej.-uno, pero no-uno).Las opciones posibles son:
Cuando no se usa la opción
-u, se muestran los ficheros y directorios sin seguimiento (es decir, lo mismo que especificarnormal), para ayudar a evitar que se olvide agregar ficheros recién creados. Ya que lleva trabajo adicional encontrar ficheros sin seguimiento en el sistema de ficheros, este modo puede tomar algo de tiempo en un árbol de trabajo grande. Considerar habilitar antememoria de no rastreados e índice dividido si están soportados (vergitupdate-index--untracked-cacheygitupdate-index--split-index), de lo contrario puedes usarnopara quegitstatusregrese más rápido sin mostrar ficheros sin seguimiento. Todas las grafías habituales para el valor booleanotruese toman comonormal, y parafalsecomono.El predeterminado puede cambiarse usando la variable de configuración
status.showUntrackedFilesdocumentada en git-config[1]. -
--ignore-submodules[=<cuando>] -
Ignora cambios en submódulos al buscar cambios. <cuando> puede ser alguno de
none,untracked,dirtyoall, el cual es el predeterminado.-
none -
considerará el submódulo como modificado cuando contenga ficheros sin seguimiento o modificados, o cuando su HEAD difiera de la confirmación registrada en el superproyecto y pueda usarse para anular cualquier configuración de la opción
ignoreen git-config[1] o gitmodules[5]. -
untracked -
los submódulos no se consideran sucios cuando solo tienen contenido sin seguimiento (pero aún son escaneados para contenido modificado).
-
dirty -
ignora todos los cambios al árbol de trabajo de submódulos, solo se muestran cambios a confirmaciones guardadas en el superproyecto (así era el comportamiento antes de 1.7.0).
-
all -
oculta todo los cambios a submódulos (y omite la salida de resúmenes de submódulos cuando se activa la opción de configuración
status.submoduleSummary).
-
-
--ignored[=<modo>] -
Muestra también ficheros ignorados.
El parámetro de modo es usado para especificar el manejo de ficheros ignorados. Es opcional: se predetermina a
traditional.Las opciones posibles son:
-
traditional -
Muestra ficheros y directorios ignorados, a menos que se especifique
--untracked-files=all, en cuyo caso ficheros individuales en directorios ignorados se muestran. -
no -
Muestra ficheros no ignorados.
-
matching -
Muestra ficheros ignorados y directorios que coinciden con un patrón de ignorancia.
Rutas que coincidan explícitamente un patrón ignorado se muestran. Si un directorio coincide con un patrón de ignore, entonces es mostrado, pero no las rutas que contenidas en el directorio ignorado. Si un directorio no coincide con un patrón de ignore, pero todo el contenido es ignorado, entonces el directorio no se muestra, pero todo el contenido se muestra.
-
-
-z -
Termina las entradas con NUL, en lugar de LF. Esto implica el formato de salida
--porcelain=v1si no se da otro formato. -
--column[=<opciones>] -
--no-column -
Muestra ficheros sin seguimiento en columnas. Ver la variable de configuración
column.statuspara sintaxis de opciones.--columny--no-columnsin opciones son equivalentes aalwaysyneverrespectivamente. -
--ahead-behind -
--no-ahead-behind -
Mostrar o no conteos detallados adelante/atrás para la rama relativa a su rama río arriba. Predeterminado a
true. -
--renames -
--no-renames -
Enciende o apaga la detección de cambio de nombre independientemente de la configuración del usuario. Ver git-diff[1]
--no-renames. -
--find-renames[=<n>] -
Enciende la detección de cambio de nombre, opcionalmente estableciendo el umbral de similitud. Ver también git-diff[1]
--find-renames. - <especificación-de-ruta>...
-
Ver especificación de ruta en gitglossary[7].
SALIDA
La salida de este comando esta diseñada para usarse como una plantilla de comentario de confirmación. El predeterminado, formato largo, esta diseñado para ser legible al humano y descriptivo. Su contenido y formato están sujetos a cambio en cualquier momento.
Las rutas mencionadas en la salida, al contrario de muchos otros comandos Git, se hacen relativas al directorio actual si se trabaja en un subdirectorio (esto es a propósito, para ayudar al copiado y pegado). Ver la opción de configuración status.relativePaths más abajo.
Formato corto
En el formato corto, el estado de cada ruta se muestra de una de estas formas
<xy> <ruta> <xy> <ruta-orig> -> <ruta>
donde <ruta-orig> es de dónde viene el contenido renombrado/copiado. <ruta-orig> solo se muestra cuando la entrada es renombrada o copiada. El <xy> es un código de estado de dos letras XY.
Los campos (incluyendo el ->) están separados por un espacio sencillo. Si un nombre de fichero contiene espacios en blanco u otros caracteres no imprimibles, ese campo debe ser entrecomillado como una cadena C literal: entre caracteres de comilla doble ASCII (34), y con caracteres especiales interiores escapados con diagonal invertida.
Hay tres tipos de estado diferentes que se muestran usando este formato, y cada uno usa la sintaxis <xy> de manera diferente:
-
Cuando ocurre una fusión y esta fue exitosa, o fuera de una fusión situación,
Xmuestra el estado del índice yYmuestra el estado del árbol de trabajo. -
Cuando ha ocurrido un conflicto de fusión y aun no ha sido resuelto,
XyYmuestra el estado introducido por cada cabeza de la fusión, relativo al ancestro común. Se dice que estas rutas están desfusionadas. -
Cuando una ruta esta sin seguimiento,
XyYson siempre iguales, ya que son desconocidas para el índice. Se usa ?? para rutas sin seguimiento. Los ficheros ignorados no se enlistan a menos que se use--ignored; de ser así, los ficheros ignorados se indican con!!.
Nótese que el término fusión aquí también incluye rebases usando la estrategia --merge predeterminada, selección de cerezas o cualquier otra que use la maquinaria de fusión.
En la siguiente tabla, estas tres clases se muestran en secciones separadas, y estos caracteres se usan para los campos X y Y para las primeras dos secciones que muestran rutas con seguimiento:
| X | Y | Significado |
|---|---|---|
[ |
no actualizado |
|
|
[ |
actualizado en el índice |
|
[ |
tipo cambiado en el índice |
|
[ |
agregado al índice |
|
eliminado del índice |
|
|
[ |
renombrado en el índice |
|
[ |
copiado en el índice |
[ |
el índice y el árbol de trabajo coinciden |
|
[ |
|
el árbol de trabajo cambió desde el índice |
[ |
|
el tipo cambió en el árbol de trabajo desde el índice |
[ |
|
eliminado en el árbol de trabajo |
|
renombrado en el árbol de trabajo |
|
|
copiado en el árbol de trabajo |
|
|
|
sin fusionar, ambos eliminados |
|
|
sin fusionar, agregado por nosotros |
|
|
sin fusionar, eliminado por ellos |
|
|
sin fusionar, agregado por ellos |
|
|
sin fusionar, eliminado por nosotros |
|
|
sin fusionar, ambos agregados |
|
|
sin fusionar, ambos modificados |
? |
? |
sin seguimiento |
|
|
ignorado |
Los submódulos tienen más estado y en su lugar reportan
Esto es porque el contenido modificado o los ficheros sin seguimiento en un submódulo no pueden ser agregados por medio de git add al superproyecto para preparar una confirmación.
m y ? se aplican recursivamente. Por ejemplo, si un submódulo anidado en un submódulo contiene un fichero sin seguimiento, se reporta también como ?.
Si se usa -b el estado en formato corto es precedido por una línea
{empty}## <nombre-de-rama> <información-de-seguimiento>
Formato porcelana versión 1
La versión 1 del formato porcelana es similar al formato corto, pero está garantizado que no cambiará incompatiblemente hacia atrás entre versiones de Git o en función de la configuración del usuario. Esto lo hace ideal para ser procesado por secuencias de comandos. La descripción de arriba del formato corto también describe el formato porcelana, con alguna excepciones:
-
La configuración de
color.statusdel usuario no es respetada; el color siempre estará apagado. -
La configuración de
status.relativePathsdel usuario no es respetada; las rutas mostradas siempre serán relativas a la raíz del repositorio.
Hay también un formato -z alterno recomendado para proceso por máquina. En ese formato, el campo de estado es el mismo, pero cambian otras cosas. Primero, se omite la -> de las entradas de cambio de nombre y se invierte el orden de los campos (p. ej. de -> a se vuelve a de). Segundo, a cada nombre de fichero le sigue un NUL (ASCII 0), reemplazando al espacio como separador de campos y terminando con un salto de línea (pero un espacio aún separa la campo de estado del primer nombre de fichero). Tercero, los nombres de fichero conteniendo caracteres especiales no son formateados especialmente; sin entrecomillar o escapar con diagonal invertida.
Cualquier cambio a submódulo se reporta como modificado M en lugar de m o solo ?.
Formato porcelana versión 2
El formato versión 2 añade información más detallada acerca del estado del árbol de trabajo y los elementos modificados. La versión 2 también define un conjunto extensible de encabezados opcionales fáciles de procesar.
Las líneas de encabezado comienzan con # y se agregan en respuesta a argumentos de línea de comandos específicos. Los procesadores deberían ignoran encabezados que no reconocen.
Encabezados de rama
Si se da --branch, se imprime una serie de líneas de encabezado con información acerca de la rama actual.
| Línea | Notas |
|---|---|
|
Confirmación actual. |
|
Rama actual. |
|
Si está establecido río arriba. |
|
Si está establecido río arriba y la confirmación está presente. |
Información de Stash
Si se da --show-stash, se imprime una línea mostrando el número de entradas stash si no es cero:
# stash <N>
Entradas modificadas rastreadas
Siguiendo las cabeceras, una serie de lineas se imprimen para las entradas rastreadas. Hay tres tipos diferentes de formato que pueden ser usados para describir una entrada dependiendo del tipo de cambio. Las entradas rastreadas son impresas en un orden no definido; los parsers deberían soportar una mezcla de los 3 tipos de línea en cualquier orden.
Las entradas modificadas ordinarias tienen el siguiente formato:
1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <ruta>
Las entradas renombradas o copiadas tienen el siguiente formato:
2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><puntaje> <ruta><separador><rutaOrigen>
| Campo | Significado |
|---|---|
<XY> |
Un campo de 2 caracteres que contiene los valores XY presentados y des-presentados descritos en el formato corto, con sin-cambios indicados por un "." en lugar de un espacio. |
<sub> |
Un campo de 4 caracteres que describe el estado del submódulo.
"N…" cuando la entrada no es un submódulo.
|
<mH> |
El modo de archivo octal en HEAD. |
<mI> |
El modo de fichero octal en el índice. |
<mW> |
El modo de fichero octal en el árbol de trabajo. |
<hH> |
El nombre del objeto en HEAD. |
<hI> |
El nombre del objeto en el índice. |
<X><puntaje> |
El puntaje de cambio de nombre o copia (denotando el porcentaje de similitud entre la fuente y el destino del movimiento o copia). Por ejemplo "R100" o "C75". |
<ruta> |
La ruta. En una entrada renombrada/copiada, este es el destino de la ruta. |
<separador> |
Cuando la opción |
<rutaOrigen> |
La ruta en la confirmación en HEAD o en el índice. Sólo está presente en una entrada renombrada/copiada, e indica de dónde vienen los contenidos renombrados/copiados. |
Las entradas sin mergear tienen el siguiente formato; el primer carácter es una "u" para diferenciarlo de las entradas de cambios corrientes.
u <XY> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <ruta>
| Campo | Significado |
|---|---|
<XY> |
Un campo de 2 caracteres describiendo el tipo de conflicto como se describe en el formato corto. |
<sub> |
Un campo de 4 caracteres describiendo el estado del submódulo como se describe abajo. |
<m1> |
El modo de archivo octal en la fase 1. |
<m2> |
El modo de archivo octal en fase 2. |
<m3> |
El modo de archivo octal en la fase 3. |
<mW> |
El modo de fichero octal en el árbol de trabajo. |
<h1> |
El nombre del objeto en presentación 1. |
<h2> |
El nombre del objeto en presentación 2. |
<h3> |
El nombre del objeto en presentación 3. |
<ruta> |
El nombre de la ruta. |
Otros Elementos
Siguiendo las entradas rastreadas (y si solicitadas), una serie de líneas serán impresas para los elementos sin seguimiento y los ignorados en el árbol de trabajo.
Los elementos sin seguimiento tienen el siguiente formato:
? <ruta>
Los elementos ignorados tienen el siguiente formato:
! <ruta>
Las notas de Formato de Ruta y -z
Cuando la opción -z se establece, las rutas se imprimen tal cual y sin ningún entrecomillado y las líneas se finalizan con un byte NUL (ASCII 0x00).
Sin la opción -z, las rutas con carácteres "inusuales" son entrecomilladas como se especifique en la varoable de configuración core.quotePath (ver git-config[1]).
CONFIGURACIÓN
El comando respeta las variables de configuración color.status (o status.color — significa lo mismo y la última se mantiene por retrocompatibilidad) y color.status <slot> para coloresr la salida.
Si la variable de configuración status.relativePaths se establece a falso, todas las rutas mostradas son relativas a la raíz del repositorio, no del directorio actual.
Si status.submoduleSummary se establece en un número distinto de cero o en Verdadero (lo que equivale a -1 o a un número ilimitado), se habilitará el resumen de submódulos en formato extenso y se mostrará un resumen de las confirmaciones de los submódulos modificados (véase la opción --summary-limit de git-submodule[1]). Ten en cuenta que la salida del resumen del comando status se suprimirá para todos los submódulos cuando diff.ignoreSubmodules esté establecido en all, o solo para aquellos submódulos en los que submodule.<nombre>.ignore=all. Para ver también el resumen de los submódulos ignorados, puedes utilizar la opción de línea de comandos --ignore-submodules=dirty o el comando git submodule summary, que muestra un resultado similar pero no tiene en cuenta esta configuración.
REFRESCO EN SEGUNDO PLANO
Por defecto, git status actualiza automáticamente el índice, actualizando la información de estado almacenada en caché a partir del árbol de trabajo y escribiendo el resultado. Escribir el índice actualizado es una optimización que no es estrictamente necesaria (status calcula los valores por sí mismo, pero los escribe únicamente para evitar que los programas posteriores tengan que repetir nuestro cálculo). Cuando se ejecuta status en segundo plano, el bloqueo que se mantiene durante la escritura puede entrar en conflicto con otros procesos simultáneos, lo que provocaría que estos fallaran. Los scripts que ejecuten status en segundo plano deberían plantearse utilizar git --no-optional-locks status (véase git[1] para más detalles).
ARCHIVOS SIN SEGUIMIENTO Y DESEMPEÑO
git status puede resultar muy lento en árboles de trabajo de gran tamaño cuando tiene que buscar ficheros y directorios sin seguimiento. Existen numerosas opciones de configuración que permiten acelerar este proceso, ya sea evitando dicho trabajo o aprovechando los resultados almacenados en caché de comandos Git anteriores. No existe un único conjunto de ajustes óptimo que sea adecuado para todo el mundo. A continuación te ofrecemos un resumen de las opciones relevantes para ayudarte, pero antes de pasar a la lista, quizá te interese volver a ejecutar git status, ya que es posible que tu configuración ya tenga almacenados en caché los resultados de git status, por lo que podría ser más rápido en ejecuciones posteriores.
-
La bandera
--untracked-files=noo la configuraciónstatus.showUntrackedFiles=no(ver abajo ambos): indica quegitstatusno debería reportar archivos sin seguimiento. Esta es la opción más rápida.gitstatusno listará los archivos sin seguimiento, por lo que debes estar atento y recordar si has añadido algún archivo nuevo y manualmente hacerlesgitadd. -
advice.statusUoption=false(ver git-config[1]): establecer esta variable afalsedeshabilita el mensaje de advertencia que se lanza cuando la enumeración de ficheros sin seguimiento tarda más de 2 segundos. En un proyecto grande, puede llevar más tiempo y el usuario puede que ya haya aceptado la compensación (p. ej. usando-unopuede no ser una opción aceptable para el usuario), en cuyo caso, no tiene sentido emitir la advertencia, y en tal caso, deshabilitar la advertencia puede ser lo mejor. -
core.untrackedCache=true(ver git-update-index[1]): activar la función de caché sin seguimiento y busca únicamente en los directorios que hayan sido modificado desde el comandogitstatusprevio. Git recuerda el conjunto de ficheros sin seguimiento que hay en cada directorio y da por hecho que, si un directorio no ha sido modificado, el conjunto de ficheros sin seguimiento que contiene tampoco ha cambiado. Esto es mucho más rápido que enumerar el contenido de cada directorio, pero aún con un costo, porque que Git todavía tiene que buscar el conjunto de directorios modificados. La cache sin seguimiento se almacena en el fichero.git/index. El costo reducido de buscar ficheros sin seguimiento se compensa ligeramente con el tamaño incrementado del índice y el costo de mantenerlo actualizado. Esta reducción de tiempo de búsqueda normalmente vale la pena del tamaño adicional. -
core.untrackedCache=trueycore.fsmonitor=trueocore.fsmonitor=<ruta-al-comando-de-gancho> (véase git-update-index[1]): activa tanto la caché de archivos sin seguimiento como las funciones FSMonitor, y busca únicamente en los directorios que se hayan modificado desde la última ejecución del comandogitstatus. Esto es más rápido que utilizar únicamente la caché de sin seguimiento, ya que Git también puede evitar buscar en los directorios modificados. Git solo tiene que enumerar el conjunto exacto de directorios que han cambiado recientemente. Aunque la función FSMonitor se puede activar sin la caché de archivos sin seguimiento, en ese caso las ventajas se reducen considerablemente.
Considera que después de que actives la caché sin seguimiento y/o las características de FSMonitor, puede tomar algunos comandos git status para calentar las distintas caches, antes de notar mejores tiempos de comando. Esto es normal.
GIT
Parte de la suite de git[1]