tag 如何在没有本地回购的情况下在远程运行git命令




git设置远程仓库密码 (2)

我有一个名为“git-export”的脚本,它可以帮助我导出一个远程仓库。 它是这样运行的:

git-export http://host.com/git-repo <-t tag or -b branch or -c commit> /local/dir

在它被用来导出本地存储库之前,我使用了这些命令:

从分支获取提交:

git branch -v --no-abbrev|awk '($1=="'$BRANCH'") || ($1 == "*" && $2 == "'$BRANCH'"){if($1 == "*"){print $3;}else{print $2;}}'

要么

git rev-parse -q --verify $BRANCH^{commit}

通过标签获取提交:

git rev-parse -q --verify $TAG^{commit}

我也有脚本列出标签,版本(标签,以v开头),我用git分支-v显示分支机构....

问题是:如何在远程存储库上执行这些操作,而无需本地。 有没有一些通用的方式来查询远程。 例如: git --remote=http://host.com/repo branch -vgit --remote=http://host.com/repo log

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

  1. 列表版本,分支机构等
  2. 导出特定的版本/分支/提交,并显示提交的SHA1无论这些我导出(通过出口我的意思是git archive --remote=<repo>|tar x

编辑:

我不想运行在远程的命令。 我想用本地命令来使用远程仓库并显示它的格式。


你可以使用卷曲来检查特定的url是否存在,例如当我尝试点击angularjs现有的网址

$ 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

当我点击一个错误的网址

$ 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

希望这可以帮助


你正在寻找git ls-remote 。 例如:

$ 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选项或带有--heads选项的标签来限制自己的分支,或者指定一个模式来选择ref,例如仅查看来自git.git的git版本标签, git ls-remote <url> refs/tags/v* 。 或者你可能已经知道你想要的东西: git ls-remote <url> HEAD

不过,你不能在任意遥控器上运行任意命令。 传输协议不支持 - 它们被设计为支持列表引用和传输对象(通过包)。 特别是,你将无法做任何类似于rev-list事情。 您将被限制为获取由refs指向的提交的SHA1。







export