我正在使用自定义构建系统来管理大量的git存储库,主要使用python编写。
如果我能编写一个报告所有存储库的当前分支的命令,那么它将节省我很多时间,然后报告“branch”的头部是否与“remotes / origin / branch”的头部相同
我们已经有一个命令会在每个git存储库中运行一个shell命令,我正在寻找的是一种从git获取一些简单格式化信息的方法,关于branch和remotes / origin / branch的相对位置。某些东西要么是提交差异的数量,要么是简单的布尔值。
从git中获取这些信息的方法是什么,这样可以最大限度地减少我在python端要做的解析和处理的数量?
答案 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)
如果确保branch
是origin/branch
的祖先(即快速转发),那么
git log --oneline branch..origin/branch
应该在它们之间打印提交,每个提交在一行中。您可以在python或wc -l
中计算行数。
不确定是否存在简单且通用的解决方案。如果涉及孤儿分支,origin/branch
和branch
可能没有共同的祖先。