2013-10-03 55 views
2

新的Bitbucket分支页面非常棒。它显示了每个分支在主/从之后的提交数量。有没有显示相同信息的Git别名?别名,显示有多少提交分支在主/从之后

的信息应显示:

  • 分公司名称
  • 当最后更新
  • 多少承诺其背后的主人
  • 多少犯了主人的前方

http://i.imgur.com/VsOH4cr.png

回答

2

看看我张贴在回答一个稍微不同的问题脚本:https://stackoverflow.com/a/18760795/683080

你需要确保你是一个git fetchgit fetch --all跟上时代的。一旦你是,你可以用它来显示分支前后有多远。 Git不存储这些信息的缓存版本,所以如果你的分支远远落后(比如在Linux内核的当前技巧之后6000个提交),那么计算可能需要一些时间。否则,它非常快。

一个小提示:该脚本没有显示上次更新的日期,但它确实显示了其余部分。

1

如果你设置“主人”作为上游跟踪分支:

git branch --set-upstream-to master 

,然后做git branch -vv,应该看到您的主题分支是多少承诺提前/落后。至于分支最后一次更新,我不认为Git存储这些信息。

+0

'GIT中分支-vv'不显示这样的信息(至少在OSX和git 1.8.4):所有我可以看到的是*分支名,沙,上游,最后提交消息* –

+0

完全正确。 'git status'也显示了这一点,所以它必须是获取这些信息的一种方式。 – Gaui

1

我使用一个小的perl脚本,它只是使用'git log branch1..branch2'命令来确定在branch2中有多少提交,但不在branch1中,反之亦然。它针对指定的基础针对每个分支运行此操作。

我直接在git-core文件夹中安装这个名为git-brstatus的文件。它显示:

 
> git brstatus master 
Behind Branch      Ahead 
3   dev       2 

这是这个分支图:

 
┌─[HEAD]──[master]──6 
├ 5 
├ 4 
│ ┌─[dev]──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); 
} 
相关问题