在master和branch之间的git前面/后面的信息?

我已经创build了一个分支在我推到Github本地回购( test-branchtest-branch

如果我去我的Github帐户,并select这个test-branch它显示的信息:

 This branch is 1 commit ahead and 2 commits behind master 

我的问题是:

  1. 我怎样才能在本地显示这个信息(即:在terminal上显示这个信息的命令,而不是打开Github看到它)?
  2. 我知道我可以看到分支之间的差异使用:

     git diff master..test-branch 

    或使用Meld (我更喜欢):

     git difftool master..test-branch 

    但我想知道是否有办法看到前面后面的承诺分开。 IE:有没有一种方法可以certificate1自己承诺 ,然后自己承诺呢?

这里有一个技巧,我发现在本地比较两个分支(任何两个),并显示多less提交每个分支领先于另一个(更一般的答案在您的问题1):

git rev-list --left-right --count master...test-branch

这给你输出像

1 7

这意味着:和主人相比,testing分支有7个提交,1个提交

您也可以比较origin/master...master等分支来查找分支在其远程分支前后的提交数量

首先要看看你在本地有多less修改,你应该做一个git fetch来确保你有远程的最新信息。

git status的默认输出告诉你前后有多less个修订,但通常我觉得这太冗长了:

 $ git status # On branch master # Your branch and 'origin/master' have diverged, # and have 2 and 1 different commit each, respectively. # nothing to commit (working directory clean) 

我更喜欢git status -sb

 $ git status -sb ## master...origin/master [ahead 2, behind 1] 

事实上,我只是简单地将它git s ,这是我用来检查状态的主要命令。

要看到master的“提前修订”中的diff,我可以从origin/master排除“后面的修改”:

 git diff master..origin/master^ 

要看到origin/master的“修订版本”中的差异,我可以排除origin/master的“提前修订”:

 git diff origin/master..master^^ 

如果前面或后面有5个修改版本,可能会更容易这样写:

 git diff master..origin/master~5 git diff origin/master..master~5 

UPDATE

要查看提前/后退修订,分支必须configuration为跟踪另一个分支。 对我来说,这是我克隆远程存储库时的默认行为,并在我用git push -u remotename branchname推分支git push -u remotename branchname 。 我的版本是1.8.4.3,但只要我记得它一直在这样工作。

从版本1.8开始,您可以像这样设置跟踪分支:

 git branch --track test-branch 

从版本1.7开始,语法是不同的:

 git branch --set-upstream test-branch 

使用Git 2.5+,您现在可以看到所有分支被推送到分支的其他选项。

 git for-each-ref --format="%(push:track)" refs/heads 

请参阅“ 查看未压缩的Git提交 ”

在完成git fetch之后,可以运行git status来显示本地分支在分支的远程版本之前或之后的提交数量。

这不会告诉你在一个不同的分支前面或后面有多less个提交。 你的select是完全不同的,看github,或使用像上面链接Vimhsa的解决scheme: 所有回购的Git状态

这可能不会直接回答你的问题,但为什么不使用SourceTree