如何在没有 cloning/checkout 的情况下获取存储库标签之间的 git 差异

How to get git diff between tags on repository without cloning/checkout

我想知道是否有可能制作类似的东西:

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

我知道您想问: "Why don't you simply clone the repo and then make typical diff?"

好吧,我想制作一个脚本,该脚本将尽可能快地遍历数十个存储库,以便找到我感兴趣的更改。这个脚本将被很多人使用,所以我真的很想避免通过下载每个存储库来减慢速度。

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

我觉得做不到。

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

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

如果不检查(至少部分地)存储库以比较对象,我不知道如何完成此操作。或者让服务器通过在服务器端计算差异来进行合作(如评论中所建议的 GitHub/BitBucket 特定选项)。

如果您想尽量减少传输的数据量,可以查看 shallow clones