【问题标题】:How to "git show" on a remote repo?如何在远程仓库上“git show”?
【发布时间】:2009-12-28 21:46:30
【问题描述】:

我正在尝试将我的 git 存储库与 Microsoft 的 Source Server 功能挂钩,这样调试到我的二进制文件的人会自动从 github.com 拉取源文件。

git show 命令将为我提供所需的正确文件和版本,但由于调试器未在具有项目源代码的本地 git repo 的计算机上运行,​​我需要“git show”从 github 中提取而不是本地目录。我在想象这样的事情:

git --no-pager "--git-dir=git://github.com/AArnott/dotnetopenid.git" show 93e76d5ff529b6c9921a984c3608c150ed4ee7a3

当 --git-dir 参数是本地目录时,这可以正常工作,但是当它是远程位置时,它会给我一个错误,例如:

致命:不是 git 存储库:'git://github.com/AArnott/dotnetopenid.git'

什么 git 命令会从远程 URL 位置拉取特定文件的特定版本?

【问题讨论】:

  • “看起来充其量我至少需要两个命令”:两个可以捆绑到 one 脚本中的命令,不是吗?甚至是 git 别名。
  • 不能假定客户的调试机器上不存在脚本文件。所以命令必须是完全独立的,只依赖于客户必须已经拥有的命令解释器。也就是说,我考虑了一个 PowerShell 命令,因为它可以是一个命令行上的大型脚本。但到目前为止,我一直未能弄清楚如何进行浅层克隆,或者只获取远程 repo 的一个版本。
  • 你不能使用 curl 或 wget 从你的 github repo 下载这些文件吗?
  • @jj。只有当 git 主机提供 http 来提供原始文件并且我可以预测 URL 时。没有办法做到这一点,而且一些主机无论如何也不通过 h​​ttp 提供原始内容。

标签: git


【解决方案1】:

不幸的是 git 不支持获取单个远程文件。有三种解决方法:

  • 使用 git fetch 获取远程历史记录,然后从本地对象存储中抓取文件。
  • 使用 git archive 在标准输入上以 tar 格式获取完整的树(例如 git archive --remote=url master:somesubdir)。
  • 在服务器上设置 gitweb 或类似的东西并通过它获取文件。

【讨论】:

  • 问题是我需要一个命令来完成所有工作。看起来充其量我至少需要两个命令。
【解决方案2】:

如果您在系统上安装二进制文件,并且希望人们“调试您的二进制文件”,那么您似乎可以安装一些额外的文件,不是吗?

其中一个可能是其中包含别名的 $HOME/.gitconfig(或在 Windows 上调用的任何名称),例如:

[remote "msrepo"]
   url = http://microsoft/git/url.git
[alias]
   msreposhow "git fetch --no-pager msrepo; git show $1"

然后您可以一步执行“git msreposhow SHAKEY”,这将调用别名并一步执行两个命令。

【讨论】:

  • "git remoteshow" 不是有效命令(无论如何在 1.7.3.1.msysgit.0 上)。这是一个错字,还是我遗漏的命令?
  • 这是一个错字,抱歉,StackNewbieUnderFlow。它应该显示对代码中定义的别名的调用。我修复了帖子并重新格式化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2016-11-12
  • 2017-04-15
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多