如何在存储库上的标签之间获取git diff而不进行克隆/检出

时间:2017-09-25 14:39:39

标签: git bitbucket diff git-diff git-remote

我想知道是否有可能做出类似的事情:

  

git diff --repository ssh://git@server/repository.git TAG1 TAG2

我知道你想问: "为什么不简单地克隆回购然后制作典型的差异?"

好吧,我想创建一个脚本,尽可能快地遍历几十个存储库,以找到我感兴趣的更改。这个脚本将被很多人使用,所以我真的想避免放慢速度下载每个存储库。

所以,我的最后一个问题是:有什么可以做这样的差异吗?

1 个答案:

答案 0 :(得分:3)

我不认为可以做到。

Git不存储提交之间的差异(您相信很多解释),但实际上存储了对象的不同版本。 (它确实将这些不同版本压缩在一起,产生类似于差异的东西)。

为了向您展示典型的git diff输出,git实际上按需比较对象,并计算差异。

如果没有检查(至少部分地)存储库以便比较对象,我就不知道如何做到这一点。或者让服务器通过在服务器端计算diff来进行合作(如GitHub / BitBucket特定选项的注释中所示)。

如果您想最大限度地减少要传输的数据量,可以查看shallow clones