当前位置: 首页 > 面试题库 >

从远程git仓库获取单个文件

束高雅
2023-03-14
问题内容

有没有一种方法可以用Java从远程git存储库中以编程方式下载单个文件?

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

我可以使用SVNKit与Subversion进行类似的操作,并且我已经看到有git的纯Java实现(eclipse的JGit),它可以完成类似的操作,因此我希望有一个肯定的答案;尽管据我了解git的工作原理-
仅允许从本地存储库进行更新-这可能会出现问题。


问题答案:

git并不是真正为从远程存储库访问单个文件而设计的,但是您可能会滥用git archive它。缺点是您必须下载“树”而不是仅下载所需的Blob。

例如

git archive --remote=url://to.git.repo branch path/to/dir | tar -x file

或者,如果在远程存储库上设置了gitweb,则可以使用简单的curl或wget命令以“原始”格式下载任何文件



 类似资料:
  • Git 并不像 SVN 那样有个中心服务器。 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。 本例使用了 Github 作为远程仓库,你可以先阅读我们的 Github 简明教程。 添加远程库 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下: git rem

  • 有两种取得 Git 项目仓库的方法。 第一种是在现有项目或目录下导入所有文件到 Git 中; 第二种是从一个服务器克隆一个现有的 Git 仓库。 在现有目录中初始化仓库 如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入: $ git init 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨

  • 假如你只能阅读一章来学习 Git,本章就是你的不二选择。 本章内容涵盖你在使用 Git 完成各种工作中将要使用的各种基本命令。 在学习完本章之后,你应该能够配置并初始化一个仓库(repository)、开始或停止跟踪(track)文件、暂存(stage)或提交(commit)更改。 本章也将向你演示如何配置 Git 来忽略指定的文件和文件模式、如何迅速而简单地撤销错误操作、如何浏览你的项目的历史版

  • 既然我们现在把一切都设置好了,那么我们需要一个Git仓库。有两种方法可以得到它:一种是从已有的Git仓库中 clone (克隆,复制);还有一种是新建一个仓库,把未进行版本控制的文件进行版本控制。 Clone一个仓库 为了得一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git

  • 当你克隆一个远程仓库的同时,Git 会自动为你的记录下它的链接。默认使用这个名字 “origin” 来标识你所克隆的原始仓库。 如果你是直接在计算机上创建了一个本地仓库,这样就没有任何一个远程链接被记录下来。这种情况下,当你尝试做任何远程操作之前你就必须先把它连接到一个远程仓库上去: $ git remote add crash-course-remote https://github.c

  • 为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库。 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。 在本节中,我们将介绍一部分远程管理的技能。 查看