Git
Português (Brasil) ▾Topics ▾Latest version ▾ git-status last updated in 2.45.0

NOME

git-status - Exibe o a condição da árvore de trabalho

RESUMO

git status [<opções>] [--] [<pathspec>…​]

DESCRIÇÃO

Exibe os caminhos que têm diferenças entre o arquivo do índice e o commit atual no HEAD, os caminhos que têm diferenças entre a árvore de trabalho e o arquivo do índice, os caminhos na árvore de trabalho que não são rastreados pelo Git (e não foram ignorados pelo gitignore[5]). O primeiro é o que você confirmaria executando o comando git commit; o segundo e o terceiro são os que você pode confirmar, executando o comando git add antes de executar o comando git commit.

OPÇÕES

-s
--short

Dar a saída em um formato curto.

-b
--branch

Exibe o ramo e a informação de rastreio quando estiver em formato curto.

--show-stash

Exibe a quantidade das entradas que estão atualmente acumuladas.

--porcelain[=<versão>]

Give the output in an easy-to-parse format for scripts. This is similar to the short output, but will remain stable across Git versions and regardless of user configuration. See below for details.

The version parameter is used to specify the format version. This is optional and defaults to the original version v1 format.

--long

Gere um formato longo na saída. Esta é a predefinição.

-v
--verbose

Além dos nomes dos arquivos que foram alterados, exiba também as alterações textuais que são preparadas para o commit (ou seja, como a saída do git diff --cached). Caso a opção -v seja utilizada duas vezes, também exiba as alterações na árvore de trabalho que ainda não foram preparadas (ou seja, como a saída do comando git diff).

-u[<modo>]
--untracked-files[=<modo>]

Exibe arquivos sem rastreamento.

The mode parameter is used to specify the handling of untracked files. It is optional: it defaults to all, and if specified, it must be stuck to the option (e.g. -uno, but not -u no).

As opções disponíveis são:

  • no - Show no untracked files.

  • normal - Shows untracked files and directories.

  • all - Exibe todos os arquivos individualmente nos diretórios não rastreados.

When -u option is not used, untracked files and directories are shown (i.e. the same as specifying normal), to help you avoid forgetting to add newly created files. Because it takes extra work to find untracked files in the filesystem, this mode may take some time in a large working tree. Consider enabling untracked cache and split index if supported (see git update-index --untracked-cache and git update-index --split-index), Otherwise you can use no to have git status return more quickly without showing untracked files.

A predefinição pode ser alterada utilizando a variável de configuração status.showUntrackedFiles documentada em git-config[1].

--ignore-submodules[=<quando>]

Ignore changes to submodules when looking for changes. <when> can be either "none", "untracked", "dirty" or "all", which is the default. Using "none" will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config[1] or gitmodules[5]. When "untracked" is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using "dirty" ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior before 1.7.0). Using "all" hides all changes to submodules (and suppresses the output of submodule summaries when the config option status.submoduleSummary is set).

--ignored[=<modo>]

Exiba os arquivos ignorados também.

The mode parameter is used to specify the handling of ignored files. It is optional: it defaults to traditional.

As opções disponíveis são:

  • traditional - Exibe os arquivos e diretórios ignorados, a menos que --untracked-files=all é especificado, neste caso os arquivos individuais nos diretórios que foram ignorados são exibidos.

  • no - Não exibe os arquivos ignorados.

  • matching - Exibe os arquivos e diretórios ignorados que correspondem a um ignora o padrão.

Quando o modo matching é utilizado, os caminhos que coincidam explicitamente a um padrão ignorado são exibidos. Caso um diretório coincidir com um padrão a ser ignorado, ele será exibido, mas não os caminhos existentes no diretório ignorado. Caso um diretório não coincida com um padrão a ser ignorado, mas todo o conteúdo for ignorado, o diretório não será exibido, mas todo o resto do conteúdo será.

-z

Terminate entries with NUL, instead of LF. This implies the --porcelain=v1 output format if no other format is given.

--column[=<opções>]
--no-column

Exiba os arquivos que não foram rastreados em colunas. Veja a variável de configuração column.status para conhecer a sintaxe desta opção.--column e --no-column sem estas opções, é o mesmo que always e never respectivamente.

--ahead-behind
--no-ahead-behind

Display or do not display detailed ahead/behind counts for the branch relative to its upstream branch. Defaults to true.

--renames
--no-renames

Turn on/off rename detection regardless of user configuration. See also git-diff[1] --no-renames.

--find-renames[=<n>]

Turn on rename detection, optionally setting the similarity threshold. See also git-diff[1] --find-renames.

<pathspec>…​

Consulte a entrada pathspec em gitglossary[7].

SAÍDA

The output from this command is designed to be used as a commit template comment. The default, long format, is designed to be human readable, verbose and descriptive. Its contents and format are subject to change at any time.

