【发布时间】:2013-10-10 10:10:03
【问题描述】:
新的 Bitbucket 分支页面很棒。它显示了每个分支在 master 之前/之后的提交次数。是否有显示相同信息的 Git 别名?
信息应显示:
- 分公司名称
- 上次更新时间
- master 后面提交了多少次
- 在 master 之前提交了多少次提交
【问题讨论】:
标签: git
新的 Bitbucket 分支页面很棒。它显示了每个分支在 master 之前/之后的提交次数。是否有显示相同信息的 Git 别名?
信息应显示:
【问题讨论】:
标签: git
看看我在回答一个稍微不同的问题时发布的脚本:https://stackoverflow.com/a/18760795/683080
您需要通过git fetch 或git fetch --all 确保您是最新的。一旦你在,你就可以用它来显示树枝的前面或后面有多远。 Git 不存储这些信息的缓存版本,所以如果你的分支真的落后很多(比如 Linux 内核的当前尖端落后 6,000 次提交),那么计算可能需要一点时间。否则,它会很快。
一个小提示:脚本不显示上次更新的日期,但会显示其余日期。
【讨论】:
如果您将“master”设置为上游跟踪分支:
git branch --set-upstream-to master
然后做git branch -vv,应该看看你的主题分支有多少提交在前面/后面。至于上次更新分支的时间,我认为 Git 不会存储这些信息。
【讨论】:
git branch -vv 没有显示此类信息(至少在 OSX 和 git 1.8.4 上):我只能看到 分支名称、sha、上游、最后提交消息
git status 也显示了这一点,因此它必须是获取此信息的一种方式。
我使用一个小的 perl 脚本,它只使用 'git log branch1..branch2' 命令来计算有多少提交在 branch2 但不在 branch1,反之亦然。它针对指定的基础为每个分支运行此操作。
我将它作为一个名为 git-brstatus 的文件直接安装在 git-core 文件夹中。它显示:
>> git brstatus 主 前方分支背后 3 开发 2这是这个分支图:
┌─[头]──[主]──6 ├ 5 ├ 4 │ ┌─[开发]──3 │ ├ 2 ├─┘ └ 1应该很容易扩展它以收集每个分支的最后提交日期。这是来源。
#!/usr/bin/perl
if($#ARGV != 0) {
die "\nUsage: git-brstatus \n";
}
my $base = $ARGV[0];
my @branches = split(/\n/, `git branch`);
printf "%-10s%-30s%-10s\n", 'Behind', 'Branch', 'Ahead';
foreach my $branch (@branches) {
$branch =~ s/\s//g;
$branch =~ s/\*//g;
next if $branch eq $base;
my @ahead_commits = split(/\n/, `git log --oneline $base..$branch`);
my @behind_commits = split(/\n/, `git log --oneline $branch..$base`);
printf "%-10d%-30s%-10d\n", ($#behind_commits+1), $branch, ($#ahead_commits+1);
}
【讨论】: