如何通过git://协议及git-daemon从远程服务器下载文件?
从git-daemon服务器下载文件的方法
首先明确:可以从运行git-daemon的服务器获取文件,但git-daemon本质是用于Git仓库的只读访问,并非通用文件下载服务,不过你可以通过以下方式拿到目标文件:
方法1:克隆整个仓库后提取文件
git-daemon暴露的是Git仓库,最直接的方式是用git clone将仓库克隆到本地,再从本地仓库提取需要的文件。
针对你的服务器配置,克隆命令为:
git clone git://<服务器IP或域名>:1234/<仓库名>
这里的<仓库名>是/home/user1/目录下的Git仓库文件夹名——因为服务器设置了--base-path=/home/user1/,克隆时只需指定仓库名即可。
克隆完成后,你就能在本地克隆目录里找到所有仓库文件,直接提取所需部分即可。
方法2:直接拉取单个文件(无需完整克隆)
若不想克隆整个仓库,可使用git archive命令配合远程仓库地址,直接生成包含目标文件的归档包并提取:
git archive --remote=git://<服务器IP或域名>:1234/<仓库名> HEAD:<文件路径> | tar -x
说明:
--remote指定远程git-daemon服务器的仓库地址HEAD:<文件路径>表示拉取仓库当前HEAD分支下的指定文件,例如HEAD:docs/readme.txt- 管道到
tar -x可直接解压出文件;若想保存归档包,可改为> file.tar
注意事项
- git-daemon仅支持Git仓库访问,目标文件必须在某个Git仓库内,无法直接访问
/home/user1/下的非Git仓库文件 - 服务器开启了
--export-all,意味着/home/user1/下的所有Git仓库都允许匿名只读访问,无需额外权限 - 无法像curl访问HTTP那样直接用curl处理git://协议(curl默认不支持git://协议,且git-daemon不处理HTTP请求)
内容的提问来源于stack exchange,提问作者geek175
相关产品推荐
相关产品推荐

