主人和分支之间的信息前/后信息?

我创建了一个分支,用于在我推送给Github本地回购( test-branch )中进行test-branch

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

This branch is 1 commit ahead and 2 commits behind master

我的问题是:

  • 我怎样才能在本地显示这些信息(即:在终端上显示这个信息的命令,而不必打开Github来查看它)?
  • 我知道我可以看到分支之间的差异使用:

    git diff master..test-branch
    

    或使用Meld (我更喜欢):

    git difftool master..test-branch
    

    但我想知道是否有办法分别看到前面和后面的提交。 IE:有没有一种方法可以证明1自己提前做出承诺,然后自己承诺呢?


  • 这里有一个技巧,我发现在本地比较两个分支(任意两个),并显示每个分支提前多少提交(对您的问题1的更一般的答案):

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

    这给你输出像

    1 7

    这意味着:与主人相比,测试分支提前7次提交,后面1次提交

    您还可以比较origin/master...master等分支,以了解分支在远程分支前后的提交数量


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

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

    $ 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的“提前修订版”中看到差异,我可以从origin/master排除“后面的修订版”:

    git diff master..origin/master^
    

    要查看DIFF在“背后的修订”的origin/master ,我可以排除“未来修订”从master

    git diff origin/master..master^^
    

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

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

    UPDATE

    要查看提前/落后修订,分支必须配置为跟踪另一个分支。 对我来说,这是我克隆远程仓库时的默认行为,以及在使用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提交”

    链接地址: http://www.djcxy.com/p/19495.html

    上一篇: git ahead/behind info between master and branch?

    下一篇: How to iterate through all git branches using bash script