第1部分
为了回答你的问题1,这里有一个我发现的比较两个分支并显示每个分支比另一个分支多提交多少的技巧(对你的问题1的更一般的回答):
本地分支机构:
Git revlist -left-right -count master - test-branch
对于远程分支:
Git rev-list -left-right -count origin/master
输出如下所示:
2 1
这个输出意味着:“与master相比,test-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之前都有<或>来表示它可以在哪个分支上找到(左边或右边,分别是master或test-branch)。
查看代码
如果你想查看只在两个分支上发现的所有新提交的差异,你需要分两步完成:
定义最近的公共祖先
$ git merge-base master test-branch
c22faff7468d6d5caef217ac6b82f3ed95e9d902
将任何一个分支与上面获得的commit sha区别对待(通常是短格式)
显示仅在master上找到的所有提交的差异
git diff c22faff7..master
以显示仅找到test-branch的所有提交的差异
git diff c22faff7..test-branch