【问题标题】:Github: is it possible to download master archive via ssh (without the git client)Github:是否可以通过 ssh 下载主存档(没有 git 客户端)
【发布时间】:2013-09-25 15:58:16
【问题描述】:

我正在尝试从路由器连接到托管在 github 上的 git 存储库。

路由器有wget但不支持ssl连接; github 只允许通过 ssl 进行 http 下载。更新路由器的固件以使 wget 支持 ssl 连接不是一个选项;或使用 git 客户端更新路由器。

但是路由器可以通过 ssh 访问 github。

例如,

ssh git@github.com -i git.key git-receive-pack username/repo.git

是否可以使用类似的 ssh 命令下载存储库中的单个文件或主存档?

我能想到的唯一另一种选择是在我的远程服务器上设置一个 Web 代理,这样我就可以使用 wget 访问存储库,但这会给进程添加一个依赖项。

谢谢,

【问题讨论】:

    标签: git github ssh


    【解决方案1】:

    如果您使用

    创建克隆

    git clone --bare ssh://URL/repo.git 你得到主存档。

    理论上如果scp 命令处于打开状态(通常不会),您可以使用scp 进行复制

    【讨论】:

    • 但那是使用 git 客户端,它不在路由器上
    • 您使用中间机器创建克隆(在这种情况下不是裸克隆)然后将内容复制过来
    【解决方案2】:

    Git 协议不适用于文件,而是历史和引用。你可以将选项传递给git-clone/git-fetch,例如--depth 1--single-branch,以产生类似的效果,但是如果你想直接使用ssh,你必须自己实现git协议,这将比您尝试做的任何其他事情都更麻烦。

    如果 ssh 的 SOCKS 代理不起作用,那么您将不得不使用那个 HTTP 代理。没有解释为什么这样的系统需要从不完全是 repo 的存储库中获取任意数据,这听起来很像 X-Y 问题,这是问题子集的某个角落,它有助于评估为什么这将有助于解决问题。

    【讨论】:

    • 我的想法是,在“普通”机器上,当 git 配置为使用 ssh 并且您克隆远程存储库时,该存储库中的文件通过 ssh 传输......所以是的希望有一种简单的方法来实现 git 协议。可能必须使用 http 代理,因为 ssh SOCKS 代理不会将 https 网站“翻译”为 http
    • 您描述的是 FTP 或类似的文件传输协议,这不是版本控制系统的用途。
    • 根本不描述 FTP...假设您运行例如 git clone git@github.com:username/repo.git,您正在使用 SSH 连接到 github 不仅检索信息,而且检索存储库中所有文件的数据还有
    • 所以 git,无论用什么语言编写/编译,都充当使用 SSH 协议检索文件的客户端。我基本上想知道用 shell 编写的东西是否可以做同样的事情......理论上它是......但考虑到使用中间 Marchine 的(稍微草率的)替代方案,这似乎是一项艰巨的工作(在我的情况下运行一个 http 代理)
    • 您一直在谈论传输文件的协议。这不是版本控制系统的意义所在。 Git 协议是关于做 Git 的东西。如果你想下载一堆文件,你需要一些不同的东西。
    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多