Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JGit中的内存数据库进行git拉取?_Java_Git_Jgit - Fatal编程技术网

Java 如何使用JGit中的内存数据库进行git拉取?

Java 如何使用JGit中的内存数据库进行git拉取?,java,git,jgit,Java,Git,Jgit,我想创建一个Java程序 连接到某个Git存储库 将文本追加到文件中 提交和 将更改推送到该存储库 理想情况下,所有这些都应该发生在内存中 我使用JGit与Git交互: InMemoryRepository repo = new InMemoryRepository(new DfsRepositoryDescription()); Git git = new Git(repo); git.init().call(); PullCommand pull = git.pull(); StoredC

我想创建一个Java程序

  • 连接到某个Git存储库
  • 将文本追加到文件中
  • 提交和
  • 将更改推送到该存储库
  • 理想情况下,所有这些都应该发生在内存中

    我使用JGit与Git交互:

    InMemoryRepository repo = new InMemoryRepository(new DfsRepositoryDescription());
    Git git = new Git(repo);
    git.init().call();
    PullCommand pull = git.pull();
    
    StoredConfig config = git.getRepository().getConfig();
    config.setString("remote", "origin", "url", "https://XXX");
    config.save();
    
    PullResult result = pull.call();
    
    pull.call()
    导致以下异常:

    org.eclipse.jgit.api.errors.NoHeadException:当前不支持无HEAD的拉入存储库
    位于org.eclipse.jgit.api.PullCommand.call(PullCommand.java:191)
    

    如何将存储库的内容检索到内存中的JGit存储库中?

    要附加文件,您需要一个非裸存储库(具有工作目录的存储库)。声明

    在某些情况下,特别是涉及到工作树时,Ce瓷命令以文件为基础。如果您自己执行工作,则可以执行内存存储库中的插入,但Ce瓷命令不能以这种方式工作


    虽然你可以,但我也推荐(如上面的@Wayne评论)要克隆到临时存储库中,请附加到文件中,推送然后删除存储库。

    您必须发出
    获取
    可能我在这方面不是专业人士,但我从未听说有人试图在内存中访问git-不过我有一个建议..尝试将存储库加载到临时目录中(通过File.mkdirs创建目录时使用File.deleteOnExit函数),然后将所有这些文件加载到内存中,保存所做的任何修改,然后将git与临时目录重新同步。
    no HEAD
    可能意味着您需要先签出某个分支(
    checkout master
    或任何其他分支)@LeGEC你能画出git命令的序列吗?现在,我正在做:1)
    git init
    2)
    git remote add origin…
    3)
    git pull origin
    。当我从命令行使用git时,它通常是这样工作的。@DmitriPisarenko:试着了解在
    new git(repo)
    命令和
    git.init().call()命令之后的活动分支是什么。查看JGit的文档,了解其工作原理的更多详细信息。