如何注释分支?

How do you annotate a branch?

提问人:William Pursell 提问时间:1/21/2011 最后编辑:FlowWilliam Pursell 更新时间:2/10/2019 访问量:16129

问:

有什么方法可以注释分支吗?如果能够做这样的事情就好了:

$ git notes add branch-name -m 'This branch is for whatever'

但这当然不是很有帮助,因为该说明适用于分支机构的现任负责人,而不是分支机构本身。

一个简单的解决方法是在存储库中删除 README.branch-name,但这似乎很笨拙。稍微优雅一点的是有一个孤立的分支,只包含 README.branch-names。我正在寻找一种方法来记录分支的目的,而不仅仅是将其放在分支“第一次”提交的提交消息中。我把“first”放在引号里,因为并不总是很清楚这句话是什么意思,这就是为什么把讨论放在提交消息中不方便的原因。通常很难找到记录此类消息的提交。

git

评论

5赞 Wayne Conrad 1/21/2011
git checkout -b long_branch_name_that_means_something
8赞 William Pursell 8/19/2011
重复:stackoverflow.com/questions/2108405/branch-descriptions-in-git
1赞 datashaman 12/21/2016
题外话:长寿的分支应该很少,而且像主人或发展一样广为人知。我认为,如果你有那么多分支需要描述它们,那么你很可能遇到了 git 流问题,或者我误解了你如何使用 git。
2赞 phuclv 5/18/2017
git 中可能重复的分支描述
0赞 imz -- Ivan Zakharyaschev 7/30/2021
@WilliamPursell 如果您仍然认为这个 Q 是重复的,请再次投票。这样它就不会老化。

答:

1赞 Simon Richter 1/21/2011 #1

不。注释附加到特定的提交 ID。

47赞 Brian Phillips 1/21/2011 #2

这将是一种完全不同的方法,但您可以用于此功能。git notegit config

$ git config branch.<branch-name>.note 'This is what this branch is for'

这可以加以别名以使界面更简单(我猜这可以改进,但这是我使用的):

$ git config alias.branch-note '!git config branch.$(git symbolic-ref --short HEAD).note $( if [ $# -gt 0 ]; then $1; fi)'

这允许您像这样设置分支注释(确保引用注释):

$ git branch-note 'This is what this branch is for'

然后,您可以检索当前分支注释,如下所示:

$ git branch-note
This is what this branch is for

作为额外的好处,在命名空间下定义的配置条目将遵循分支重命名,并在以后删除分支时自动清理。这些多余的配置条目只会在分支存在时保留,届时它们将被自动删除。branch.<branch-name>

这种方法的缺点是每个分支只能存储一个“注释”。带有参数的后续分支注释调用将覆盖上一个分支注释。你也没有获得将消息存储在可跟踪的 git 对象中的好处,但也许它足以满足你的目的。

评论

8赞 Jason Axelson 5/19/2011
此说明会被推送到远程存储库吗?
12赞 Brian Phillips 5/20/2011
不,由于这严格来说是一个设置,它不会被推/拉到任何地方(就像所有其他配置选项一样)。git config
16赞 shabunc 12/11/2012
如今,在别名中 - - 只是属性是“description”,而不是“not” - git config branch.<branch-name>.description 将显示该描述。git branch --edit-description
1赞 jffgrdnr 11/19/2013
嘿@BrianPhillips,这对我来说很棒......但是,它偶尔会认为我笔记的第一个词是命令......git branch-note “添加营销登录帮助联系人选项” => git config branch.$(git symbolic-ref HEAD|sed “s/refs\/heads\///”).note $( if [ $# -gt 0 ]; then $1; fi): Adding: command not found
1赞 Tom Auger 2/13/2016
请参阅此答案: stackoverflow.com/questions/2108405/branch-descriptions-in-git git 1.7.9+ 完全按照您的要求执行操作。git-branch --edit-description
2赞 Tyler 1/24/2011 #3

您可以在问题跟踪器中创建一个“跟踪错误”,您可以在其中非常详细地描述大的新功能,包括模型和 UML 图以及所有内容,然后命名分支。bug1234

4赞 rkj 10/17/2012 #4

使用 Brian 的解决方案,我创建了 git-note。您可以像以下方式使用它:

$ git note "Some note" # set note for current branch
$ git note -b branch # see note for branch
$ git note -l # list all the branches with theirs' notes

评论

0赞 David Sopko 12/6/2018
阅读此评论“将文本注释存储在本地 git 存储库配置中。我假设这仅在本地工作并且从远程存储库获取的人不会看到我的更改是否正确?
0赞 Kevin 3/16/2019
@DavidSopko你可以推送/拉动 git 笔记,以便每个人都能看到它们。
18赞 Don Hatch 7/16/2015 #5

每当我创建一个新分支时,我喜欢做一个空的提交, 带有一条提交消息,说明需要说的任何话。

git branch B A
git checkout B
git commit --allow-empty -m "Created branch 'B' from 'A'"

这也有一个创造历史的奇妙副作用 在“git log --graph”中显示得更清楚-- 也就是说,它显示了树上一个明确标记的叉子 在我创建分支时, 而不是我通常会得到的,这是一个不清楚的未标记的叉子 当我碰巧在 B 中进行第一次提交时—— 这种事情让我一直处于迷雾之中。

评论

4赞 Yaza 7/13/2017
您以后如何检索该文本?
1赞 Zitrax 1/24/2019
这样做的一个“奇怪”的副作用是,在合并该分支后,master 上的 git 日志将包含该消息。
0赞 user2518618 11/24/2023
这是“git branch --edit-description”(保存在本地配置中,无法提交或与团队共享)的一个很好的替代方案。我不会做一个空的提交,而是在 Readme.md 中做一个改变(解释新功能)。例如,如果该功能添加了新参数,我会在新分支的第一次提交时将其添加到 Readme.md 中。标准提交注释“已创建分支...”因为第一次提交是个好主意
10赞 skiphoppy 3/17/2016 #6

现在的正确答案是分支描述,这是在最初提出这个问题后添加到 git 中的一个功能。

以下是两个 SO 问题,可以得出这个答案: git 中的分支描述 在 Git 中创建新分支时可以添加消息/注释/注释吗?

评论

2赞 Don Hatch 7/7/2016
正如每个回答线程中至少有一个人所指出的那样:无论如何,这对我来说是无法推动的,因此是无用的。
1赞 user5534993 2/10/2019 #7

使用 git tag --annotate 标签可以创建带有描述的标签。

从技术上讲,该标签归因于提交而不是分支。如果所有协作者都同意使用分支名称(作为标记名称的一部分),则可以使用分支名称作为筛选模式的一部分列出分支的相应标记。-n 选项允许显示实际的注释。别名可能会派上用场,以便自动使用当前分支名称来创建和列出特殊的分支描述标签。

注 1:git describe 可用于查找分支中的最新标签。不幸的是,如果将其他分支合并到感兴趣的分支中,这可能会列出其他分支的标签。

注 2:不建议使用 --force 手动更新标签。HEAD

使用标记的一个优点是,所有协作者都可以使用说明。

评论

0赞 grenix 12/14/2022
说“git tag --annotate startofbranch_branchname”难道不是明智的惯例吗?
0赞 user5534993 12/14/2022
这取决于你想用它实现什么。