我有一个名为'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 branch -v来显示分支....
问题是:如何在没有本地的情况下在远程存储库上执行这些操作。是否有一些通用的方法来查询远程。例如:git --remote=http://host.com/repo branch -v
或git --remote=http://host.com/repo log
Resion:如果我想在远程主机上安装软件,我只想
git archive --remote=<repo>|tar x
)编辑:
我不想在远程上运行命令。我想将远程存储库与本地命令一起使用并将其格式化。
答案 0 :(得分:30)
您正在寻找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
选项的分支或带有--tags
选项的标记,或者指定一个模式来选择引用,例如,仅查看来自git.git的git版本标记, git ls-remote <url> refs/tags/v*
。或者你可能已经确切地知道你想要什么样的参考:git ls-remote <url> HEAD
。
但是,您无法在任意遥控器上运行任意命令。传输协议不支持 - 它们旨在支持列表引用和传输对象(通过包)。特别是,您将无法执行与rev-list
类似的任何操作。您将仅限于为refs指向的提交获取SHA1。
答案 1 :(得分:0)
您可以使用curl检查特定网址是否存在 例如 当我试图击中angularjs现有的URL
$ 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
希望这有帮助