问题
Git中的commit-ish和tree-ish有哪些具体示例?
Stack Overflow上的问题“Git中的tree-ish是什么意思?”处理了tree-ish的具体含义,但我想更多地了解两者。
背景
文档中的用法
Git文档中多次提到“commit-ish”和“tree-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>
对象,但会自动取消引用指向<tree>
的<commit>
和<tag>
对象。<commit-ish>
表示提交或标签对象名称。需要一个
<commit-ish>
参数的命令最终希望操作一个<commit>
对象,但会自动解引用指向<commit>
的<tag>
对象。
man gitglossary
。 - iolsmit