git如何以最简单的方式输出“branch”和“remotes/origin/branch”之间提交的数量?

7
我正在使用一个自定义的构建系统,它管理着大量的Git代码库,主要是用Python编写的。
如果我能够编写一个命令来报告所有存储库的当前分支,然后报告“branch”的头是否与“remotes / origin / branch”的头相同,那么这将为我节省很多时间。
我们已经有一个命令,可以在每个Git存储库内运行shell命令。我想要的是一种从Git中获取有关分支和remotes/origin/branch相对位置的简单格式化信息的方法。这些信息可能是提交差异的数量或一个简单的布尔值。
如何从Git获取这些信息才能最小化在Python端必须进行的解析和处理的数量?
3个回答

19

如果您有足够新的Git版本,则可以使用以下命令:

$ git rev-list --count --left-right branch...origin/branch
2   1

第一个数字是branchorigin/branch超前的提交数,第二个数字是落后的提交数。所以这个分支有两个尚未上传到上游的提交,而且有一个上游提交尚未出现在我的本地分支中。

我相信当引入--count时,它是1.6或1.7版本。


1
如果确保 branchorigin/branch 的祖先(即可以快进),则
git log --oneline branch..origin/branch

应该打印它们之间的提交,每个提交一行。您可以在Python或wc -l中计算行数。
不确定是否存在简单通用的解决方案。如果涉及孤立分支,则可能没有origin/branchbranch的共同祖先。

1

git status 显示你比远程跟踪分支多/少了多少个提交。不过,你需要先执行 git fetch,否则 git 就无法知道是否有新的内容被推到远程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接