Git中的commit ish和tree ish是什么? 问题
Git中提交ish和树ish的具体示例是什么 堆栈溢出问题涉及 特别是tree-ish,但我想更多地了解这两个方面 背景 文献中的用法 多次提及“提交”和 “像树一样”。例如,如果您正在检查:Git中的commit ish和tree ish是什么? 问题,git,Git,Git中提交ish和树ish的具体示例是什么 堆栈溢出问题涉及 特别是tree-ish,但我想更多地了解这两个方面 背景 文献中的用法 多次提及“提交”和 “像树一样”。例如,如果您正在检查: $git grep--具有匹配项的文件--扩展regexp“commit(-)*ish” config.txt git-descripe.txt git-fast-import.txt git-name-rev.txt git-push.txt git-rebase.txt git-rev-parse.t
$git grep--具有匹配项的文件--扩展regexp“commit(-)*ish”
config.txt
git-descripe.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
修订版.txt
及
$git grep--具有匹配项的文件--扩展regexp“tree(-)*ish”|\
$grep--反转匹配注释
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
修订版.txt
定义
Git文档:
指示树对象名称
<commit>
<tree-ish>
指示提交对象名称
<commit>
<tree-ish>
指示树、提交或标记对象名称。接受
参数最终希望对
对象进行操作,但会自动执行
取消引用
和指向
的
对象
<commit-ish>
指示提交或标记对象名称。接受
参数最终希望对
对象进行操作,但会自动执行
解除指向
对象的引用
<commit-ish>
文件不够清楚
尽管上面的文档定义了什么是“提交ish”和“树ish”,
我仍然觉得它太模糊和不清楚
什么是“提交式”和“树式”的具体示例,它们是如何实现的
彼此不同?简短的答案(TL;DR)
以下是提交ish和树ish标识符的完整列表(来自):
----------------------------------------------------------------------
|提交ish/树ish |示例
----------------------------------------------------------------------
| 1. | dae86e1950b1277e545cee180551750029cfe735
| 2. | v1.7.4.2-679-G37FB
| 3. | 主控,主管/主管,参考/主管/主管
| 4. @{{{昨天}主人{五分钟前}
| 5. @{}主控{1}
| 6. @{} | @{1}
| 7. @{-} | @{-1}
| 8. @{上游}主控{上游},{u}
| 9. ^ | 总目^,v1.5.1^0
| 10. ~ | 大师~3
| 11. ^{}v0.99.8^{提交}
| 12. ^{}v0.99.8^{}
| 13. ^{/}头^{/修复讨厌的错误}
| 14. :/ | :/修复讨厌的错误
----------------------------------------------------------------------
|仅限树型|示例
----------------------------------------------------------------------
| 15. : | HEAD:README.txt,master:sub目录/
----------------------------------------------------------------------
|树腥味例子
----------------------------------------------------------------------
| 16. :: | :0:自述,:自述
----------------------------------------------------------------------
标识符#1-14都是“commit-ish”,因为它们都会导致提交,但是
因为提交也指向目录树,所以它们最终都会导致
(子)目录树对象,因此也可以用作“树”
#15在引用(子)目录时也可以用作树ish,但是
也可用于识别特定文件。当它提到文件时,我不是
当然,如果它仍然被认为是“树一样的”,或者它的行为更像“斑点一样”(Git)
将文件称为“blob”)
长话短说
提交Git中的目录树和目录树
在最低级别,Git使用四种基本方法跟踪源代码
对象:
- “Commit ish”是最终导致提交对象的标识符。比如说,
tag->commit
- “Tree-ish”是最终指向Tree(即目录)对象的标识符
标记->提交->项目根目录
:
,它直接将引导到目录树,而不是提交
物体。例如,HEAD:subdirectory