Para completar sua própria resposta, a sintaxe é de fato
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
O comando segue o estilo usual de revisão, o que significa que você pode usar qualquer um dos seguintes:
- nome do ramo (como sugerido por ash )
HEAD
+ x número de ^
caracteres
- O hash SHA1 de uma determinada revisão
- Os primeiros (talvez 5) caracteres de um determinado hash SHA1
Dica É importante lembrar que, ao usar " git show
", sempre especifique um caminho a partir da raiz do repositório , não da posição atual do diretório.
(Embora Mike Morearty mencione que, pelo menos com o git 1.7.5.4, você pode especificar um caminho relativo colocando " ./
" no início do caminho - por exemplo:
git show HEAD^^:./test.py
)
Com o Git 2.23+ (agosto de 2019), você também pode usar o git restore
que substitui o git checkout
comando confuso
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Isso restauraria na árvore de trabalho somente o arquivo como presente na "origem" ( -s
) confirma o SHA1 ou ramo somebranch
.
Para restaurar também o índice:
git restore -s <SHA1> -SW -- afile
( -SW
: abreviação de --staged --worktree
)
Antes do git1.5.x, isso era feito com algum encanamento:
git ls-tree <rev>
mostra uma lista de um ou mais objetos 'blob' dentro de uma confirmação
git cat-file blob <file-SHA1>
cat um arquivo como foi confirmado em uma revisão específica (semelhante ao svn cat). use git ls-tree para recuperar o valor de um determinado arquivo sha1
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
O git-ls-tree lista o ID do objeto para o arquivo $ na revisão $ REV, isso é cortado da saída e usado como argumento para o git-cat-file, que realmente deve ser chamado de git-cat-object e simplesmente despeja esse objeto para stdout.
Nota: desde o Git 2.11 (quarto trimestre de 2016), você pode aplicar um filtro de conteúdo à git cat-file
saída!
Consulte commit 3214594 , commit 7bcf341 (09 de setembro de 2016), commit 7bcf341 (09 de setembro de 2016) e commit b9e62f6 , commit 16dcc29 (24 de agosto de 2016) por Johannes Schindelin ( dscho
) .
(Mesclado por Junio C Hamano - gitster
- na confirmação 7889ed2 , 21 de setembro de 2016)
cat-file
: suporte --textconv
/ --filters
em lote
Mesmo que " git hash-objects
", que é uma ferramenta para pegar um fluxo de dados no sistema de arquivos e colocá-lo no repositório de objetos Git, tenha permissão para executar as conversões "fora do mundo para o Git" (por exemplo, conversões de fim de linha e aplicativos do filtro limpo), e tinha o recurso ativado por padrão desde os primeiros dias, sua operação reversa " git cat-file
", que pega um objeto do armazenamento de objetos Git e externaliza para o consumo pelo mundo externo, não tinha um mecanismo equivalente ao execute o "Git-to-outside-world"
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Nota: " git cat-file --textconv
" iniciou o segfaulting recentemente (2017), que foi corrigido no Git 2.15 (quarto trimestre de 2017)
Veja commit cc0ea7c (21 de setembro de 2017) por Jeff King ( peff
) .
(Mesclado por Junio C Hamano - gitster
- in commit bfbc2fc , 28 de setembro de 2017)
Observe que, para substituir / substituir um arquivo por um conteúdo passado, você não deve mais usar o comando confusogit checkout
, mas git restore
(Git 2.23+, agosto de 2019)
git restore -s <SHA1> -- afile
Isso restauraria na árvore de trabalho apenas o arquivo presente na -s
confirmação "source" ( ) SHA1.
Para restaurar também o índice:
git restore -s <SHA1> -SW -- afile
( -SW
: abreviação de --staged --worktree
)
git show
(sem ajuda) usa sintaxe diferente com dois pontos.git show 2c7cf:my_file.txt