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

Gab*_*iel 166 git github

我已经创建了一个分支,用于在我test-branch推送的本地repo()中进行测试Github.

如果我转到我的Github帐户并选择此帐户,test-branch则会显示以下信息:

This branch is 1 commit ahead and 2 commits behind master
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 如何在本地显示此信息(即:在终端上显示此信息的命令,而不是必须打开Github才能看到它)?
  2. 我知道我可以看到分支之间的差异:

    git diff master..test-branch
    
    Run Code Online (Sandbox Code Playgroud)

    或使用Meld(我更喜欢):

    git difftool master..test-branch
    
    Run Code Online (Sandbox Code Playgroud)

    但我想知道是否有办法分别看到提前落后的提交.IE:有没有办法表明1提前自己提交然后那2个提交自己呢?

use*_*095 259

这是我发现比较两个分支的技巧,并显示每个分支在另一个分支之前的提交数量(对于您的问题1的更一般的答案):

对于当地分行: git rev-list --left-right --count master...test-branch

对于远程分支: git rev-list --left-right --count origin/master...origin/test-branch

这给出了如下输出:

1 7

这个输出意味着:"相比之下master,test-branch提前7次提交,1次提交."

您还可以将本地分支与远程分支进行比较,例如origin/master...master,查找本地master分支在其远程对应的前面/后面提交的提交数量.

  • 要检查*当前分支后面有多少提交*:`git rev-list --left-right --count origin/master ... @ | 切-f1` (8认同)
  • @jakub.g如果使用`--left-only`或`--right-only`,你不需要剪切 (4认同)
  • 这对我来说是一个很好的解决方案,可以确定我是否可以删除一个分支,或者它是否仍然领先于开发。 (2认同)
  • 这对于我的用例来说是最好的,如果您的用户执行git fetch,则查找您当前的功能分支是否位于远程主站后面(`git rev-list --left-right --count origin / master ... @`)之前 防止过时分支的拉取请求很有用。 (2认同)

Sto*_*ica 35

首先要看看你在本地有多少修改,你应该做一个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)
Run Code Online (Sandbox Code Playgroud)

我更喜欢git status -sb:

$ git status -sb
## master...origin/master [ahead 2, behind 1]
Run Code Online (Sandbox Code Playgroud)

实际上我简单地将其别名git s,这是我用来检查状态的主要命令.

要查看"提前修订"中的差异master,我可以从origin/master以下方面排除"后面的修订" :

git diff master..origin/master^
Run Code Online (Sandbox Code Playgroud)

要查看"后面修订版"中的差异origin/master,我可以从master以下方面排除"提前修订" :

git diff origin/master..master^^
Run Code Online (Sandbox Code Playgroud)

如果前面或后面有5个修订版,那么写起来可能更容易:

git diff master..origin/master~5
git diff origin/master..master~5
Run Code Online (Sandbox Code Playgroud)

UPDATE

要查看前/后修订,必须将分支配置为跟踪另一个分支.对我来说,这是克隆远程存储库时的默认行为,以及我推送分支后的默认行为git push -u remotename branchname.我的版本是1.8.4.3,但只要我记得它就像这样工作.

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

git branch --track test-branch
Run Code Online (Sandbox Code Playgroud)

从1.7版开始,语法不同:

git branch --set-upstream test-branch
Run Code Online (Sandbox Code Playgroud)

  • 你在前面和后面看到提交的方式适用于`master`和`origin/master`,我希望看到`master`和另一个分支`test-branch`的差异.你可以重新格式化你的答案地址吗? (7认同)

Von*_*onC 8

使用Git 2.5+,您现在可以使用另一个选项来查看配置为推送到分支的所有分支的前/后.

git for-each-ref --format="%(push:track)" refs/heads
Run Code Online (Sandbox Code Playgroud)

在" 查看未发布的Git提交 "中查看更多内容


小智 6

要获取当前功能分支的 master 之前的提交数量,您可以使用以下命令:

git rev-list --left-right --count master...$(git branch --show-current)
Run Code Online (Sandbox Code Playgroud)