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.36.1 → 2.42.1 no changes
- 2.36.0 04/18/22
RESUMO
git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<texto>] [--stage=<number>|all] [--temp] [-z] [--stdin] [--] [<arquivo>…]
DESCRIÇÃO
Copiará todos os arquivos listados no índice para o diretório de trabalho (não sobrescrevendo os arquivos já existentes).
OPÇÕES
- -u
- --index
-
atualiza as informações das estatísticas para as entradas com check-out no arquivo do índice.
- -q
- --quiet
-
fique em silêncio caso os arquivos já existirem ou não estiverem no índice
- -f
- --force
-
impõem que os arquivos existentes sejam sobrescritos
- -a
- --all
-
faz a verificação de todos os arquivos no índice. Não pode ser utilizado junto com os nomes dos arquivos explícitos.
- -n
- --no-create
-
Não faça a verificação dos novos arquivos, apenas renove os arquivos já verificados.
- --prefix=<texto>
-
Ao criar os arquivos, anexe uma
<texto>
(geralmente um diretório incluindo uma barra/
) - --stage=<número>|all
-
Em vez de fazer a verificação das entradas que não foram mescladas, copie os arquivos do estágio informado. <number> deve ser entre 1 e 3. Observação:
--stage=all
automaticamente implica no uso da opção--temp
. - --temp
-
Em vez de copiar os arquivos para o diretório de trabalho, grave o conteúdo em arquivos temporários. As associações do nome temporário serão gravadas no stdout.
- --stdin
-
Em vez de pegar a lista dos caminhos da linha de comando, leia a lista dos caminhos na entrada padrão. É predefinido que os caminhos sejam separados por LF (ou seja, um caminho por linha).
- -z
-
Somente faz sentido se utilizado junto com a opção
--stdin
; os caminhos são separados com caracteresNUL
em vez deLF
. - --
-
Não interprete mais argumentos como opções.
A ordem das opções costumava importar, agora não mais.
Agora ao executar o comando git checkout-index
, ele não faz nada. Você
provavelmente quis utilizar git checkout-index -a
. E caso queira impor a
sua utilização, utilize git checkout-index -f -a
.
A intuição não é o objetivo aqui. A repetibilidade é. A razão para o comportamento "sem argumentos significa que não há trabalho" é que, a partir dos scripts que você deve ser capaz de executar:
$ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --
o que irá impor a reposição de todos os arquivos * .h
pelas suas cópias no
cache. Uma linha de comando vazia implica em "all", isso impõem que a
renovação ocorra em tudo o que estava no índice, o que não era o caso. Mas
como git checkout-index aceita --stdin
, seria muito mais rápido
utilizar:
$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin
O --
apenas é uma boa ideia quando você sabe que o resto será um nome do
arquivo; isso evitará problemas com um nome do arquivo de, por exemplo,
-a
. Utilizar --
provavelmente é uma boa política nos scripts.
Utilizando --temp
ou --stage=all
Quando o --temp
é utilizado (ou de forma implícita por --stage=all
), o
comando git checkout-index cria um arquivo temporário para cada entrada do
índice que está sendo retirado. O índice não será atualizado com as
informações das estatísticas. Estas opções podem ser úteis caso quem chame,
precise de todos os estágios, de todas as entradas não mescladas para que os
arquivos não mesclados possam ser processados por uma ferramenta de
mesclagem externa.
Uma lista será gravada no stdout, fornecendo a associação dos nomes dos arquivos temporários para os nomes dos caminhos rastreados. O formato da listagem possui duas variações:
-
tempname TAB path RS
O primeiro formato é o que é utilizado quando o
--stage
for omitido ou não seja umstage=all
. O campotempname
é o nome do arquivo temporário que contenha o conteúdo do arquivo epath
é o nome do caminho monitorado no índice. O campotempname
é o arquivo com o nome temporário que armazena o conteúdo do arquivo, opath
e o nome do caminho monitorado no índice. Apenas as entradas solicitadas são produzidas. -
stage1temp SP stage2temp SP stage3tmp TAB path RS
O segundo formato é o que é utilizado quando a opção for
--stage=all
. Os campos temporários dos três estágios (stage1temp, stage2temp, stage3temp) listam o nome do arquivo temporário caso haja uma entrada no estágio, no índice ou em.
, caso não haja uma entrada do estágio. Os caminhos que possuem apenas uma entrada do estágio 0 sempre serão omitidos da saída.
Nos dois formatos, o RS (separador de registros) por predefinição é a nova
linha, mas será o byte nulo caso -z
seja utilizado na linha de comando.
Os nomes dos arquivos temporários são sempre gerados de forma segura com uma
cadeia de caracteres; eles nunca conterão separadores de diretório ou
caracteres de espaço. O campo do caminho é sempre relativo ao diretório
atual e os nomes dos arquivos temporários são sempre relativos ao cume do
diretório.
Caso o objeto que está sendo copiado para um arquivo temporário seja um link simbólico, o conteúdo do link será registrado em um arquivo normal. Cabe ao usuário final ou a Porcelana a responsabilidade do que fazer com essa informação.
EXEMPLOS
- Para atualizar e renovar somente os arquivos já verificados
-
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
- Utilizando git checkout-index para "exportar uma árvore inteira"
-
A habilidade do prefixo basicamente torna trivial a utilização do comando git checkout-index como uma função "exportar como árvore". Leia apenas a árvore desejada no índice e faça:
$ git checkout-index --prefix=git-export-dir/ -a
O comando
git checkout-index
irá "exportar" o índice para um determinado diretório.O "/" no final é importante. O nome que foi exportado é literalmente prefixado com a cadeia de caracteres definida. Faça o contraste disso com o seguinte exemplo.
- Exportar os arquivos com um prefixo
-
$ git checkout-index --prefix=.merged- Makefile
Verifica se a cópia disponível no cache do
Makefile
está no arquivo.merged-Makefile
.
GIT
Parte do conjunto git[1]