git分支前后为本地分支?

时间:2017-04-14 08:34:14

标签: git

git branch将显示前后

  master    03ea915f82 [behind 16] test

我认为这意味着master落后于remote/origin/master

是否有可能在本地分支机构之前和之后展示?

例如,我有masterdevelop,我经常在master更新rebase master然后更新develop,如果它显示的话会有帮助这样:

  master    03ea915f82 test
  develop   1231231231 [behind master 16] test

1 个答案:

答案 0 :(得分:0)

  

git branch将显示前后

master    03ea915f82 [behind 16] test
     

我认为这意味着master落后于remote/origin/master

单凭这一点是不可能的。计数是针对分支主机的上游设置的。使用-vv时,包含上游的名称:

$ git branch -vv
* master          e0688e9b2 [origin/master: behind 479] git svn: fix
  stash-exp       8dbdf339c [origin/master: ahead 1, behind 1142] st

请注意,这里的两个分支都有origin/master作为其上游,但stash-expmaster更落后(stash-exp提前 1)。

  

是否有可能在本地分支机构之前和之后展示?

是的 - 但每个分支只有一个上游。如果将本地分支A的上游设置为本地分支B,则只能看到A相对于B的前后距离,而不是origin/A 1}}。

您可以计算自己的计数。 git branchgit status这里做的是运行(内部等价物)git rev-list --count

$ git rev-list --count stash-exp..origin/master
1142
$ git rev-list --count origin/master..stash-exp
1

这是打印的两个计数git branch -vv。我们可以同时获得两个:

$ git rev-list --count --left-right stash-exp...origin/master
1       1142

注意这里的三个点,它们产生对称差异:提交可以从任一分支尖端到达,但不能从两个分支尖端到达。 --count中的git rev-list代码在使用--left-right时单独计算两个,并在左侧打印左侧计数(1),在右侧打印右侧计数(1142) 。交换左侧和右侧以及计数交换:

$ git rev-list --count --left-right origin/master...stash-exp
1142    1

如果我希望找到两个本地分支之间的关系,例如masterstash-exp,我可以在这里使用它们:

$ git rev-list --count --left-right master...stash-exp
663     1

告诉我,master的提示可以从stash-exp的提示无法访问663个提交,而stash-exp的提示可以访问1个提交可以从master的小费处找到。