我在test-branch我推送到的本地 repo () 中创建了一个用于测试的分支Github。
test-branch
Github
如果我去我的Github帐户并选择test-branch它,它会显示信息:
This branch is 1 commit ahead and 2 commits behind master
我的问题是:
git diff master..test-branch
或使用Meld(我更喜欢):
Meld
git difftool master..test-branch
但我想知道是否有办法分别查看 前后 提交 。 IE:有没有办法显示 1 次提交自己提前 ,然后 2 次提交自己落后 ?
作为对问题 1 的回答,这是我发现的一个技巧,用于比较两个分支并显示每个分支领先于另一个分支的提交次数(对问题 1 的更一般的回答):
对于 本地 分支机构: git rev-list --left-right --count master...test-branch
git rev-list --left-right --count master...test-branch
对于 远程 分支: git rev-list --left-right --count origin/master...origin/test- branch
git rev-list --left-right --count origin/master...origin/test- branch
这给出如下输出:
2 1
此输出的意思是:“与 相比master,test-branch提前 1 次提交,落后 2 次提交。”
master
您还可以将本地分支与远程分支进行比较,例如origin/master...master找出本地分支(此处master)在其远程分支之前/之后的提交次数。
origin/master...master
要回答问题的第二部分,解决方案取决于您想要实现的目标。
查看提交
为了git rev- list返回任何一方唯一的提交的确切列表,请将--count参数替换为类似的内容--pretty=oneline,从而执行完整的命令:
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 前面都有<或>表示可以在哪个分支上找到它(左或右,此处master或test-branch分别)。
<
>
查看代码
如果您想查看仅在任一分支上找到的所有新提交的差异,您需要分两步执行此操作:
定义最近的共同祖先
$ git merge-base master test-branch c22faff7468d6d5caef217ac6b82f3ed95e9d902
diff 任一分支到上面获得的提交 sha(通常会使用短格式)
显示仅在 master 上找到的所有提交的差异
git diff c22faff7..master
要显示所有提交的差异,只找到 test-branch
git diff c22faff7..test-branch