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

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


当前回答

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。

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

其他回答

下面是Greg Hewgill提到的git分支命令的一个可能实现:

#!/usr/bin/perl

sub clean {
    map { s/^[\s\*]*\s// } @_;
    map { s/\s*$// } @_;
    return @_;
}

sub descr {
    $_ = `git config branch.@_.description`;
    s/\s*$//;
    return $_;
};
sub indent {
    $_ = shift;
    s/^/      /mg;
    return $_;
};

my @branches = clean `git branch --color=never --list`;
my %merged = map { $_ => 1 } clean `git branch --color=never --merged`;

for my $branch (@branches) {
    my $asis = `git branch --list --color=always $branch`;
    $asis =~ s/\s*$//;
    print "  $asis";
    print " \033[33m(merged)\033[0m" if ($merged{$branch} and $branch ne "master");
    print "\n";

    print indent descr $branch;
    print "\n";
    print "\n";
}

只使用:

git config branch.<branch name>.description

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

假设您想创建一个分支

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

你可以给标签添加注释:

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

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

git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'

命令将定义全局选项别名。About as shell表达式。如果在存储库中运行git about <branch>,将显示分支的描述。