从存储库中检索单个文件
什么是最有效的机制(就传输的数据和使用的磁盘空间而言)从远程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