代码之家  ›  专栏  ›  技术社区  ›  Noufal Ibrahim

Git中的分支描述

  •  247
  • Noufal Ibrahim  · 技术社区  · 15 年前

    在Git中有没有一种方法可以对分支进行“描述”?

    当我尝试使用描述性的名字时,在一个分支上工作一段时间有时会让我忘记为什么我要做其他一些主题分支。我尝试对分支使用描述性名称,但我认为“描述”(关于分支用途的简短注释)会很好。

    12 回复  |  直到 6 年前
        1
  •  174
  •   nurettin João    7 年前

    Git 1.7.9支持这一点。从 1.7.9 release notes :

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

    您可以看到该功能在2011年9月推出,并提交 6f9a332 , 739453a3 , b7200e8 以下内容:

    struct branch_desc_cb {
      const char *config_name;
      const char *value;
    };
    
    --edit-description::
    

    打开编辑器并编辑文本以解释分支的用途,供各种其他命令(例如 request-pull )

    请注意,对于独立的头分支来说,它不起作用。

    该描述由脚本请求pull使用:请参见 commit c016814783 ,而且 git merge --log .

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

    [来自@achaldave]不幸的是,您不能推送描述,因为它们存储在您的配置中,这使得它对于记录团队中的分支毫无用处。

        2
  •  38
  •   UpAndAdam    9 年前

    如果你 最后使用自述文件,创建一个 git alias 修改 git checkout 这样每次切换分支时都会显示自述文件。

    例如,将此添加到~/.gitconfig中的 [别名]

    cor = !sh -c 'git checkout $1 && cat README' -
    

    之后,你就可以跑了 git cor <branch_name> 切换分支 显示要切换到的分支的自述文件。

        3
  •  28
  •   Community CDub    8 年前

    这个 README 建议由 Chris J 可以工作,前提是它设置有 custom merge driver defined in a .gitattribute .
    这样, 地方的 版本 自述文件 在合并期间始终保留。

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

    至少,用 自述文件 文件,您可以对任何分支执行以下操作:

    $ git show myBranch:README
    

    如果自述文件位于repo的根目录中,那么它将从任何路径运行,因为 git show 是所述回购协议顶部目录中的绝对目录。

        4
  •  25
  •   phuclv    8 年前

    使用 git branch--edit description 设置或编辑分支说明。

    这里是一个shell函数,用于显示类似于 git branch的分支 but with descriptions added.

    函数gb()。{
    分支=$(每个引用的git--格式='%(refname)'ref s/heads/sed's ref s/heads/')
    对于$branches中的branch;do
    desc=$(git config branch.$branch.description)
    如果[$branch==$(git-rev-parse--abbrev-ref-head)];那么
    branch=“*\033[0;3200万美元branch\033[0万美元”
    其他的
    branch=“$branch”
    FI
    echo-e“$branch\033[0;36m$desc\033[0米”
    完成
    }
    < /代码> 
    
    

    以下是gb的外观,以文本形式显示,以防图像旋转:

    *记录日志顺序详细信息。等待业务澄清。
    主人
    链轮将链轮添加到零件列表中。等待质量保证批准。
    < /代码> 
    
    

    作为图像,您可以看到以下颜色:

    ogit branch但附有说明。

    # Shows branches with descriptions
    function gb() {
      branches=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||')
      for branch in $branches; do
        desc=$(git config branch.$branch.description)
        if [ $branch == $(git rev-parse --abbrev-ref HEAD) ]; then
          branch="* \033[0;32m$branch\033[0m"
         else
           branch="  $branch"
         fi
         echo -e "$branch \033[0;36m$desc\033[0m"
      done
    }
    

    这是什么gb如图所示,以文本形式显示,以防图像旋转:

    $ gb
    * logging Log order details.  Waiting for clarification from business.
      master 
      sprocket Adding sprockets to the parts list.  Pending QA approval.
    

    作为图像,您可以看到颜色:

    enter image description here

        5
  •  10
  •   Peter V. Mørch    8 年前

    这里有两个流行的建议:

    1. git branch --edit-description 我们不喜欢这个,因为你推不动。也许我能记得我创建的分支是做什么的,但我的团队肯定不能。
    2. README 文件pr.branch。这是合并过程中的痛苦:非常容易合并冲突,我们将加入 自述文件 当我们合并特征分支时来自分支。树枝间的差异也是一种痛苦。

    我们决定创造一个孤儿 branches-readme 分支机构。孤立分支是具有独立历史的分支-您可以从Github了解它们 gh-pages 树枝。这个孤立分支包含一个 自述文件 文件。它包含如下内容:

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

    它是可推动和合并友好。查看 自述文件 任何分支机构:

    git show branches-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
    

    同样,每个团队成员也可以创建自己的 branches-$user 孤儿分支描述他们自己的私人分支,如果他们想,只要他们不把他们推到团队。

    通过进一步的工具,这也可以与 git branch . 为此,也许 README.yaml 可以考虑将文件替换为普通文件 自述文件 .

        6
  •  8
  •   Felicio    8 年前
    git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
    

    命令将定义全局选项 alias.about 作为外壳表达式。运行 git about <branch> 如果设置,存储库中将显示分支的描述。

        7
  •  5
  •   phuclv    8 年前

    下面是 git branches 格雷格·休吉尔命令暗指:

    #!/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";
    }
    
        8
  •  2
  •   Jamey Hicks    15 年前

    可以将注释附加到标记:

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

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

        9
  •  1
  •   Peter Mortensen icecrime    6 年前

    使用

    git branch --list -v
    

    显示上游分支:

    git branch --list -vv
    

    添加 -r 只显示遥控器或 -a 显示远程和本地。

        10
  •  0
  •   Chris J    15 年前

    我很确定这个功能目前不受支持。我认为您最好的选择是在分支中创建一个描述文本文件,基本上是一个自述文件,其中包含您想要的信息。

        11
  •  0
  •   pajato0    15 年前

    对我来说,选定的答案似乎有些过分了。我倾向于维护一个每个分支的描述文件,这是一个普通的源代码控制文件,比如 master.txt , dev.txt 等等,如果有一个笨拙的数字或分支,我会创建一个层次结构来更好地组织它。

        12
  •  0
  •   Caleb Miller    7 年前

    只需使用:

    git config branch.<branch name>.description
    

    在信贷到期时提供信贷: https://glebbahmutov.com/blog/git-branches-with-descriptions/