Os caminhos mencionados na saída, diferentemente de muitos outros comandos Git, são feitos em relação ao diretório atual. Caso esteja trabalhando em um subdiretório (isso é proposital, para ajudar a cortar e colar). Consulte a opção da configuração status.relativePaths abaixo.

Formato Curto

No formato curto, a condição de cada caminho é exibido como uma das seguintes formas

XY PATH
XY ORIG_PATH -> PATH

onde ORIG_PATH é de onde veio o conteúdo renomeado/copiado. O ORIG_PATH só é exibido quando a entrada é renomeada ou copiada. O XY é um código de condição com duas letras.

Os campos (incluindo o ->) estão separados um do outro por um único espaço. Caso um nome do arquivo contenha um espaço ou outros caracteres não imprimíveis, este campo será citado na forma de uma string C literal: cercado por caracteres ASCII com aspas duplas (34) e com os caracteres especiais internos escapados por barra invertida.

Existem três tipos de estados diferentes que são mostrados utilizando este formato e cada um utiliza a sintaxe XY de forma diferente:

  • Quando uma mesclagem está ocorrendo e a mesclagem foi bem sucedida ou esteja fora de uma mesclagem situação, X mostra o status do índice e o Y mostra o status da árvore de trabalho.

  • Quando o corre um conflito na mesclagem e ainda não foi resolvido, X e Y mostram o estado introduzido por cada cabeçalho da mesclagem com relação ao ancestral comum. Dizem que estes caminhos são unmerged ou não mesclados.

  • Quando um caminho é desmarcado, o X e o Y sempre são o mesmo, pois são desconhecidos ao índice. O ?? é usado para caminhos não rastreados. Os arquivos ignorados não são listados a menos que a opção --ignored seja usado; caso seja, os arquivos ignorados são indicados através do símbolo !!.

Observe que o termo merge aqui também inclui rebases usando a estratégia padrão --merge, cherry-picks e qualquer outra coisa que use o mecanismo da mesclagem.

Na tabela a seguir, estas três classes são mostradas em seções separadas e estes caracteres são usados nos campos X e`Y` para as primeiras duas seções que mostram o rastreamento dos caminhos:

  • ' ' = não modificado

  • M = modificado

  • T = tipo do arquivo que foi alterado (arquivo regular, link simbólico ou submódulo)

  • A = adicionado

  • D = excluído

  • R = renomeado

  • C = copiado (caso a condição da opção status.renames esteja definido como "copies" (cópias))

  • U = atualizado, mas não mesclado

X          Y     Significado
-------------------------------------------------
	 [AMD]   não atualizado
M        [MTD]  atualizado no índice
T        [MTD]  tipo alterado no índice
A        [MTD]  adicionado ao índice
D               excluído do índice
R        [MTD]  renomeado no índice
C        [MTD]  copiado no índice
[MTARC]         o índice e a árvore de trabalho coincidem
[MTARC]     M   a árvore de trabalho foi alterada desde o índice
[MTARC]     T   tipo alterado na árvore de trabalho desde o índice
[MTARC]     D   excluído na árvore de trabalho
	    R    renomeado na árvore de trabalho
	    C    copiado na árvore de trabalho
-------------------------------------------------
D           D    não mesclado, ambos excluídos
A           U    não mesclado, adicionado por nós
U           D    não mesclado, excluídos por eles
U           A    não mesclado, adicionados por eles
D           U    não mesclado, excluídos por nós
A           A    não mesclado, ambos foram adicionados
U           U    não mesclado, ambos foram alterados
-------------------------------------------------
?           ?    não rastreado
!           !    ignorado
-------------------------------------------------

Os submódulos têm mais estado e, em vez disso, relatam

  • M = o submódulo tem um HEAD diferente do registrado no índice

  • m = o submódulo tem o conteúdo modificado

  • ? = o submódulo tem arquivos não rastreados

Isso ocorre porque o conteúdo modificado ou os arquivos não rastreados num submódulo não podem ser adicionados através do comando git add no superprojeto para preparar um commit.

m e ? são aplicados recursivamente. Por exemplo, se um submódulo aninhado em um submódulo contiver um arquivo não rastreado, isso será relatado como ? também.

Caso -b seja utilizado, a condição de formato curto será precedido por uma linhas

## info de  rastreio do nome do ramo

Formato de Porcelana Versão 1

Version 1 porcelain format is similar to the short format, but is guaranteed not to change in a backwards-incompatible way between Git versions or based on user configuration. This makes it ideal for parsing by scripts. The description of the short format above also describes the porcelain format, with a few exceptions:

  1. Caso a configuração da variável color.status do usuário não seja respeitada; a cor estará sempre desligada.

  2. Caso a configuração da variável status.relativePaths do usuário não seja respeitada; os caminhos exibidos sempre serão relativos à raiz do repositório.

