Git注意到细节

Max*_*Max 6 git git-notes

我读过这个这个,但仍然认为他们是晦涩难懂.到目前为止了解:

  • 创作(git notes add -m "a note")
  • 注释是命名空间

问题:

  1. 注意似乎没有创建一个提交,所以push(例子)如何可能为他们?它下面的机制是什么?如果不是提交,概念上添加什么?
  2. 我在哪里可以看到我push在Github UI上的'ed笔记?
  3. Github 提交评论之间是否存在任何关系?
  4. 如果Github评论注释我如何获取它们并在我的本地comp上看到它们git log
  5. 如果Github评论不是笔记,它们是什么,是否可以获取它们?
  6. 笔记是否合并?怎么样?
  7. 编辑的笔记是否有任何解决冲突的警告?
  8. 有没有其他问题/困难与笔记?

谢谢

AlB*_*lue 11

我在这里写了更多关于它们的内容,作为本周系列的git技巧的一部分.

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

注释本身是blob,存储在一个单独的ref文件(refs/notes/commits)中,并由它们指向的提交组织(所以git ls-tree refs/notes/commits)给出一个树对象(想想:目录和内容),其中每个目录名称是他们指向的东西to和each值是包含notes消息本身的blob.

你可以在GitHub中看到Gerrit使用JGit评论树中的评论笔记(在GitHub中使用refs/notes/review而不是refs/notes/commit但基本上完全相同的原理):

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

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

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

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

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

如果你追查那里的评论链接到原始的Gerrit来源:

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

您会看到评论数据与notes元素的数据相对应.

至于它们是否干净地合并 - 因为每个注释对应于每个提交,并且每次提交在更改后都是不可变的,并且注释提交基于每个目录/文件,您可以轻松地为不同的提交重叠多个注释而不用担心合并冲突.但是,如果两个程序/进程更新相同的提交注释,则可能存在需要以与任何其他DVCS合并相同的方式解决的合并问题.

一般来说,需要存储正交信息的程序应该使用自己的笔记空间,就像Gerrit所做的那样refs/notes/review.所以,如果你有refs/notes/program1,refs/notes/program2你将永远不会发生碰撞.

  • @AlBlue gihub 是否有可能放弃对笔记的支持?我没有看到您在答案中给出的示例所附的注释。例如,我在 https://github.com/eclipse/jgit/commit/de70108c883afe563a48352c05cdd440c25f58cc 中没有看到任何注释 (3认同)