从存储库中检索单个文件

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

到目前为止,我设法想出了:

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

这似乎仍然过分。

怎么从回购获取多个文件?


在git 1.7.9.5版本中,这似乎起到了从远程导出单个文件的作用

git archive --remote=ssh://host/pathto/repo.git HEAD README.md

这将README.md文件README.md的内容。


如果部署了Web界面 (如gitweb,cgit,Gitorious,ginatra),则可以使用它下载单个文件(“原始”或“普通”视图)。

如果另一端启用了它,你可以使用git archive的' --remote=<URL> '选项(并且可能将其限制在给定文件驻留的目录中),例如:

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

继Jakub的回答之后。 git archive会生成一个tar或zip压缩文件,所以你需要通过tar来输出输出来获取文件内容:

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

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

:path/to/directory部分是可选的。 如果排除,则获取的文件将被保存到<current working dir>/path/to/directory/filename

另外,如果你想在由git-daemon托管的Git仓库上启用git archive --remote ,你需要启用daemon.uploadarch配置选项。 请参阅https://kernel.org/pub/software/scm/git/docs/git-daemon.html

链接地址: http://www.djcxy.com/p/92397.html

上一篇: Retrieve a single file from a repository

下一篇: Add a list of submodules to the git