Git:如何在没有本地仓库的情况下获取有关更改的信息?

3

我的程序通过ssh远程访问git存储库,并且有时需要获取有关特定git提交的信息(如提交消息)。我该如何查询远程git存储库以获取此类信息,而无需本地克隆存储库?

4个回答

5
我只知道使用git ls-remote命令来查找可用的标签和分支及其最新提交ID。您可以使用该命令来检查分支是否有新的提交。

ls-remote 仍然需要您拥有一个(本地的)存储库,该存储库具有对远程引用的引用。为了获得实际更新的信息,您需要首先从该存储库获取,并且此时与完全克隆的本地存储库没有区别。 - poke
2
@poke:不对。git ls-remote <url>可以在没有仓库的情况下工作。虽然如此,那些引用名称和SHA1值可能对你没什么帮助。 - Cascabel
您可以直接在远程存储库上调用ls-remote,无需先进行提取。但是,如果您需要类似日志消息的信息,据我所知仍需要提取本地副本。 - Htbaa

2
您可以通过模拟Git已经内部执行的许多操作并且大量手动使用Git低级命令(plumbing)的方式来完成此操作。但是,如果您这样做,不仅需要自己处理很多底层操作,而且在所做的事情中效率非常低(不仅在第二次请求信息时如此)。
因此,我建议您只需从存储库进行(高级)克隆,并以这种方式进行工作,即使该存储库仅存在于临时状态。例如,如果您只想查看最新提交,可以通过创建浅克隆(使用clone选项--depth)轻松限制克隆的内容。

1
需要注意的是,一旦你进行了初始克隆,后续的带宽使用(从获取中)是很小的。不要被克隆的想法吓到——这是一项投资,需要一点维护,而不是一个巨大的持续成本。你的克隆也可以是裸的——没有工作树! - Cascabel

1
您可以使用ssh远程命令执行来执行任意的git命令。

$ ssh user@host "cd path/to/repo && git log"


0

如果你使用的是 GithubBitbucket 或类似的托管服务,你也可以使用该仓库主机的 API。


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