Вопрос
Каковы конкретные примеры commit-ish и tree-ish в Git?
Вопрос о переполнении стека "Что означает древовидное значение в Git?" с особенностями tree-ish, но я хочу больше узнать о обоих.
Фон
Использование в документации
Документация Git содержит несколько ссылок на "commit-ish" и "Дерево-иш". Например, если вы изучите исходный код 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
и
$ 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
Определения
Документация Git определяет, что "commit-ish" и "tree-ish" ::
<tree>
Указывает имя древовидного объекта.
<commit>
Указывает имя объекта фиксации.
<tree-ish>
Указывает имя объекта дерева, фиксации или тега. Команда, которая принимает значение
<tree-ish>
аргумент в конечном итоге хочет работать с объектом<tree>
, но автоматически dereferences<commit>
и<tag>
объекты, которые указывают на a<tree>
.<commit-ish>
Указывает имя объекта фиксации или тега. Команда, которая принимает
<commit-ish>
аргумент в конечном итоге хочет работать с объектом<commit>
, но автоматически dereferences<tag>
объекты, которые указывают на a<commit>
.
Документация недостаточно прозрачна
Несмотря на то, что в приведенной выше документации определяется, что такое "commit-ish" и "tree-ish", Я все еще считаю, что это слишком расплывчато и неясно.
Каковы конкретные примеры "commit-ish" и "tree-ish" и как они отличаются друг от друга?