【问题标题】:Git: Find which commit is checked out on a remoteGit:查找在远程上签出的提交
【发布时间】:2016-11-03 16:32:43
【问题描述】:

我有一个本地仓库,而这个仓库有一个遥控器。我想知道在远程上签出了哪个提交(按 SHA 编号),假设远程不是裸存储库。

澄清:我不想在我的本地存储库上跟踪分支或任何其他类型的分支。实际上,即使我的本地存储库是裸存储库,我也想要一种有效的方法。想象一下我的遥控器是ssh://whatever/foo,所以我想通过 SSH 连接到服务器whatever,执行cd /foogit rev-parse HEAD

我不想直接执行上面的示例,因为我不能保证我将拥有远程的 SSH 访问权限。我想要一种不管遥控器类型如何都可以工作的方法

我希望响应是 SHA,而不是分支名称

【问题讨论】:

  • 使用 jthill 的答案。附带说明一下,这甚至适用于裸仓库,因为所有仓库都必须有一个 HEAD。 (如果HEAD 指的是尚未诞生的分支,您将无法以这种方式看到它,或者根本无法真正看到它,但在这种情况下没有答案。)换句话说,您获得的哈希 ID 与其说是“已签出的提交”,不如说是“当前的提交”,也就是说,它仍然意味着裸存储库中的某些内容。

标签: git git-remote


【解决方案1】:
git ls-remote origin HEAD

(任何 repo 引用都可以作为来源,您可以使用 url 或路径)

【讨论】:

  • 由于某种原因,我收到了多个条目,知道如何只获得 HEAD 吗? gist.github.com/cool-RR/27b9825165791e4ec536f89af70c143a
  • 这是一个模式匹配,|awk '{$2=="HEAD"}' 去除远程跟踪头。
  • 是的,我也在 Python 中进行了类似的模式匹配,我只是希望我不必这样做,因为你永远不知道这些事情什么时候会失败。如果有一种方法可以从 Git 获得纯粹的答案而无需进行文本解析,那就太好了。如果你知道方法,请告诉我。
猜你喜欢
  • 2020-09-25
  • 2017-01-19
  • 2016-12-05
  • 2017-12-19
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2011-09-03
相关资源
最近更新 更多