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.46.1 → 2.47.1 no changes
- 2.46.0 07/29/24
- 2.43.1 → 2.45.2 no changes
- 2.43.0 11/20/23
- 2.38.1 → 2.42.3 no changes
- 2.38.0 10/02/22
- 2.36.1 → 2.37.7 no changes
- 2.36.0 04/18/22
- 2.30.2 → 2.35.8 no changes
- 2.30.1 02/08/21
- 2.25.2 → 2.30.0 no changes
- 2.25.1 02/17/20
- 2.25.0 01/13/20
- 2.19.1 → 2.24.4 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 12/06/19
- 2.14.6 12/06/19
- 2.13.7 05/22/18
- 2.10.5 → 2.12.5 no changes
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 no changes
- 2.6.7 05/05/17
- 2.5.6 05/05/17
- 2.4.12 no changes
- 2.3.10 09/28/15
- 2.2.3 09/04/15
- 2.1.4 12/17/14
- 2.0.5 12/17/14
RESUMO
git update-index [--add] [--remove | --force-remove] [--replace] [--refresh] [-q] [--unmerged] [--ignore-missing] [(--cacheinfo <mode>,<object>,<file>)…] [--chmod=(+|-)x] [--[no-]assume-unchanged] [--[no-]skip-worktree] [--[no-]ignore-skip-worktree-entries] [--[no-]fsmonitor-valid] [--ignore-submodules] [--[no-]split-index] [--[no-|test-|force-]untracked-cache] [--[no-]fsmonitor] [--really-refresh] [--unresolve] [--again | -g] [--info-only] [--index-info] [-z] [--stdin] [--index-version <n>] [--show-index-version] [--verbose] [--] [<file>…]
DESCRIÇÃO
Modifica o índice. Cada arquivo mencionado é atualizado no índice e em qualquer estado não mesclado ou que precise ser atualizado será limpo.
Consulte também git-add[1] para conhecer uma maneira mais amigável ao usuário de executar algumas das operações mais comuns no índice.
A maneira como o git update-index trata os arquivos mencionados pode ser alterada utilizando as várias opções:
OPÇÕES
- --add
-
Caso um arquivo especificado ainda não esteja no índice, ele será adicionado. O comportamento predefinido é ignorar os novos arquivos.
- --remove
-
Caso um arquivo especificado estiver no índice, mas estiver ausente, ele será removido. O comportamento predefinido é ignorar os arquivos removidos.
- --refresh
-
Examina o índice atual e verifica se as mesclagens são necessárias ou atualizações, verificando as informações do stat().
- -q
-
Silêncio. Se a opção
--refresh
descobrir que o índice precisa de uma atualização, o comportamento predefinido será gerar um erro. Esta opção faz com que o comando git update-index sempre continue. - --ignore-submodules
-
Não tente atualizar os submódulos. Esta opção só é respeitada quando passada antes da opção
--refresh
. - --unmerged
-
Se opção
--refresh
encontrar alterações não mescladas no índice, o comportamento predefinido será gerar um erro. Esta opção faz com que o comando git update-index sempre continue. - --ignore-missing
-
Ignora os arquivos ausentes durante um
--refresh
- --cacheinfo <modo>,<objeto>,<caminho>
- --cacheinfo <modo> <objeto> <caminho>
-
Insere diretamente as informações especificadas no índice. Para compatibilidade com versões anteriores, também é possível usar estes três argumentos como três parâmetros separados, mas os novos usuários são incentivados a usar uma forma única de parâmetro.
- --index-info
-
Leia a informação do índice a partir do stdin.
- --chmod=(+|-)x
-
Defina as permissões de execução nos arquivos atualizados.
- --[no-]assume-unchanged
-
Quando esta opção é especificada, os nomes registrados dos objetos para os caminhos não são atualizados. Em vez disso, esta opção define ou desativa o bit "assume unchanged" (assumir como inalterado) para os caminhos. Quando o bit "assume unchanged" (assumir como inalterado) está ativado, o usuário promete não alterar o arquivo e permite que o Git assuma que o arquivo da árvore de trabalho corresponda ao que está registrado no índice. Caso queira alterar o arquivo da árvore de trabalho, será precisa desativar o bit para informar ao Git. Isso às vezes é útil quando se trabalha com um grande projeto num sistema de arquivos que tem uma chamada de sistema lstat(2) muito lenta (cifs por exemplo).
O Git falhará (de forma elegante) caso precise modificar este arquivo no índice, quando for mesclar em um commit por exemplo; portanto, caso o arquivo assumido não monitorado seja alterado na upstream, você precisará lidar com a situação de forma manual.
- --really-refresh
-
Como a opção
--refresh
, porém verifica as informações das estatísticas incondicionalmente, sem considerar a configuração "assuma como inalterado". - --[no-]skip-worktree
-
Quando uma destas opções é utilizada, os nomes dos objetos registrados nos caminhos não são atualizados. Em vez disso, estas opções definem e desabilitam o bit "skip-worktree" (ignore a árvore de trabalho) dos caminhos. Para mais informações, consulte a seção "Skip-worktree bit" abaixo.
- --[no-]ignore-skip-worktree-entries
-
Não remova o skip-worktree (também informado como "index-only"), mesmo quando a opção
--remove
for utilizada. - --[no-]fsmonitor-valid
-
Quando uma destas opções é utilizada, os nomes dos objetos registrados nos caminhos não são atualizados. Em vez disso, essas opções definem e desabilitam o bit "fsmonitor valid" (fsmonitor válido) para os caminhos. Para mais informações, consulte a seção "Monitor do Sistema de Arquivos" abaixo.
- -g
- --again
-
Executa o próprio comando git update-index nos caminhos cujas entradas do índice sejam diferentes daquelas do commit
HEAD
. - --unresolve
-
Restaura a condição unmerged (não mesclado) ou needs updating (precisa ser atualizado) de um arquivo, durante uma mesclagem caso ele tenha sudo eliminado por engano.
- --info-only
-
Não crie os objetos no banco de dados dos objetos para todos os argumentos <arquivo> que seguem esta opção; basta inserir os seus IDs do objeto no índice.
- --force-remove
-
Remova o arquivo do índice, mesmo quando o diretório ativo ainda tenha tal arquivo. (Implica no uso da opção
--remove
.) - --replace
-
É predefinido que quando um arquivo
path
(caminho) existe no índice, o git update-index recusa uma tentativa de adicionarcaminho/arquivo
. Da mesma maneira, se um arquivocaminho/arquivo
existir, um arquivopath
(caminho) não poderá ser adicionado. Com o sinalizador--replace
, as entradas existentes que entram em conflito com a entrada que está sendo adicionada são removidas automaticamente com mensagens de aviso. - --stdin
-
Em vez de obter uma lista dos caminhos da linha de comando, leia uma lista de caminhos da entrada predefinida. É predefinido que os caminhos sejam separados por LF (ou seja, um caminho por linha).
- --verbose
-
Relate o que está sendo adicionado e removido do índice.
- --index-version <n>
-
Grava o índice resultante no formato da versão mencionada em disco. As versões compatíveis são 2, 3 e 4. A versão atual é a 2 ou 3, dependendo do uso dos recursos extras, como o
git add -N
. Usando a opção--verbose
, informe também a versão que o arquivo do índice usa antes e após este comando.A versão 4 executa uma compactação simples de nome de caminho que reduz o tamanho do índice em 30% a 50% em repositórios grandes, o que resulta num tempo de carregamento mais rápido. O Git oferece suporte a ele desde a versão 1.8.0, lançada em outubro de 2012, e o suporte a ele foi adicionado ao libgit2 em 2016 e ao JGit em 2020. Versões mais antigas desta página do manual a chamavam de "relativamente nova", mas atualmente ela deve ser considerada uma tecnologia madura.
- --show-index-version
-
Relata a versão do formato do índice usado pelo arquivo de índice em disco. Consulte a opção
--index-version
acima. - -z
-
Só faz algum sentido se for utilizado com
--stdin
or--index-info
; os caminhos são separados com caracteresNUL
em vez deLF
. - --split-index
- --no-split-index
-
Ativar ou desativar o modo com o índice dividido. Se o modo com índice dividido já estiver ativado e a opção
--split-index
for utilizada novamente, todas as alterações no$GIT_DIR/index
serão retornadas ao arquivo do índice compartilhado.Estas opções entram em vigor independente de quer configuração da variável existente no
core.splitIndex
(consulte git-config[1]). Porém um aviso é emitido quando a alteração vai contra o valor configurado pois o valor configurado apenas entrará em vigor na próxima vez que o índice for lido, removendo o efeito pretendido da opção. - --untracked-cache
- --no-untracked-cache
-
Ative ou desative o recurso de cache não rastreado. Antes de ativar utilize
--test-untracked-cache
.Estas opções entram em vigor independente de quer configuração da variável existente no
core.untrackedCache
(consulte git-config[1]). Porém um aviso é emitido quando a alteração vai contra o valor configurado pois o valor configurado apenas entrará em vigor na próxima vez que o índice for lido, removendo o efeito pretendido da opção. - --test-untracked-cache
-
Execute apenas os testes no diretório ativo para garantir que o cache não monitorado possa ser utilizado. Você deve habilitar manualmente o cache não monitorado utilizando a opção
--untracked-cache
ou--force-untracked-cache
ou a variável de configuraçãocore.untrackedCache
posteriormente, caso realmente queira utilizá-lo. Caso um teste falhe, o código de encerramento gerado é 1 e uma mensagem explica o que não está funcionando, conforme necessário, caso contrário, o código de encerramento é 0 e um OK é impresso. - --force-untracked-cache
-
O mesmo que
--untracked-cache
. Fornece compatibilidade retroativa com as versões mais antigas do Git, onde--untracked-cache
costumava implicar com a opção--test-untracked-cache
, porém esta opção ativaria a extensão incondicionalmente. - --fsmonitor
- --no-fsmonitor
-
Ativar ou desativar o recurso de monitoramento do sistema de arquivos. Estas opções entram em vigor independente de quer configuração da variável existente no
core.fsmonitor
(consulte git-config[1]). Porém um aviso é emitido quando a alteração vai contra o valor configurado pois o valor configurado apenas entrará em vigor na próxima vez que o índice for lido, removendo o efeito pretendido da opção. - --
-
Não interprete mais argumentos como opções.
- <arquivo>
-
Arquivos a serem processados. Observe que os arquivos que começam com "." são descartados. Isso inclui o
./file
e odir/./file
. Caso não queira isso, use nomes mais claros. O mesmo se aplica aos diretórios que terminam em / e os caminhos com //
USANDO A OPÇÃO --REFRESH
A opção --refresh
não calcula um novo arquivo sha1 ou atualiza o índice para as alterações do modo/conteúdo. Porém o que é feito é "repetir a coincidência" das informações estatísticas de um arquivo ao índice, para que você possa atualizar o índice de um arquivo que não foi alterado, porém onde a entrada da estatísticas esteja desatualizada.
Como por exemplo, você gostaria de fazer isso após fazer um comando git read-tree
, para vincular os detalhes do índice estatístico aos arquivos adequados.
USANDO AS OPÇÕES --CACHEINFO OU --INFO-ONLY
A opção --cacheinfo
é usada para registrar um arquivo que não está no diretório atual de trabalho. Isso é útil para a verificação mínima da mesclagem.
Para fingir que você tem um arquivo no caminho com modo e o sha1, use:
$ git update-index --add --cacheinfo <modo>,<sha1>,<caminho>
A opção --info-only
é usada para registrar os arquivos sem colocá-los no banco de dados de objetos. Isso é útil para repositórios "status-only".
Tanto a opção --cacheinfo
quanto a --info-only
se comportam de maneira semelhante: o índice é atualizado, mas o banco de dados dos objetos não. A opção --cacheinfo
é útil quando o objeto está no banco de dados, mas o arquivo não está localmente disponível. A opção --info-only
é útil quando o arquivo está disponível, mas você não quer atualizar o banco de dados dos objetos.
USANDO A OPÇÃO --INDEX-INFO
A opção --index-info
é um mecanismo mais avançado que permite alimentar várias definições da entrada a partir da entrada predefinida e foi projetado especificamente para scripts. Ele aceita três tipos de formatos:
-
O modo SP tipo SP sha1 TAB caminho
Este formato serve para colocar a saída
git ls-tree
no índice. -
O modo SP sha1 SP estágio TAB caminho
Este formato serve para colocar os estágios na ordem superior do arquivo no índice e coincide à saída do
git ls-files --stage
. -
O modo SP sha1 TAB caminho
Este formato não é mais gerado por nenhum comando Git, mas é e continuará sendo compatível através do comando
update-index --index-info
.
Para colocar um estágio de lançamento com prioridade mais alta ao índice, o caminho primeiro deve ser removido ao utilizar mode=0
para o caminho e em seguida alimentando as linhas necessárias da entrada ao terceiro formato.
Como por exemplo, começando com este índice:
$ git ls-files -s 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz
você pode alimentar a seguinte entrada para --index-info
:
$ git update-index --index-info 0 0000000000000000000000000000000000000000 frotz 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
A primeira linha da entrada alimenta 0 como o modo para remover o caminho; o SHA-1 não importa, desde que esteja bem formatado. Em seguida, a segunda e a terceira linha alimentam as entradas do estágio 1 e do estágio 2 para este caminho. Após o procedimento acima, o resultado seria o seguinte:
$ git ls-files -s 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
UTILIZANDO O BIT “ASSUME UNCHANGED”
Muitas operações no Git dependem do seu sistema de arquivos para ter uma implementação eficiente do lstat(2)
, de maneira que as informações do st_mtime
para os arquivos da árvore de trabalho possam ser verificadas de maneira econômica para ver se o conteúdo do arquivo foi alterado em relação à versão registrada no arquivo de índice. Infelizmente, alguns sistemas de arquivos têm um lstat(2)
ineficiente. Se o seu sistema de arquivos for um deles, você pode definir o bit "assume unchanged" para os caminhos que não foram alterados para que o Git não faça esta verificação. Observe que a configuração deste bit num caminho não significa que o Git verificará o conteúdo do arquivo para ver se ele foi alterado - ele faz com que o Git omita qualquer verificação e assuma que ele não foi alterado. Quando você faz alterações nos arquivos da árvore de trabalho, é necessário informar explicitamente ao Git sobre isso, eliminando o bit "assume unchanged", antes ou após a sua alteração.
Para definir o bit "assume unchanged", use a opção --assume-unchanged
. Para remover, use --no-assume-unchanged
. Para ver quais os arquivos têm o bit "assume unchanged" definido, use o comando git ls-files -v
(consulte git-ls-files[1]).
O comando examina a variável de configuração core.ignorestat
. Quando isso for verdadeiro, os caminhos atualizados com o comando git update-index paths...
e os caminhos atualizados com outros comandos do Git que atualizam o índice e a árvore de trabalho (git apply --index, git checkout-index -u e git read-tree -u por exemplo) são automaticamente marcados como "assume unchanged". Observe que o bit "assume unchanged" não é definido quando o comando git update-index --refresh
encontrar o arquivo correspondente no índice da árvore de trabalho (use o comando git update-index --really-refresh
se quiser marcá-los como "assume unchanged").
Às vezes, os usuários confundem o bit "assume unchanged" com o bit "skip-worktree" (ignorar árvore de trabalho). Consulte o parágrafo final da seção "Skip-worktree bit" abaixo para obter uma explicação das diferenças.
EXEMPLOS
Para atualizar e renovar apenas os arquivos já averiguados:
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
- Em um sistema de arquivos ineficiente com o a opção da configuração
core.ignorestat
definida -
$ git update-index --really-refresh (1) $ git update-index --no-assume-unchanged foo.c (2) $ git diff --name-only (3) $ edit foo.c $ git diff --name-only (4) M foo.c $ git update-index foo.c (5) $ git diff --name-only (6) $ edit foo.c $ git diff --name-only (7) $ git update-index --no-assume-unchanged foo.c (8) $ git diff --name-only (9) M foo.c
-
impõem ao lstat(2) que defina os bits "assuma como inalterado" para os caminhos que coincidam com o índice.
-
marque o caminho que será editado.
-
assim faz o lstat(1) e encontra o índice que coincida com o caminho.
-
assim faz o lstat(2) e encontra o índice que não coincida com o caminho.
-
registrando uma nova versão nos conjuntos dos índices do bit "assuma como inalterado".
-
e é assumido como inalterado.
-
mesmo depois que você o edite.
-
você pode contar sobre a alteração após o fato.
-
agora verifica com lstat(2) e descobre o que foi alterado.
-
SKIP-WORKTREE BIT
O bit do Skip-worktree pode ser definido numa (longa) frase: Diga ao git para evitar escrever o arquivo no diretório de trabalho quando for razoavelmente possível, e trate o arquivo como inalterado quando ele não estiver presente no diretório de trabalho.
Note que nem todos os comandos do git prestarão atenção a este bit, e alguns, só são parcialmente compatíveis.
Os sinalizadores "update-index" e os recursos "read-tree" relacionados ao bit "skip-worktree" são anteriores à introdução do comando git-sparse-checkout[1], que fornece uma maneira muito mais fácil de configurar e manipular os bits "skip-worktree". Caso queira reduzir a sua árvore de trabalho para lidar apenas com um subconjunto dos arquivos no repositório, recomendamos enfaticamente o uso do git-sparse-checkout[1] em vez dos comandos de baixo nível update-index e read-tree.
O objetivo principal do bit skip-worktree é permitir checkouts esparsos, ou seja, ter diretórios de trabalho com apenas um subconjunto de caminhos presentes. Quando o bit skip-worktree estiver definido, os comandos do Git (como o switch
, o pull
e o merge
) evitarão a gravação destes arquivos. No entanto, estes comandos às vezes gravam estes arquivos de qualquer maneira em casos importantes, como conflitos durante uma mesclagem ou um rebase. Os comandos do Git também evitarão tratar a falta desses arquivos como uma exclusão intencional; por exemplo, o comando git add -u
não fará uma exclusão desses arquivos e o comando git commit -a
também não fará um commit para excluí-los.
Embora este bit seja parecido com o bit assumido e alterado, seu objetivo é diferente. O bit assume-unchanged serve para deixar o arquivo na árvore de trabalho, mas fazer com que o Git omita a verificação de alterações e presuma que o arquivo não foi alterado (embora, se ele puder determinar, sem declarar o arquivo, que ele foi alterado, ele estará livre para fazer o registro das alterações). O skip-worktree diz ao Git para ignorar a ausência do arquivo, evitar atualizá-lo quando possível com comandos que normalmente atualizam grande parte do diretório de trabalho (por exemplo, checkout
, switch
, pull
, etc.) e não deixar que a sua ausência seja registrada nos commits. Observe que nas verificações esparsas (configuradas por git sparse-checkout
ou configurando core.sparseCheckout
como true), se um arquivo estiver marcado como skip-worktree no índice, mas for encontrado na árvore de trabalho, o Git limpará o bit skip-worktree deste arquivo.
ÍNDICE DIVIDIDO
Este modo é projetado para repositórios com índices muito grandes e visa reduzir o tempo necessário para gravar repetidamente tais índices.
Nesse modo, o índice é dividido em dois arquivos, $GIT_DIR/index
e $GIT_DIR/sharedindex.<SHA-1>
. As alterações são acumuladas no $GIT_DIR/index
, o índice dividido, enquanto o arquivo do índice compartilhado contém todas os lançamentos no índice e permanece inalterado.
Todas as alterações feitas índice que foi dividido são retornadas ao arquivo do índice compartilhado quando a quantidade de entradas no índice atinge um nível especificado através da variável de configuração splitIndex.maxPercentChange
(consulte git-config[1]).
Sempre que um novo arquivo do índice compartilhado for criado, os arquivos do índice antigos que foram compartilhados são excluídos caso o tempo de alteração seja mais antigo do que o definido pela variável de configuração splitIndex.sharedIndexExpire
(consulte git-config[1]).
Para evitar a exclusão de um arquivo do índice compartilhado que ainda esteja em uso, o seu horário de modificação é atualizado para o horário atual sempre que um novo índice dividido tiver como base o arquivo do índice compartilhado seja criado ou lido.
CACHE NÃO MONITORADO
Esse cache destina-se a acelerar os comandos que envolvem a determinação dos arquivos não monitorados, como o git status
.
Esse recurso funciona gravando o mtime dos diretórios da árvore de trabalho e em seguida, omitindo a leitura dos diretórios e as chamadas da condição nos arquivos dos diretórios cujo mtime não tenha sido alterado. Para que isso funcione, o sistema operacional e o sistema de arquivos subjacentes devem alterar o campo do diretório st_mtime
caso os arquivos no diretório forem adicionados, modificados ou excluídos.
Você pode testar se o sistema de arquivos é compatível com a opção --test-untracked-cache
. A opção --untracked-cache
usada para executar este teste de forma implícita nas versões mais antigas do Git, porém este não é mais o caso.
Caso queira ativar (ou desativar) este recurso, é mais fácil utilizar a variável de configuração core.untrackedCache
(consulte git-config[1]) do que utilizar a opção --untracked-cache
para o comando git update-index
em cada repositório, especialmente se você quiser fazê-lo em todos os repositórios que você utiliza, pois é possível definir a variável de configuração como true
(ou false
) no seu $HOME/.gitconfig
apenas uma vez e afetar todos os repositórios que você toque.
Quando a variável de configuração core.untrackedCache
é alterada, o cache não monitorado é adicionado ou removido do índice da próxima vez que um comando lê o índice; enquanto quando --[no-|force-]untracked-cache
são utilizados, o cache não monitorado é imediatamente adicionado ou removido do índice.
Antes da versão 2.17, o cache não monitorado apresentava um erro, ao substituir um diretório por um link simbólico para outro diretório, fazendo com que ele mostrasse de forma incorreta os arquivos monitorados pelo git como não monitorados. Consulte o "status: adicione um teste com falha mostrando um bug core.untrackedCache" commit com git.git. Uma solução alternativa para isso é (e isso pode funcionar para os outros erros que ainda não foram descobertos no futuro):
$ git -c core.untrackedCache=false status
Também foi demonstrado que este bug afeta os casos sem um link simbólico na reposição de um diretório por um arquivo quando se trata das estruturas internas do cache não monitorado, porém nenhum caso foi relatado onde isso tenha resultado na saída incorreta do comando "git status".
Também existem os casos onde os índices existentes escritos pelas versões do git anteriores a versão 2.17 referenciarem os diretórios que não existem mais, potencialmente fazendo com que muitos avisos de "não foi possível abrir o diretório" sejam impressos durante a execução do comando "git status". Estes são os novos avisos para problemas existentes que foram descartados anteriormente sem qualquer aviso prévio.
Assim como no bug descrito acima, a solução é executar um "status git" único com core.untrackedCache=false
para liberar os dados ruins restantes.
MONITOR DO SISTEMA DE ARQUIVOS
Este recurso visa acelerar as operações do git para os repositórios que possuem grandes diretórios de trabalho.
Ele permite que o git trabalhe em conjunto com um monitor do sistema de arquivos (consulte git-fsmonitor--daemon[1] e a seção "fsmonitor-watchman" do githooks[5]) que pode informá-lo sobre quais os arquivos foram alterados. Isso permite que o git evite ter que fazer um lstat() em todo arquivo para localizar quais os arquivos que foram alterados.
Quando usado em conjunto com o cache não monitorado, pode melhorar ainda mais o desempenho, evitando o custo de varrer todo o diretório ativo à procura de novos arquivos.
Caso queira ativar (ou desativar) este recurso, é mais fácil utilizar a variável de configuração core.fsmonitor
(consulte git-config[1]) do que utilizar a opção --fsmonitor
para o comando git update-index
em cada repositório, especialmente se você quiser fazê-lo em todos os repositórios que você utiliza, pois é possível definir a variável de configuração no seu $HOME/.gitconfig
apenas uma vez e afetar todos os repositórios que você toque.
Quando a variável de configuração core.fsmonitor
é alterada, o monitor do sistema de arquivos é adicionado ou removido do índice na próxima vez que um comando leia o índice. Quando --[no-]fsmonitor
é usado, o monitor do sistema de arquivos é imediatamente adicionado ou removido do índice.
CONFIGURAÇÃO
O comando honra a variável de configuração core.filemode
. Se o seu repositório estiver num sistema de arquivos cujos bits executáveis não são confiáveis, isso deve ser definido como false (consulte git-config[1]). Isso faz com que o comando ignore as diferenças nos modos de arquivo registrados no índice e o modo de arquivo no sistema de arquivos se eles diferirem apenas no bit executável. Num sistema de arquivos tão infeliz, talvez seja necessário usar git update-index --chmod=.
De maneira semelhante, caso a variável de configuração core.symlinks
esteja definida como false (consulte git-config[1]) os links simbólicos serão verificados como arquivos simples e esse comando não modificará o modo de gravação do arquivo vindo de link simbólico para um arquivo regular.
O comando examina a variável de configuração core.ignorestat
. Consulte a seção Uso do bit "assuma como inalterado" acima.
O comando também examina a variável de configuração core.trustctime
. Pode ser útil quando o tempo de alteração do inode é modificado regularmente por algo fora do Git (os rastreadores do sistema de arquivos e os sistemas de backup usam o ctime para marcar os arquivos processados) (consulte git-config[1]).
A extensão do cache não rastreado pode ser ativado através da configuração de variável core.untrackedCache
(consulte git-config[1]).
OBSERVAÇÕES
Os usuários geralmente tentam usar os bits assume-unchanged e skip-worktree para dizer ao Git para ignorar as alterações nos arquivos que são rastreados. Isso não funciona como esperado, pois o Git ainda pode verificar os arquivos da árvore de trabalho em relação ao índice ao executar determinadas operações. Em geral, o Git não oferece uma maneira de ignorar as alterações nos arquivos rastreados, portanto, recomenda-se o uso de soluções alternativas.
Por exemplo, se o arquivo que você deseja alterar for algum tipo de arquivo de configuração, o repositório poderá incluir um arquivo de configuração de amostra que poderá ser copiado para o nome ignorado e modificado. O repositório pode até incluir um script para tratar o arquivo de amostra como um modelo, modificando-o e copiando-o automaticamente.
GIT
Parte do conjunto git[1]