Git中是否有一种为分支提供“描述”的方法?

虽然我尝试使用描述性的名称,但在一个分支上工作一段时间,有时会使我对为什么要创建其他一些主题分支的记忆变得模糊。我尝试为分支使用描述性的名称,但我认为“描述”(关于分支目的的简短说明)会很好。


当前回答

Chris J建议的README可以工作,只要它使用.gitattribute中定义的自定义合并驱动程序进行设置。 这样,在合并期间始终保留README的本地版本。

分支的“描述”也被称为与元数据相关联的“注释”,它是不受支持的。

至少,对于一个README文件,你可以对任何分支执行:

$ git show myBranch:README

如果你的README在你的REPO的根目录,它将从任何路径工作,因为git show使用的路径是绝对的一个从REPO的顶部目录。

其他回答

Git 1.7.9支持这一点。从1.7.9版本说明中可以看到:

 * "git branch --edit-description" can be used to add descriptive text
   to explain what a topic branch is about.

你可以在提交6f9a332、739453a3、b7200e8时看到该特性早在2011年9月就已经引入:

struct branch_desc_cb {
  const char *config_name;
  const char *value;
};

--edit-description::

打开编辑器并编辑文本以解释分支的用途,以供各种其他命令使用(例如请求-拉取)。

注意,它不适用于分离的HEAD分支。

这个描述被脚本request-pull使用:参见commit c016814783,还有git merge——log。

request-pull是一个脚本,用于总结两次提交到标准输出之间的更改,并在生成的摘要中包含给定的URL。

不幸的是,你不能推送描述,因为它们存储在你的配置中,这对于团队中的分支来说是无用的。

你可以给标签添加注释:

git tag -m 'this was a very good commit' tag1

按照惯例,您可以使用与分支名称相关的标记,或者您可以使用标记-f在主题分支的头部保留一个注释标记。

这里有两个流行的建议:

git分支——edit-description:我们不喜欢这样,因为你不能推送它。也许我能记住我创建的分支是做什么的,但我的团队肯定不能。 README文件pr.分支。这是合并过程中的一个痛苦:非常容易合并冲突,当我们合并特性分支时,我们将从分支中拉入README。分支之间的差异也是一种痛苦。

我们决定创建一个孤儿分支——readme分支。孤儿分支是有自己独立历史的分支——你可能从Github的gh-pages分支知道它们。这个孤儿分支包含一个单独的README文件。它的内容包括:

master:
    The default branch
mojolicious:
    Start using Mojolicious
branch-whatever:
    Description of the whatever branch

它是可推的和合并友好的。从任何分支查看README:

git show branches-readme:README

缺点是,当您想要更新README时,您需要签出奇怪的孤立分支,并且README不会随着分支的重命名、出现或消失而自动更新。不过,这对我们来说还好。

这样做:

git checkout --orphan branches-readme
# All the files from the old branch are marked for addition - skip that
git reset --hard
# There are no files yet - an empty branch
ls
vi README
# put in contents similar to above
git add README
git commit -m "Initial description of the branches we already have"
git push origin branches-readme
# get all your original files back
git checkout master

类似地,每个团队成员也可以创建他们自己的分支-$user孤儿分支,如果他们愿意,只要他们不把它们推给团队,就可以描述他们自己的私有分支。

通过进一步的工具,这也可以与git分支的输出集成。为了这个目的,可能需要一个自述书。可以考虑使用yaml文件来代替普通的README。

假设您想创建一个分支

git branch branch-20200328
git notes add branch-20200328 -m "This branch is for whatever"
git notes show branch-20200328

只使用:

git config branch.<branch name>.description

在该表扬的地方表扬: https://glebbahmutov.com/blog/git-branches-with-descriptions/