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

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


当前回答

Use

git branch --list -v

显示上游分支:

git branch --list -vv

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

其他回答

假设您想创建一个分支

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

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 branch——edit-description来设置或编辑分支描述。

下面是一个shell函数,它显示与git分支类似的分支,但附加了描述。

# Shows branches with descriptions
function gb() {
  current=$(git rev-parse --abbrev-ref HEAD)
  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 == $current ]; 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.

作为一个图像,你可以看到颜色:

你可以使用

git config --get-regexp "branch.*.description"

只使用:

git config branch.<branch name>.description

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