你如何注释分支?

时间:2011-01-20 18:13:34

标签: git

有没有办法注释分支?能够做类似的事情会很高兴:

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

但这当然不是非常有用,因为该注释适用于当前的分支头而不是分支本身。

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

7 个答案:

答案 0 :(得分:38)

这与git note完全不同,但您可以使用git 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对象中,但也可能满足您的需要。

答案 1 :(得分:11)

每当我创建一个新分支时,我都想做一个空提交, 提交消息说出需要说的话。

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

这也有创造历史的美妙副作用 显示在&#34; git log --graph&#34;更清楚 - 即它在树中显示了一个清晰标记的叉子 在我创建分支时, 而不是我通常得到的,这是一个不明确的未标记的分叉在以后的某个时间 当我碰巧在B--进行第一次提交时 这种事让我陷入了迷雾。

答案 2 :(得分: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

答案 3 :(得分:3)

对此的正确答案现在是分支描述,这是在最初询问此问题后添加到git的功能。

以下是提出这个答案的两个问题: Branch descriptions in git Can I add a message/note/comment when creating a new branch in Git?

答案 4 :(得分:2)

您可以在问题跟踪器中创建一个“跟踪错误”,在其中您可以使用模型和UML图表以及所有内容详细描述大型新功能,然后将分支命名为bug1234

答案 5 :(得分:0)

没有。 Notes附加到特定的提交ID。

答案 6 :(得分:0)

可以创建带有说明的git tag --annotate标签。

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

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

注释2: not recommended 使用--force手动将标签更新为HEAD

使用标签的一个优点是,所有协作者都可以使用该描述。