从远程git存储库获取单个文件内容的最有效机制(就传输的数据和使用的磁盘空间而言)是什么?

到目前为止,我已经想出了:

git clone --no-checkout --depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt

这似乎还是有些过分。

从回购中获取多个文件呢?


当前回答

直接从浏览器(我使用safari…)右键单击“查看原始”,选择“下载链接文件”:

其他回答

这里有一些答案的微妙变化,回答了OP的问题:

git archive --remote=git@archive-accepting-git-server.com:foo/bar.git \
  HEAD path/to/file.txt | tar -xO path/to/file.txt > file.txt

如果有web界面部署(如gitweb, cgit, Gitorious, ginatra),你可以使用它来下载单个文件('raw'或'plain'视图)。

如果其他方启用了它,你可以使用git存档的'——remote=<URL>'选项(可能限制它到给定文件所在的目录),例如:

$ git archive --remote=git@github.com:foo/bar.git --prefix=path/to/ HEAD:path/to/ |  tar xvf -

下面是Jakub的回答。Git存档生成tar或zip存档,所以你需要通过tar管道输出以获得文件内容:

git archive --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | tar -x

将在当前目录中保存远程存储库HEAD中的'filename'的副本。

:path/to/directory部分是可选的。如果排除,提取的文件将保存到<当前工作目录>/path/to/directory/filename

此外,如果你想在git-daemon托管的git存储库上启用git archive——remote,你需要启用守护进程。Uploadarch配置选项。参见https://kernel.org/pub/software/scm/git/docs/git-daemon.html

直接从浏览器(我使用safari…)右键单击“查看原始”,选择“下载链接文件”:

一般来说不是,但如果你使用Github:

对我来说,wget到原始url是下载一个特定文件的最佳和最简单的方法。

在浏览器中打开文件,点击“Raw”按钮。现在刷新浏览器,复制url并对其执行wget或curl操作。

wget的例子:

wget 'https://github.abc.abc.com/raw/abc/folder1/master/folder2/myfile.py?token=DDDDnkl92Kw8829jhXXoxBaVJIYW-h7zks5Vy9I-wA%3D%3D' -O myfile.py

旋度的例子:

curl 'https://example.com/raw.txt' > savedFile.txt