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.43.0 11/20/23
- 2.40.1 → 2.42.1 no changes
- 2.40.0 03/12/23
- 2.39.1 → 2.39.3 no changes
- 2.39.0 12/12/22
- 2.35.1 → 2.38.5 no changes
- 2.35.0 01/24/22
- 2.34.1 → 2.34.8 no changes
- 2.34.0 11/15/21
- 2.31.1 → 2.33.8 no changes
- 2.31.0 03/15/21
- 2.30.2 → 2.30.9 no changes
- 2.30.1 02/08/21
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 de entradas ocultas atualmente.
- --porcelain[=<versão>]
-
Forneça a saída em um formato fácil de analisar para os scripts. Isso é semelhante à saída curta, mas permanecerá estável nas versões do Git e independentemente da configuração do usuário. Veja abaixo os detalhes.
O parâmetro da versão é utilizado para definir a versão do formato. Este é opcional e retorna para a predefinição do formato da versão original v1.
- --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 comandogit diff
). - -u[<modo>]
- --untracked-files[=<modo>]
-
Exibe arquivos sem rastreamento.
O parâmetro
modo
é utilizado para definir a manipulação dos arquivos não rastreados. É opcional: a predefinição retorna para all e caso seja definido, deve estar junto a opção (como por exemplo,-uno
, porém não-u no
).As opções disponíveis são:
-
no - Não exibe qualquer arquivo que não tenham sido rastreados.
-
normal - Exibe todos os arquivo e diretórios que não foram rastreados.
-
all - Exibe todos os arquivos individualmente nos diretórios não rastreados.
Quando a opção
-u
não é utilizada, os arquivos e diretórios não rastreados são exibidos (ou seja, o mesmo que usarnormal
), para ajudar a evitar o esquecimento de adicionar os arquivos recém-criados. Como é necessário um trabalho extra para encontrar os arquivos que não foram rastreados no sistema de arquivos, esse modo pode levar algum tempo em uma grande árvore de trabalho. Considere ativar o cache não rastreado e dividir o índice, se suportado (consultegit update-index --untracked-cache
egit update-index --split-index
). Caso contrário, você pode usarno
para obter o retorno do comandogit status
mais rapidamente sem demonstrar quais foram os arquivos que não foram rastreados.A predefinição pode ser alterada utilizando a variável de configuração
status.showUntrackedFiles
documentada em git-config[1]. -
- --ignore-submodules[=<quando>]
-
Ignore as alterações nos submódulos ao procular pelas alterações. O
<quando>
pode ser "none" (nenhum), "untracked" (sem monitoramento/rastreamento), "dirty" (sujo) ou "all" (todos), que é a predefinição. O "none" considera o submódulo modificado quando houver arquivos não estejam rastreados, modificados ou o seuHEAD
seja diferente do commit registrado no superprojeto, pode ser utilizado para substituir qualquer configuração da opção ignore (ignorar) em git-config[1] ou gitmodules[5]. Quando o "untracked" é utilizado, os submódulos não são considerados sujos quando houver apenas um conteúdo sem rastreamento (porém o monitoramento de alterações do seu conteúdo continua) O uso de "dirty" ignora todas as alterações na árvore de trabalho dos submódulos, apenas as alterações nos commit que foram armazenados no superprojeto são exibidos (esse era o comportamento anterior a versão 1.7.0). O uso de "all" oculta todas as alterações nos submódulos (e suprime a saída dos resumos dos submódulos quando a variável de configuraçãostatus.submoduleSummary
estiver definida). - --ignored[=<modo>]
-
Exiba os arquivos ignorados também.
O parâmetro de modo é utilizado para definir o manuseio dos arquivos ignorados. É opcional: a sua predefinição retorna para traditional.
As opções disponíveis são:
-
traditional - Exibe os arquivos e diretórios ignorados, a menos que --untracked-files=tudo é 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
-
Terminar as entradas com
NUL
, em vez deLF
. Isto implica o formato de saída--porcelain=v1
caso nenhum outro formato seja utilizado. - --coluna[=<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 as opções são equivalentes a always e never respectivamente. - --ahead-behind
- --no-ahead-behind
-
Exiba ou não as contagens detalhadas antecipadas/atrasadas do ramo em relação a ramificação
upstream
. A predefinição retorna paratrue
. - --renames
- --no-renames
-
Ligue/desligue a detecção de renomeação, independentemente da configuração do utilizador. Consulte tambémgit-diff[1]
--no-renames
. - --find-renames[=<n>]
-
Liga a detecção de renomeação, configurando opcionalmente o limite de similaridade. Consulte também git-diff[1]
--find-renames
. - <pathspec>…
-
Consulte a entrada pathspec em gitglossary[7].
SAÍDA
A saída deste comando foi projetada para ser utilizada como um comentário modelo do commit. A predefinição é utilizar o formato longo, foi projetado para ser legível por seres humanos, detalhado e descritivo. Seu conteúdo e formato estão sujeitos a alterações a qualquer momento.
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.
Para os caminhos com conflitos de mesclagem, X
e Y
exibem a condição das
modificações de cada lado da mesclagem. Para os caminhos que não possuam
conflitos de mesclagem, X
exibe a condição do índice e Y
exibe a
condição da árvore de trabalho. Para os caminhos não rastreados, XY
é
??
. Os outros códigos das condições podem ser interpretados da seguinte
maneira:
-
' ' = não modificado
-
M = modificado
-
A = adicionado
-
D = excluído
-
R = renomeado
-
C = copiado
-
U = atualizado, mas não mesclado
Os arquivos ignorados não estão listados, a menos que a opção --ignored
esteja em vigor; nesse caso, XY
é !!
.
X Y Significado ------------------------------------------------- [AMD] não atualizado M [ MD] atualizado no índice A [ MD] adicionado ao índice D excluído do índice R [ MD] renomeado no índice C [ MD] copiado no índice [MARC] o índice e a árvore de trabalho coincidem [ MARC] M a árvore de trabalho foi alterada desde o índice [ MARC] D excluído na árvore de trabalho [ D] R renomeado na árvore de trabalho [ D] 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 condição e, em vez disso, relatam
M o submódulo possui um head
diferente da
gravada no índice
m o submódulo modificou o conteúdo
? o submódulo possui arquivos não rastreados
pois conteúdo modificado ou arquivos não rastreados em um
submódulo não podem ser adicionados via git add
no superproject
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
O formato de porcelana da versão 1 é semelhante ao formato curto, no entanto é garantido que não seja alterado de maneira que seja incompatível com as versões anteriores das versões do Git ou com a base na configuração do usuário. Isso o torna ideal para ser analisado por scripts. A descrição do formato curto acima também descreve o formato de porcelana, com algumas exceções:
-
Caso a configuração da variável
color.status
do usuário não seja respeitada; a cor estará sempre desligada. -
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.
Há também um formato alternativo -z
recomendado para a análise de
máquina. Neste formato, o campo do status é o mesmo, porém algumas outras
coisas mudam. Primeiro, o \ → é omitido das entradas de renomeação e a
ordem dos campos é revertida (por exemplo, from -> to se torna to
from). Segundo, um NUL
(ASCII 0) segue cada nome de arquivo substituindo
o espaço como um separador de campos e a nova linha final (porém um espaço
ainda separa o campo de status do primeiro nome do arquivo). Terceiro, os
nomes dos arquivos que contenha caracteres especiais não são especialmente
formatados; nenhuma citação ou barra de escape invertida é executada.
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
O formato da versão 2 adiciona informações mais detalhadas sobre a condição da árvore de trabalho e os itens que foram alterados. Na versão 2 também é definido um conjunto extensível de cabeçalhos opcionais fáceis de serem analisados.
As linhas do cabeçalho começam com o símbolo "#" e são adicionadas em resposta aos argumentos específicos da linha de comando. Os analisadores devem ignorar os cabeçalhos que não sejam reconhecidos.
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) Commit atual. # branch.head <ramo> | (desanexado) Ramificação atual. # branch.upstream <upstream_branch> Caso o "upstream" esteja definido. # branch.ab +<ahead> -<behind> Caso o "upstream" esteja definido e o commit esteja presente. ------------------------------------------------------------
Entradas Rastreadas que Foram Alteradas
Após os cabeçalhos, uma série de linhas é impressa para entradas que são rastreadas. Um dos três formatos diferentes da linha podem ser utilizados para descrever uma entrada, dependendo do tipo da alteração. As entradas rastreadas são impressas em uma ordem indefinida; os analisadores devem permitir uma mistura dos três tipos de linha e em qualquer ordem.
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
Quando a opção z
é utilizada os pathnames
são exibidos como estão e sem
nenhuma citação e as linhas são terminadas com um byte NUL (ASCII 0x00).
Sem a opção z
, os pathnames
com os caracteres "incomuns" são citados
conforme explicado na variável de configuração core.quotePath
(consulte
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]).
GIT
Parte do conjunto git[1]