如何从远程获取最新的提交哈希?

时间:2019-04-16 08:03:50

标签: git

我希望在远程存储库中检索最新的提交哈希,而不管分支是什么。

我尝试过git ls-remote <remote>git ls-remote --tags <remote>,但它们似乎都是按标签名称排序的,因此无法找出最新的标签。

例如,在Github上,您可以转到Insights / Network,并获得一个包含所有分支和提交的图形-但是,在该gui中工作显然并不理想-但数据应该以某种方式存在。

有没有办法从远程获取最新的提交哈希值,而与分支无关吗?

3 个答案:

答案 0 :(得分:2)

您可以将if(activeTabs.length===0){ chrome.tabs.executeScript(tab.id, {file:'jquery.min.js'},function(){ chrome.tabs.executeScript(tab.id, {file:'js/inject.js'}); }); } 与遥控器一起使用:

git show

将向您显示git show origin/master 的最后一次提交

编辑: 为了获得“绝对的”最新提交,我将采取以下措施:

origin/master

这将记录所有远程分支(git log -n 1 $(git branch -r) )。但是将仅保留第一个提交(git branch -r)。

我不太确定时间顺序,但是在我的回购中似乎给了我最新的信息。

另一种选择,更像“单线”:

-n 1

将列出每个远程分支的最后提交,其格式为:日期在第一位,然后排序(在日期上),并保留第一个

答案 1 :(得分:2)

git的最新版本(不知道哪个-2.14否,而2.21允许)在ls-remote中使用“ --sort”选项。您可以轻松做到:

git ls-remote --sort=committerdate

但是请注意-如果有必要调查对象以实现排序(如上例所示),则对象必须在本地可用。否则,您将收到错误消息“致命:缺少对象”。因此,请务必在使用git fetch之前先进行操作。

老实说-由于必须确保在本地获取所有远程分支后才能使用它,因此这比仅在获取后执行git branch -r --sort=committerdate更好。唯一明显的区别是ls-remote直接显示了您要搜索的提交哈希,而使用git branch则必须像这样包装成git rev-parse:

git rev-parse `git branch -r --sort=committerdate | tail -1`

答案 2 :(得分:1)

例如,从远程“来源”获取

git fetch origin

在“ refs / remotes / origin”下打印所有远程分支的信息,

git for-each-ref refs/remotes/origin

按提交日期降序排列

git for-each-ref refs/remotes/origin --sort="-committerdate"

获取最新消息,

git for-each-ref refs/remotes/origin --sort="-committerdate" | head -1

如果您也考虑使用标签,则上述结果可能不是最新提交。要找出标记指向的最新提交,

git for-each-ref refs/tags --sort="-*committerdate" | head -1

请注意,标记可能带有注释,因此这里*是必需的。

您可能还对其他名称空间下的引用感兴趣,例如废弃的请求请求。比较每组裁判的最新提交,并在其中获得最新的提交。