There is also an alternate -z format recommended for machine parsing. In that format, the status field is the same, but some other things change. First, the -> is omitted from rename entries and the field order is reversed (e.g from -> to becomes to from). Second, a NUL (ASCII 0) follows each filename, replacing space as a field separator and the terminating newline (but a space still separates the status field from the first filename). Third, filenames containing special characters are not specially formatted; no quoting or backslash-escaping is performed.

Quaisquer alterações no submódulo são relatadas como M modificado em vez de m ou um único ?.

Formato de Porcelana Versão 2

Version 2 format adds more detailed information about the state of the worktree and changed items. Version 2 also defines an extensible set of easy to parse optional headers.

Header lines start with "#" and are added in response to specific command line arguments. Parsers should ignore headers they don’t recognize.

Cabeçalho dos Ramos

Caso --branch seja utilizado, uma série de linhas de cabeçalho será impressa com as informações sobre a ramificação atual.

Line                                     Notes
------------------------------------------------------------
# branch.oid <commit> | (initial)        Current commit.
# branch.head <branch> | (detached)      Current branch.
# branch.upstream <upstream-branch>      If upstream is set.
# branch.ab +<ahead> -<behind>           If upstream is set and
					 the commit is present.
------------------------------------------------------------

Informação do empilhamento

Caso a opção --show-stash seja usada, uma linha será impressa mostrando a quantidade das entradas que estão empilhadas caso não seja zero:

# stash <N>

Entradas Rastreadas que Foram Alteradas

Following the headers, a series of lines are printed for tracked entries. One of three different line formats may be used to describe an entry depending on the type of change. Tracked entries are printed in an undefined order; parsers should allow for a mixture of the 3 line types in any order.

Os itens comuns que foram alterados têm o seguinte formato:

1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <caminho>

As entradas que foram renomeadas ou copiadas têm o seguinte formato:

2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><score> <caminho><sep><caminho original>
Campo       Significado
--------------------------------------------------------
<XY>        Um campo com 2 characteres contendo valores XY
	    montados e não montados descrito em um formato curto,
	    sem modificações indicadas por um "." em vez de
	    um espaço.
<sub>       Um campo com 4 caracteres descrevendo a condição do submódulo.
	    "N..." quando a entrada não for um submódulo.
	    "S<c><m><u>" quando a entrada for um submódulo.
	    <c> is "C" caso o commit seja modificado; senão ".".
	    <m> is "M" caso haja mudanças rastreadas; senão ".".
	    <u> is "U" caso não haja mudanças rastreadas; senão ".".
