最简单的方法git可以输出“branch”和“remotes / origin / branch”之间的提交次数

时间:2013-04-16 12:53:58

标签: python git

我正在使用自定义构建系统来管理大量的git存储库,主要使用python编写。

如果我能编写一个报告所有存储库的当前分支的命令,那么它将节省我很多时间,然后报告“branch”的头部是否与“remotes / origin / branch”的头部相同

我们已经有一个命令会在每个git存储库中运行一个shell命令,我正在寻找的是一种从git获取一些简单格式化信息的方法,关于branch和remotes / origin / branch的相对位置。某些东西要么是提交差异的数量,要么是简单的布尔值。

从git中获取这些信息的方法是什么,这样可以最大限度地减少我在python端要做的解析和处理的数量?

3 个答案:

答案 0 :(得分:19)

如果您有足够新版本的git,可以使用:

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

如果提交数量branch超过origin/branch,则第一个数字,第二个数字是提交数量。所以这个分支有两个不是上游的提交,而且还有一个上游提交,但不在我的本地分支中。

我认为引入--count时它是1.6或1.7。

答案 1 :(得分:1)

git status显示远程跟踪分支前后的提交次数。你需要先执行git fetch,因为否则git无法知道是否有任何新东西进入远程。

答案 2 :(得分:1)

如果确保branchorigin/branch的祖先(即快速转发),那么

git log --oneline branch..origin/branch

应该在它们之间打印提交,每个提交在一行中。您可以在python或wc -l中计算行数。

不确定是否存在简单且通用的解决方案。如果涉及孤儿分支,origin/branchbranch可能没有共同的祖先。