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
- 2.45.1 → 2.45.2 no changes
- 2.45.0
04/29/24
- 2.44.1 → 2.44.2 no changes
- 2.44.0
02/23/24
- 2.43.1 → 2.43.5 no changes
- 2.43.0
11/20/23
- 2.40.1 → 2.42.3 no changes
- 2.40.0
03/12/23
- 2.39.1 → 2.39.5 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
- 2.24.1 → 2.30.0 no changes
- 2.24.0
11/04/19
- 2.22.1 → 2.23.4 no changes
- 2.22.0
06/07/19
- 2.21.1 → 2.21.4 no changes
- 2.21.0
02/24/19
- 2.19.1 → 2.20.5 no changes
- 2.19.0
09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0
06/21/18
- 2.17.1 → 2.17.6 no changes
- 2.17.0
04/02/18
- 2.16.6
12/06/19
- 2.15.4 no changes
- 2.14.6
12/06/19
- 2.13.7
05/22/18
- 2.12.5 no changes
- 2.11.4
09/22/17
- 2.7.6 → 2.10.5 no changes
- 2.6.7
05/05/17
- 2.5.6
05/05/17
- 2.4.12
05/05/17
- 2.3.10 no changes
- 2.2.3
09/04/15
- 2.1.4 no changes
- 2.0.5
12/17/14
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 comandogit 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 specifyingnormal
), 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 (seegit update-index --untracked-cache
andgit update-index --split-index
), Otherwise you can useno
to havegit 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 oY
mostra o status da árvore de trabalho.Quando o corre um conflito na mesclagem e ainda não foi resolvido,
X
eY
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 oY
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:
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.
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çãostatus.showUntrackedfiles=false
(veja acima para ambos): indica que o comandogit status
não deve relatar os arquivos que não estejam rastreados. Esta é a opção mais rápida. O comandogit 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 comandogit add
neles.advice.statusUoption=false
(consulte git-config[1]): setting this variable tofalse
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 previousgit 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
ecore.fsmonitor=true
oucore.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 previousgit 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.
GIT
Parte do conjunto git[1]