在git中分支描述
git中有一种方法可以对分支进行“描述”吗? 当我尝试使用描述性名称时,在单个分支上工作了一段时间,有时会减less我为什么做出其他主题分支的记忆。 我尝试使用分支的描述性名称,但是我认为“描述”(关于分支目的的简短说明)会很好。
Git 1.7.9支持这个。 从1.7.9发行说明 :
*“git branch --edit-description”可以用来添加描述性文本 解释一个主题分支是关于什么的。
你可以看到在2011年9月推出的function,提交6f9a332,739453a3 , b7200e8 :
struct branch_desc_cb { const char *config_name; const char *value; }; --edit-description::
打开编辑器并编辑文本以解释分支的用途,以供其他各种命令(例如,
request-pull
)使用。
请注意,它不适用于分离的HEAD分支。
脚本request-pull使用了这个描述:参见commit c016814783 ,同时也是git merge --log
。
request-pull
是一个脚本,用于总结两次提交到标准输出的更改,并在生成的摘要中包含给定的URL。
如果您最终使用自述文件,请创build一个修改git checkout
的git别名,以便每次切换分支时显示您的自述文件。
例如,在〜/ .gitconfig,在[别名]
cor = !sh -c 'git checkout $1 && cat README' -
在此之后,您可以运行git cor <branch_name>
来切换分支并显示您要切换到的分支的自述文件。
由Chris Jbuild议的README
可以工作,只要在.gitattribute
定义一个自定义合并驱动程序.gitattribute
。
这样, README
的本地版本始终在合并期间保留。
分支的“描述”也被称为与该元数据关联的“评论”,并且不被支持。
至less,使用README
文件,您可以为任何分支执行:
$ git show myBranch:README
如果你的自述文件在你的REPO的根目录下,它可以从任何path上运行,因为git show
使用的path是从上述目录的绝对path。
使用git branch --edit-description
来设置或编辑分支描述。
这里有一个shell函数来显示类似于git 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.
而作为一个形象,所以你可以看到的颜色:
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
命令将定义一个全局选项alias.about
作为shellexpression式。 在仓库中运行git about <branch>
将显示分支的描述(如果设置的话)。
这里有两个stream行的build议:
-
git branch --edit-description
:我们不喜欢这个,因为你不能推它。 也许我可以记住我创build的分支是做什么的,但我的团队肯定不能。 -
README
文件pr。 科。 这是合并过程中的一个痛点:超级倾向于合并冲突,当我们合并特征分支时,我们将从分支中提取README
。 树枝之间的差异也是一种痛苦。
我们决定创build一个孤儿branches-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
同样,个别团队成员也可以创build自己的branches-$user
孤立分支机构,如果他们想要的话,描述他们自己的私人分支机构,只要他们不推动他们到团队。
随着进一步的工具,这也可以与git branch
的输出集成。 为此,可能会考虑使用README.yaml
文件而不是简单的README
。
下面是Greg Hewgill提到的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"; }
您可以附加评论标签:
git tag -m 'this was a very good commit' tag1
按照惯例,您可以使用与分支名称相关的标签,也可以使用标签-f将注释标签保留在主题分支的头部。
使用:
git branch --list -v
显示上游分支:
git branch --list -vv
添加-r
只显示遥控器或-a
显示遥控器和本地
我很确定这个function目前不支持。 我认为你最好的select是创build一个描述文本文件,基本上就是一个自述文件,它包含你想要的信息。
所选的答案似乎对我来说是矫枉过正的。 我倾向于维护每个分支描述文件,这是一个普通的源代码控制文件,说master.txt
, dev.txt
等,如果有一个难以处理的数字或分支我会创build一个层次结构,以更好地组织它。