【发布时间】:2011-02-14 15:33:55
【问题描述】:
我的程序可以通过 ssh 远程访问 git 存储库,有时需要获取有关特定 git 提交的信息(如提交消息)。如何在没有存储库的本地克隆的情况下查询远程 git 存储库以获取此类信息?
【问题讨论】:
标签: git
我的程序可以通过 ssh 远程访问 git 存储库,有时需要获取有关特定 git 提交的信息(如提交消息)。如何在没有存储库的本地克隆的情况下查询远程 git 存储库以获取此类信息?
【问题讨论】:
标签: git
我只知道git ls-remote 来查找可用的标签和分支及其最新的提交ID。您可以使用它来检查是否已对分支进行了新的提交。
【讨论】:
ls-remote 仍然要求您拥有一个(本地)存储库,该存储库具有对远程的引用。而要获取实际的更新信息,你需要先从那个仓库中获取,然后与完全克隆的本地仓库没有区别。
git ls-remote <url> 在没有存储库的情况下工作。不过,确实,这些 refnames 和 SHA1 可能对您没有多大用处。
ls-remote,而无需先获取它。但是,如果您想要日志消息之类的内容,据我所知,您仍然需要获取本地副本。
您可以可能做到这一点,方法是模拟 git 已经在内部执行的大量操作,并大量手动使用 git plumbing(低级)命令。然而,如果你这样做,你不仅需要自己做很多非常低级的事情,而且最终你所做的事情效率也会很低(不仅是在你第二次请求信息时)。
因此,我建议您从存储库中进行(高级)克隆并以这种方式使用它,即使该存储库仅临时存在。例如,如果您只想查看最新的提交,您可以通过创建 shallow 克隆轻松限制您克隆的内容(使用带有克隆的--depth 选项)。
【讨论】:
您可以使用 ssh 远程命令执行来执行任意 git 命令
$ssh user@host "cd path/to/repo && git log"
【讨论】: