git存储笔记的方式:
- Git 只为单个命名空间的每次提交存储一个注释。一个可以有多个命名空间。默认命名空间是commit。
- .git/refs/notes/包含一个哈希(例如
MainHash_2
),它是一个树对象。每当您创建注释时,哈希值就会发生变化。 - 该树对象还包含两个哈希值。一对到另一个树结构(注释树结构,例如
NOTES_2
)和一个到父树对象(创建此注释之前 .git/refs/notes/中的一个,例如MainHash_1
) - 笔记树结构包含每个笔记的一个条目。每个条目都有两个哈希:一个用于记录内容,另一个用于指定提交。
正如第三点提到的,为什么要存储父级?由于此父级(其类型与第二点中提到的相同)还包含另一棵树,其中每个注释包含一个条目。
假设当前您有三个笔记。 MainHash_2
包含 NOTES_2
的哈希值,其中每个注释包含三个条目。 MainHash_1
包含 NOTES_1
的哈希值,其中包含两个条目(针对除现在创建的注释之外的所有剩余注释)。 为什么要存储这两个条目两次等等?
最佳答案
只是因为notes命名空间在git中并不是什么特别的东西,它们只是具有完整历史的普通分支。你可以做
git checkout notes/commits
并像处理任何其他分支一样处理您的笔记,例如你可以做
git log notes/commits
查看您的笔记的提交日志。这样您就可以跟踪笔记的所有更改。
你说过:
.git/refs/notes/commits
contains one hash (say,MainHash_2
), which is a tree object.
这不是一个树对象,它是一个提交。就像 .git/refs/heads/master
中一样。您可以通过git cat-file -t <hash>
查看
关于git - 为什么父级存储在 git Notes 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17018267/