小编典典

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

all

我在test-branch我推送到的本地 repo () 中创建了一个用于测试的分支Github

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

This branch is 1 commit ahead and 2 commits behind master

我的问题是:

  1. 如何在本地显示此信息(即:在终端上显示此信息的命令,而不必打开Github才能看到它)?
  2. 我知道我可以使用以下方法查看分支之间的差异:
    git diff master..test-branch
    

或使用Meld(我更喜欢):

    git difftool master..test-branch

但我想知道是否有办法分别查看 前后 提交 IE:有没有办法显示 1 次提交自己提前 ,然后 2 次提交自己落后


阅读 27

收藏
2022-05-13

共1个答案

小编典典

第1部分

作为对问题 1 的回答,这是我发现的一个技巧,用于比较两个分支并显示每个分支领先于另一个分支的提交次数(对问题 1 的更一般的回答):

对于 本地 分支机构: git rev-list --left-right --count master...test-branch

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

这给出如下输出:

2 1

此输出的意思是:“与 相比mastertest-branch提前 1 次提交,落后 2 次提交。”

您还可以将本地分支与远程分支进行比较,例如origin/master...master找出本地分支(此处master)在其远程分支之前/之后的提交次数。

第2部分

要回答问题的第二部分,解决方案取决于您想要实现的目标。

查看提交

为了git rev- list返回任何一方唯一的提交的确切列表,请将--count参数替换为类似的内容--pretty=oneline,从而执行完整的命令:

git rev-list --left-right --pretty=oneline master...test-branch

这将生成如下输出:

<bba27b56ad7072e281d529d4845e4edf877eb7d7 unique commit 2 on master
<dad0b69ec50ea57b076bfecabf2cc7c8a652bb6f unique commit 1 on master
>4bfad52fbcf0e60d78d06661d5c06b59c98ac8fd unique commit 1 on test-branch

在这里,每个提交 sha 前面都有<>表示可以在哪个分支上找到它(左或右,此处mastertest-branch分别)。

查看代码

如果您想查看仅在任一分支上找到的所有新提交的差异,您需要分两步执行此操作:

  1. 定义最近的共同祖先

    $ git merge-base master test-branch
    c22faff7468d6d5caef217ac6b82f3ed95e9d902

  2. diff 任一分支到上面获得的提交 sha(通常会使用短格式)

显示仅在 master 上找到的所有提交的差异

git diff c22faff7..master

要显示所有提交的差异,只找到 test-branch

git diff c22faff7..test-branch
2022-05-13