如何在repo

时间:2016-12-06 04:44:20

标签: git

我知道如何获取当前版本的本地仓库(How to retrieve the hash for the current commit in Git?)的提交哈希值。

给定一个分支名称,可能与本地repos分支不同,有没有办法在远程仓库中获取最新可用版本的长哈希,而不实际进行克隆或拉取?

2 个答案:

答案 0 :(得分:2)

git ls-remote(或git remote show但此处不直接有用)可以使用与git clonegit fetch相同的Git协议与其他Git联系。这些首先得到一个引用哈希映射的列表,例如:

8d7a455ed52e2a96debc080dfc011b6bb00db5d2        HEAD
a274e0a036ea886a31f8b216564ab1b4a3142f6c        refs/heads/maint
8d7a455ed52e2a96debc080dfc011b6bb00db5d2        refs/heads/master
fb549caa12ec67f9448f8f6b29b102ee5ec54c82        refs/heads/next
4b8cb2c9d27c63c844b1d2507b8b0981adfcf397        refs/heads/pu
595ca97928bf3cde17e40ecbbacb65cc3d053a06        refs/heads/todo

使用clone和fetch,他们继续下载任何“有趣”的对象,而git ls-remote只是将它们打印出来然后停止。

有关选项和其他详细信息,请参阅the documentation;请注意, repository 参数可以是一个URL,因此您甚至不需要运行克隆。

答案 1 :(得分:1)

我不知道如何在本地使用Git直接执行此操作。如果您使用的是Bitbucket或GitHub等工具,那么该网站将在普通视图中显示最新的提交哈希值。

在本地执行此操作而不会对任何事情产生持久影响的一个选项是简单地更新跟踪分支。但首先,记录跟踪分支的提交哈希值。所以这样做:

git log origin/master    # record the SHA-1 hash from HEAD
git pull origin master   # update the tracking branch
# find the SHA-1 hash you want
git update-ref refs/remotes/origin/master <original SHA-1 hash of origin/master>

这里的技巧是将跟踪分支重置到您启动时的位置。现在你有了你想要的哈希值。

但问题:如果你没有包含相应提交的跟踪分支,那么这个哈希有什么用?