Git 备注详情

Git notes details

我读过 this and this 但仍然觉得它们晦涩难懂。到目前为止理解:

问题:

  1. notes 似乎不会创建提交,那么 push (example) 怎么可能呢?它下面的机制是什么?如果不是提交,从概念上讲,注释添加是什么?
  2. 在哪里可以看到我在 Github UI 上的 push 笔记?
  3. Githubcommit comments人们可以制作和注释功能之间有什么关系吗?
  4. if Github 评论 are 说明我如何通过 git log?
  5. 获取它们并在我的本地 comp 上查看它们
  6. 如果 Github 评论 不是 注释,它们是什么,是否可以获取它们?
  7. 笔记可以合并吗?怎么样?
  8. 在解决已编辑笔记的冲突时有什么注意事项吗?
  9. 还有其他problems/difficulities有注释的吗?

谢谢

作为我的 git tip of the week series.

的一部分,我在这里写了更多关于它们的内容

http://alblue.bandlem.com/2011/11/git-tip-of-week-git-notes.html

笔记本身是存储在单独的参考文件中的 blob (refs/notes/commits) 并由它们指向的提交组织 (因此 git ls-tree refs/notes/commits) 给出一个树对象 (想想: 目录和内容),其中每个目录名称都是它们指向的内容,每个值都是一个包含注释消息本身的 blob。

您可以在 GitHub 中看到 Gerrit 在 JGit 审查树中使用审查笔记(它使用 refs/notes/review 而不是 refs/notes/commit 但本质上完全相同的原则)通过这里:

https://github.com/eclipse/jgit/tree/refs/notes/review

由于它也是一个 ref,并且文件内容的增量与提交一起存储,您可以看到正在更改的各个注释,例如:

https://github.com/eclipse/jgit/commit/de70108c883afe563a48352c05cdd440c25f58cc

请注意,文件名显示为对象的路径;在上面的例子中,de70... 是添加消息的提交,但是提交的内容正在更改文件 3a/bf... 对应于此提交:

https://github.com/eclipse/jgit/commit/3abf35bc0fc7a1c130e8fec42083ffd21c342129

如果你追查评论 link 到原始的 Gerrit 来源:

https://git.eclipse.org/r/#/c/54632/

您看到评论数据与注释元素的数据相对应。

至于是否合并干净——由于每个note对应每个commit,并且每个commit一旦更改就不可变,并且note commit是在per-directory/file基础上的,所以可以很容易的针对不同的notes进行多条note提交重叠而不用担心合并冲突。但是,如果两个 programs/processes 更新相同的提交说明,那么您可能会遇到需要以与任何其他 DVCS 合并相同的方式解决的合并问题。

一般来说,需要存储正交信息的程序应该使用自己的注释 space,就像 Gerrit 对 refs/notes/review 所做的那样。所以如果你有 refs/notes/program1refs/notes/program2 你永远不会发生碰撞。