Git中是否有一种为分支提供“描述”的方法?
虽然我尝试使用描述性的名称,但在一个分支上工作一段时间,有时会使我对为什么要创建其他一些主题分支的记忆变得模糊。我尝试为分支使用描述性的名称,但我认为“描述”(关于分支目的的简短说明)会很好。
Git中是否有一种为分支提供“描述”的方法?
虽然我尝试使用描述性的名称,但在一个分支上工作一段时间,有时会使我对为什么要创建其他一些主题分支的记忆变得模糊。我尝试为分支使用描述性的名称,但我认为“描述”(关于分支目的的简短说明)会很好。
当前回答
使用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 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。
不幸的是,你不能推送描述,因为它们存储在你的配置中,这对于团队中的分支来说是无用的。
选定的答案对我来说似乎太夸张了。我倾向于维护每个分支的描述文件,这是一个正常的源代码控制文件,比如master.txt, dev.txt等,如果有一个难以处理的数字或分支,我会创建一个层次结构来更好地组织它。
Chris J建议的README可以工作,只要它使用.gitattribute中定义的自定义合并驱动程序进行设置。 这样,在合并期间始终保留README的本地版本。
分支的“描述”也被称为与元数据相关联的“注释”,它是不受支持的。
至少,对于一个README文件,你可以对任何分支执行:
$ git show myBranch:README
如果你的README在你的REPO的根目录,它将从任何路径工作,因为git show使用的路径是绝对的一个从REPO的顶部目录。
我非常确定目前不支持该特性。我认为最好的办法是创建一个描述文本文件,基本上是一个README,在包含您想要的信息的分支中。
使用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.
作为一个图像,你可以看到颜色: