Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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按分支或提交ID签出Git存储库_Java_Git_Jgit - Fatal编程技术网

Java 使用JGit按分支或提交ID签出Git存储库

Java 使用JGit按分支或提交ID签出Git存储库,java,git,jgit,Java,Git,Jgit,我目前正在使用JGit克隆存储库,使用的方法如下: Git.cloneRepository() .setURI(uri) .setDirectory(createTempDir()) .setBranchesToClone(singleton("refs/heads/" + branch)) .setBranch("refs/heads/" + branch) .call(); 但是,我希望允许分支也成为提交ID。我如何实现这一点?克隆Git存储库时,您

我目前正在使用JGit克隆存储库,使用的方法如下:

Git.cloneRepository()
    .setURI(uri)
    .setDirectory(createTempDir())
    .setBranchesToClone(singleton("refs/heads/" + branch))
    .setBranch("refs/heads/" + branch)
    .call();

但是,我希望允许分支也成为提交ID。我如何实现这一点?

克隆Git存储库时,您只能指定要克隆的分支(或更一般的引用)。这并不特定于JGit,但也适用于CLI Git

可以查询远程存储库中的可用引用及其提交ID,但不能克隆任意提交ID

使用JGit,可以使用
LsRemoteCommand
获取所有可用的参考,而无需实际下载相应的历史记录。或者,您可以使用
CloneCommand
指定一个已知的引用,以便克隆给定的引用及其历史记录


如果性能和带宽不是问题,那么您当然可以克隆一个存储库及其所有引用(
cloneCommand.setCloneAllBranchs(true)
),并在本地可用后,检查所需的提交。

您能描述一下您的工作流程吗?也许有另一种方法来解决你的问题。当然。用户可以在应用程序中输入分支或提交ID以导入内容。我想知道是否有一种简单的方法可以提供给JGit,而不必检查存储库中的整个引用列表,以确定它是分支名称还是特定的提交散列。