<mH>        O modo de um arquivo octal no HEAD.
<mI>        O modo de um arquivo octal no índice.
<mW>        O modo de um arquivo octal na árvore de trabalho.
<hH>        O nome do objeto no HEAD.
<hI>        O nome do objeto no índice.
<X><score>  O renomeamento ou a cópia do score "placar"(denota a porcentagem
	    ou a similaridade entre a fonte e o destino da ação de
	    mover ou copiar. Por exemplo, "R100" ou "C75".
<caminho>      O `pathname` "nome do caminho".  Em um lançamento de renomeação/cópia,
	    este é o caminho de destino.
<sep>       Quando a opção `-z` for utilizada, os 2 `pathnames` são separados
	    com um byte `NUL` (ASCII 0x00); senão um byte tab (ASCII 0x09)
	    que os separam.
<origPath>  O `pathname` dentro do commit localizado no HEAD ou no índice.
	    Só está presente no caso de um lançamento de renomeação ou cópia
	    assim como informa de onde a renomeação ou cópia vieram.
--------------------------------------------------------

As entradas que não forem mescladas têm o seguinte formato; o primeiro caractere é um "u" para se distinguir das entradas comum que foram alteradas.

u <XY> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <caminho>
Campo       Significado
--------------------------------------------------------
<XY>        Um campo com 2 caracteres descrevendo o tipo de conflito
	    como descrito em um formato curto.
<sub>       Um campo com 4 caracteres descrevendo a condição do submódulo
	    como descrito abaixo.
<m1>        O modo de um arquivo octal no estágio 1.
<m2>        O modo de um arquivo octal no estágio 2.
<m3>        O modo de um arquivo octal no estágio 3.
<mW>        O modo de um arquivo octal na árvore de trabalho.
<h1>        O nome do objeto no estágio 1.
<h1>        O nome do objeto no estágio 2.
<h1>        O nome do objeto no estágio 3.
<caminho>      O `pathname` "nome do caminho".
--------------------------------------------------------

Outros itens

Após as entradas rastreadas (se for solicitado), uma série de linhas será impressa para os itens não rastreados e depois ignorados para os itens encontrados na árvore de trabalho.

Itens não rastreados têm o seguinte formato:

? <caminho>

Os itens ignorados tem o seguinte formato:

! <caminho>

Notas sobre o formato do pathname e -z

When the -z option is given, pathnames are printed as is and without any quoting and lines are terminated with a NUL (ASCII 0x00) byte.

Without the -z option, pathnames with "unusual" characters are quoted as explained for the configuration variable core.quotePath (see git-config[1]).

CONFIGURAÇÃO

O comando segue a variável color.status (ou status.color, ambos têm o mesmo significado, o último é mantido para compatibilidade com versões anteriores). As variáveis de configuração color.status. serve para para colorir a saída.

Se a variável de configuração status.relativePaths estiver configurada como false, todos os caminhos exibidos serão relativos à raiz do repositório e não ao diretório atual.

Se a variável status.submoduleSummary for definida como um número diferente de zero ou true (idêntico a -1 ou um número ilimitado), o resumo do submódulo será ativado para o formato longo e um resumo dos commits para os submódulos modificados serão exibidos (consulte a opção --summary-limit de git-submodule[1]). Por favor note que a saída resumida do comando status será suprimida para todos os submódulos quando a variável diff.ignoreSubmodules estiver definida como all ou apenas para aqueles submódulos em onde seja o mesmo que submodule.<nome>.ignore=all. Para visualizar também o resumo dos submódulos ignorados, você pode usar a opção de clinha de comando --ignore-submodules=dirty ` ou o comando `git submodule summary, que exibe uma saída semelhante porém não respeita estas configurações.

RENOVAÇÃO DO PLANO DE FUNDO

É predefinido que o comando git status renove automaticamente o índice, as estatísticas das informações armazenadas no cache da árvore de trabalho e gravando o seu resultado. Escrever o índice atualizado é uma otimização que não é estritamente necessária (o status calcula os valores por si só, mas escrevê-los é apenas para evitar que os programas subsequentes repitam o nosso processamento). Quando o status é executado em segundo plano, o bloqueio retido durante a gravação pode entrar em conflito com os outros processos simultâneos, causando falhas. Os scripts que executam status em segundo plano devem considerar a utilização do comando git --no-optional-locks status (para mais detalhes consulte git[1]).

ARQUIVOS NÃO RASTREADOS E DESEMPENHO

O comando git status pode ser muito lento em grandes árvores de trabalho se/quando precisar procurar arquivos e diretórios não rastreados. Existem muitas opções de configuração disponíveis para acelerar isso, evitando o trabalho ou fazendo o uso dos resultados já em cache dos comandos anteriores do Git. Não existe um único conjunto ideal de configurações que sejam corretas para todos. Para ajudá-lo, vamos listar um resumo das opções relevantes, porém, antes de entrar na lista, talvez você queira executar o comando git status novamente, pois a sua configuração já pode estar armazenada em cache com os resultados do git status, assim pode ficar mais rápido nas execuções posteriores.

  • A opção --untracked-files=no ou o A configuração status.showUntrackedfiles=false (veja acima para ambos): indica que o comando git status não deve relatar os arquivos que não estejam rastreados. Esta é a opção mais rápida. O comando git status não listará os arquivos sem rastreio, então é preciso ter cuidado para se lembrar se ao criar novos arquivos e manualmente executar o comando git add neles.

  • advice.statusUoption=false (consulte git-config[1]): setting this variable to false disables the warning message given when enumerating untracked files takes more than 2 seconds. In a large project, it may take longer and the user may have already accepted the trade off (e.g. using "-uno" may not be an acceptable option for the user), in which case, there is no point issuing the warning message, and in such a case, disabling the warning may be the best.

  • core.untrackedCache=true (consulte git-update-index[1]): enable the untracked cache feature and only search directories that have been modified since the previous git status command. Git remembers the set of untracked files within each directory and assumes that if a directory has not been modified, then the set of untracked files within has not changed. This is much faster than enumerating the contents of every directory, but still not without cost, because Git still has to search for the set of modified directories. The untracked cache is stored in the .git/index file. The reduced cost of searching for untracked files is offset slightly by the increased size of the index and the cost of keeping it up-to-date. That reduced search time is usually worth the additional size.

  • core.untrackedCache=true e core.fsmonitor=true ou core.fsmonitor=<hook-command-pathname> (see git-update-index[1]): enable both the untracked cache and FSMonitor features and only search directories that have been modified since the previous git status command. This is faster than using just the untracked cache alone because Git can also avoid searching for modified directories. Git only has to enumerate the exact set of directories that have changed recently. While the FSMonitor feature can be enabled without the untracked cache, the benefits are greatly reduced in that case.

Note that after you turn on the untracked cache and/or FSMonitor features it may take a few git status commands for the various caches to warm up before you see improved command times. This is normal.

VEJA TAMBÉM

GIT

Parte do conjunto git[1]

scroll-to-top