如何在远程仓库上“git show”?

时间:2009-12-28 21:46:30

标签: git

我正在尝试使用Microsoft的源服务器功能挂钩我的git存储库,以便人们调试到我的二进制文件将自动从github.com下载源文件。

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

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

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

  

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

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

如果你在系统上安装二进制文件,并期望人们“调试你的二进制文件”,那么你好像可以安装一些额外的文件,不是吗?

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

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

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