且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在没有本地仓库的情况下在远程运行git命令

更新时间:2022-11-02 22:47:53

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

You're looking for git ls-remote. For example:

$ 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!)

您可以限制自己的标签elf使用-heads 选项分支或使用-tags 选项标记,或指定要选择的模式refs,例如仅查看git.git中的git版本标签, git ls-remote< url> refs / tags / v * 。或者,您可能已经确切知道想要什么引用: git ls-remote< url> HEAD

You can limit yourself to branches with the --heads option or tags with the --tags option, or specify a pattern to select refs, for example to see only the git version tags from git.git, git ls-remote <url> refs/tags/v*. Or you might already know exactly what ref you want: git ls-remote <url> HEAD.

不过,您不能在任意遥控器上运行任意命令。传输协议不支持该协议,它们旨在支持列出参考和传输对象(通过数据包)。特别是,您将无法执行与 rev-list 类似的任何操作。对于引用指向的提交,您将只能获得SHA1。

You can't run arbitrary commands on arbitrary remotes, though. The transfer protocols don't support that - they're designed to support listing refs and transferring objects (via packs). In particular, you won't be able to do anything analogous to rev-list. You'll be limited to getting SHA1s for commits pointed to by refs.