从远程git存储库获取单个文件

Oak*_*Oak 5 java git download jgit

有没有办法以编程方式从Java远程git存储库下载单个文件?

  1. 我更喜欢使用尽可能少带宽的解决方案,最好只下载该单个文件.我不需要浏览存储库,我已经有了文件的路径.
  2. 我更喜欢不依赖于其他应用程序的解决方案(例如,在机器上安装另一个git客户端).包含git客户端实现本身的Java库将是最佳的.

我能够使用SVNKit做一些与Subversion类似的东西,我已经看到有一个纯粹的java实现的git(eclipse的JGit)可能能够做类似的事情,所以我希望有一个肯定的答案; 虽然从我对git如何工作的理解 - 只允许来自本地存储库的更新 - 这可能证明是有问题的.

CB *_*ley 9

git并非真正设计用于从远程存储库访问单个文件,但您可以滥用git archive它.缺点是你必须下载一个"树"而不仅仅是你需要的blob.

例如

git archive --remote=url://to.git.repo branch path/to/dir | tar -x file
Run Code Online (Sandbox Code Playgroud)

作为替代方案,如果您在远程存储库上设置了gitweb,则可以使用简单的curl或wget命令以"原始"格式下载任何文件.

  • 请注意,对于`git://`协议,根据我的记忆,您可以明确地启用适当的服务以允许远程`git archive`访问. (2认同)