A questão
Quais são os exemplos específicos de commit-ish e tree-ish no Git?
A questão Stack Overflow "O que tree-ish significa no git?" lida especificamente com arborismo, mas quero entender mais sobre ambos .
fundo
Usos na documentação
A documentação do Git faz várias referências a "commit-ish" e "tree-ish". Por exemplo, se você estiver examinando o código-fonte Git :
$ git grep --files-with-matches --extended-regexp "commit(-)*ish"
config.txt
git-describe.txt
git-fast-import.txt
git-name-rev.txt
git-push.txt
git-rebase.txt
git-rev-parse.txt
git.txt
gitcli.txt
glossary-content.txt
howto/revert-branch-rebase.txt
revisions.txt
e
$ git grep --files-with-matches --extended-regexp "tree(-)*ish" | \
$ grep --invert-match RelNotes
diff-format.txt
diff-generate-patch.txt
git-archive.txt
git-cat-file.txt
git-checkout.txt
git-diff-index.txt
git-diff-tree.txt
git-ls-files.txt
git-ls-tree.txt
git-merge-tree.txt
git-read-tree.txt
git-reset.txt
git-svn.txt
git.txt
gitcli.txt
gittutorial-2.txt
glossary-content.txt
revisions.txt
Definições
A documentação do Git define o que são "commit-ish" e "tree-ish" :
<tree>
Indica um nome de objeto de árvore.
<commit>
Indica um nome de objeto de confirmação.
<tree-ish>
Indica um nome de objeto de árvore, confirmação ou tag. Um comando que leva um
<tree-ish>
argumento em última análise, quer operar em um<tree>
objeto, mas automaticamente dereferences<commit>
e<tag>
objetos que ponto em um<tree>
.<commit-ish>
Indica um nome de objeto de confirmação ou tag. Um comando que recebe um
<commit-ish>
argumento, em última análise, deseja operar em um<commit>
objeto, mas desreferencia automaticamente os<tag>
objetos que apontam para a<commit>
.
A documentação não é suficientemente clara
Embora a documentação acima defina o que são "commit-ish" e "tree-ish", ainda acho que é muito vago e confuso.
Quais são os exemplos específicos de "commit-ish" e "tree-ish", e como eles são diferentes um do outro?
stash@{0}
. Eu gostaria de saber onde isso se encaixa em tudo isso. Existem outras coisas como o stash (my-thing@{0}
)? O estoque é apenas um<refname>
?Nota para falantes não nativos de inglês [sic!]: "-Ish" é um sufixo que pode ser aplicado a um adjetivo para indicar "tendo qualidades como" ou "ligeiramente" - consulte http://chambers.co.uk / search /? query = ish & title = 21st
Daí "árvore-ish" - como uma "árvore" .... "commit-ish" - como um "commit"
por exemplo, "Marte aparece como uma estrela avermelhada" ("d" é duplicado!); "a comida no prato não estava quente, mas morna"
Acredito que isso ajuda a explicar "o que é ..." melhor, na medida em que explica o uso da linguagem.
fonte