隐藏项表示为一个提交,其树记录了状态 目录的第一个父目录是在HEAD的提交 创建条目的时间。第二个父级的树记录了 进行输入并成为其子项时索引的状态 HEAD提交。血统图看起来像这样:
.----W / / -----H----I
其中H是HEAD提交,I是记录状态的提交 索引,W是记录工作状态的提交 树。
在示例中,隐藏条目是否由提交W
表示?
隐藏项的提交W
有两个父母I
和H
是什么意思?
W
是(双向或三向)合并两个提交I
和H
的结果吗?
谢谢。
答案 0 :(得分:1)
在示例中,隐藏条目由提交W表示吗?
是-或更正确地说,不是,它由提交W
和提交I
表示,但是W
足以找到 I
。 W
或 I
中的任何一个都足以找到H
,而git stash
会自动找到所有三个提交。
隐藏项的提交
W
有两个父母I
和H
是什么意思?
没什么特别的。对于git stash apply
和其他git stash
函数来说,找到I
和H
都更容易(非常容易)。
文档中未显示的是隐藏的 third 提交。第三次提交是可选的;仅当您使用-a
/ --all
或-u
/ --include-untracked
时才显示。第三次提交是W
的第三个父提交。存储代码将测试是否存在该第三父代,以确定该存储是两次提交存储还是三次提交存储。
(第三个提交(如果存在的话)具有根提交的形式,因为它没有父级。它的独特之处在于它只保存并仅保留未跟踪的文件,并且根据所使用的标志也可能被忽略,而根本不保留任何工作树文件。我通常将第三次提交称为U
。)
W
是(双向或三向)合并两个提交I
和H
的结果吗?
不。隐藏代码仅使用(滥用?)合并提交使用的 form ,但出于不同的目的:将两个或有时三个提交提交为易于检查的隐藏形式要检查的代码。这样,特殊名称refs/stash
可以保存W
提交的哈希ID,其他提交也位于该哈希ID中。
(git stash
代码使用特殊的临时索引文件来提交W
和U
提交。进行I
提交更容易:它只运行{{ 1}}和git write-tree
。)