从远程git存储库获取单个文件内容的最有效机制(就传输的数据和使用的磁盘空间而言)是什么?
到目前为止,我已经想出了:
git clone --no-checkout --depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt
这似乎还是有些过分。
从回购中获取多个文件呢?
从远程git存储库获取单个文件内容的最有效机制(就传输的数据和使用的磁盘空间而言)是什么?
到目前为止,我已经想出了:
git clone --no-checkout --depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt
这似乎还是有些过分。
从回购中获取多个文件呢?
当前回答
在我看来,使用以下方法是最简单的:
wget https://github.com/name/folder/file.zip?raw=true
其他回答
下面是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
如果你的目标只是下载文件,有一个叫gget的轻松应用程序:
gget github.com/gohugoio/hugo 'hugo_extended_*_Linux-ARM.deb'
上面的例子将从hugo存储库下载单个文件。
https://github.com/dpb587/gget
在我看来,使用以下方法是最简单的:
wget https://github.com/name/folder/file.zip?raw=true
使用实例远程导出单个文件。
git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -x
这将下载文件README。Md到当前目录。
如果你想把文件的内容导出到STDOUT:
git archive --remote=ssh://host/pathto/repo.git HEAD README.md | tar -xO
可以在命令末尾提供多个路径。
如果你想从一个特定的散列+远程存储库中获取一个文件,我尝试过git-archive,但它不起作用。
你必须使用git克隆,一旦存储库克隆出来,你就必须使用git-archive来让它工作。
我发布了一个关于如何从远程的特定哈希在git存档中更简单地做到这一点的问题