首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在远程上运行git命令而不需要本地回购

如何在远程上运行git命令而不需要本地回购
EN

Stack Overflow用户
提问于 2011-04-16 12:03:45
回答 2查看 19.8K关注 0票数 17

我有一个名为‘git-导出’的脚本,它可以帮助我导出一个远程存储库。它是这样运行的:

代码语言:javascript
运行
复制
git-export http://host.com/git-repo <-t tag or -b branch or -c commit> /local/dir

在用于导出本地存储库之前,我使用了以下命令:

从分支处得到提交:

代码语言:javascript
运行
复制
git branch -v --no-abbrev|awk '($1=="'$BRANCH'") || ($1 == "*" && $2 == "'$BRANCH'"){if($1 == "*"){print $3;}else{print $2;}}'

代码语言:javascript
运行
复制
git rev-parse -q --verify $BRANCH^{commit}

要通过标记获得提交:

代码语言:javascript
运行
复制
git rev-parse -q --verify $TAG^{commit}

此外,我有列出标签的脚本,版本(标记,从v开始),我使用git分支-v来显示分支.

问题是:如何在没有本地存储库的情况下在远程存储库上完成这些工作。是否有一些通用的方式来查询远程。例如:git --remote=http://host.com/repo branch -vgit --remote=http://host.com/repo log

结论:如果我想在远程主机上安装软件,我只想

  1. 列表版本、分支等
  2. 导出特定版本/分支/提交,并显示提交的SHA1,而不管我导出的是哪一个(导出指的是
  3. )

编辑:

我不想在遥控器上运行命令。我希望使用带有本地命令的远程存储库,并将其格式化显示。

EN

回答 2

Stack Overflow用户

发布于 2011-04-16 15:55:35

你在找git ls-remote。例如:

代码语言:javascript
运行
复制
$ git ls-remote git://git.kernel.org/pub/scm/git/git.git
4d8b32a2e1758236c4c1b714f179892e3bce982c    HEAD
f75a94048af9e423a3d8cba694531d0d08bd82b4    refs/heads/html
810cae53e0f622d6804f063c04a83dbc3a11b7ca    refs/heads/maint
70b5eebd65f2d47fd69073aed1d3da0f1fd7a017    refs/heads/man
4d8b32a2e1758236c4c1b714f179892e3bce982c    refs/heads/master
b9f1b13437fd0b8b1857ffbdebb9e1adc50481f0    refs/heads/next
83a9d3226b19a683a9a783bde0784c2caf19e9a1    refs/heads/pu
2309986900ed1a5744b3a81c507943593000ce32    refs/heads/todo
d5aef6e4d58cfe1549adef5b436f3ace984e8c86    refs/tags/gitgui-0.10.0
3d654be48f65545c4d3e35f5d3bbed5489820930    refs/tags/gitgui-0.10.0^{}
33682a5e98adfd8ba4ce0e21363c443bd273eb77    refs/tags/gitgui-0.10.1
729ffa50f75a025935623bfc58d0932c65f7de2f    refs/tags/gitgui-0.10.1^{}
...
(git.git has a lot of tags!)

您可以将自己限制为使用--heads选项的分支或带有--tags选项的标记,或者指定一种模式来选择refs,例如,只查看来自git.git,git ls-remote <url> refs/tags/v*的git版本标记。或者,您可能已经确切地知道您需要什么参考信息:git ls-remote <url> HEAD

但是,您不能在任意的遥控器上运行任意命令。传输协议不支持这一点--它们的目的是支持列表、参考和传输对象(通过packs)。特别是,您将无法做任何类似于rev-list的事情。您将被限制为获得由参考文献所指的提交的SHA1s。

票数 34
EN

Stack Overflow用户

发布于 2014-08-11 15:26:39

您可以使用curl来检查特定的url是否存在,例如,当我尝试单击angularjs现有url时。

代码语言:javascript
运行
复制
$ curl -I https://github.com/angular/angularjs.org/tree/master/src
**HTTP/1.1 200 OK**
Server: GitHub.com
Date: Mon, 11 Aug 2014 15:22:40 GMT

当我碰到一个错误的URL

代码语言:javascript
运行
复制
$ curl -I https://github.com/angular/angularjs.org/tree/master/abcd
**HTTP/1.1 404 Not Found**
Server: GitHub.com
Date: Mon, 11 Aug 2014 15:24:06 GMT

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5686336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档