4

我们想用 注释我们的提交git notes add,这很好用。要获取带有注释的所有提交的列表,我们使用此命令

git notes | cut -d' ' -f2 | xargs -ihash git log hash -1

现在我们只寻找一个分支的注释。我在这里不知所措,因为笔记对分支一无所知。可能有一种方法可以开始git log并询问git notes是否有提交的注释。但是我很确定这对于大型存储库来说是否会变慢。

有任何想法吗?

4

2 回答 2

3

我将从这个开始:

git log --pretty=format:"%H %N" --show-notes <branch>

请参阅git help log您可以在格式字符串中添加的其他内容,以按照您想要的方式修复输出...

于 2013-12-02T12:33:40.480 回答
1

查找笔记

显示所有带有注释的 master 上所有提交的缩写提交:

git notes |\ 
  awk '{if (!system("git merge-base --is-ancestor "$2" master")) {print $2}}' |\
  xargs git show --abbrev-commit --oneline -s --notes

它是如何工作的?

git notes列出注释 blob 到目标提交的映射:

$ git notes 
579c5b129af5662ca2ae6d08977fd5acfe4ca383 3c4f076572612726808d686d04acb2266401c2f9
63a79274ee3486213d58eef8a5a6f604f7c1fdb1 6546d605b21bb92f270af61f3cc00ff2978001e2

因此,您可以通过测试每个分支成员资格来过滤流中的提交。

但是如果你有很多笔记,所有这些单独命令的成本真的会加起来。

每个分支的注释

将来您可能想要在这里做的是为不同的分支使用不同的注释参考。我没有看到将core.notesRef配置选项绑定到当前分支的方法,所以你必须

git notes --ref "my-branch-name" --edit

等等,但你可能会

alias gn git notes --ref "$(git rev-parse --abbrev-ref HEAD)"

处理那个。

这不会按分支对您当前的笔记进行排序,但将来会有所帮助。

如果要共享它们,则需要refs/notes/branchname"为每个 配置它们以获取和推送。branchname

于 2018-10-26T04:53:59.930 回答