Git中是否有一种为分支提供“描述”的方法?
虽然我尝试使用描述性的名称,但在一个分支上工作一段时间,有时会使我对为什么要创建其他一些主题分支的记忆变得模糊。我尝试为分支使用描述性的名称,但我认为“描述”(关于分支目的的简短说明)会很好。
Git中是否有一种为分支提供“描述”的方法?
虽然我尝试使用描述性的名称,但在一个分支上工作一段时间,有时会使我对为什么要创建其他一些主题分支的记忆变得模糊。我尝试为分支使用描述性的名称,但我认为“描述”(关于分支目的的简短说明)会很好。
当前回答
你可以给标签添加注释:
git tag -m 'this was a very good commit' tag1
按照惯例,您可以使用与分支名称相关的标记,或者您可以使用标记-f在主题分支的头部保留一个注释标记。
其他回答
下面是一个git别名,它可以让你设置和读取当前分支的描述:
git config --global --add alias.about '!describe() { msg="$1"; git config branch."$(git rev-parse --abbrev-ref HEAD)".description ${msg:+"$msg"}; }; describe'
使用/例子:
(develop) $ git about
(develop) $ git about message
(develop) $ git about
message
(develop) $ git about "this is a new message"
(develop) $ git about
this is a new message
(develop) $ git checkout -b test_branch
Switched to a new branch 'test_branch'
(test_branch) $ git about
(test_branch) $ git about "this is the test branch"
(test_branch) $ git about
this is the test branch
(test_branch) $ git checkout -
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
(develop) $ git about
this is a new message
特别感谢@Felicio的回答,让我开始了。
选定的答案对我来说似乎太夸张了。我倾向于维护每个分支的描述文件,这是一个正常的源代码控制文件,比如master.txt, dev.txt等,如果有一个难以处理的数字或分支,我会创建一个层次结构来更好地组织它。
这里有两个流行的建议:
git分支——edit-description:我们不喜欢这样,因为你不能推送它。也许我能记住我创建的分支是做什么的,但我的团队肯定不能。 README文件pr.分支。这是合并过程中的一个痛苦:非常容易合并冲突,当我们合并特性分支时,我们将从分支中拉入README。分支之间的差异也是一种痛苦。
我们决定创建一个孤儿分支——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
类似地,每个团队成员也可以创建他们自己的分支-$user孤儿分支,如果他们愿意,只要他们不把它们推给团队,就可以描述他们自己的私有分支。
通过进一步的工具,这也可以与git分支的输出集成。为了这个目的,可能需要一个自述书。可以考虑使用yaml文件来代替普通的README。
如果您最终要使用README,请创建一个git别名,修改git checkout,以便在每次切换分支时显示您的README。
例如,在~/中添加这个。Gitconfig,在[alias]下
cor = !sh -c 'git checkout $1 && cat README' -
在此之后,您可以运行git cor <branch_name>来切换分支,并显示您要切换到的分支的README。
下面是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";
}