我们想用git notes add
注释我们的提交,这可以正常工作。要获得包含注释的所有提交的列表,我们使用此命令
git notes | cut -d' ' -f2 | xargs -ihash git log hash -1
现在我们正在寻找分支机构的笔记。我在这里不知所措,因为笔记对分支一无所知。可能有一种方法可以从git log
开始,并询问git notes
是否有提交的注释。但我确信这对于大型存储库来说是迟钝的。
有什么想法吗?
答案 0 :(得分:2)
我会从这开始:
git log --pretty=format:"%H %N" --show-notes <branch>
请参阅git help log
了解格式字符串中的其他内容,以便按照您希望的方式修改输出...
答案 1 :(得分: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
要在共享时被提取并推送。