Java 使用JGit按分支或提交ID签出Git存储库
我目前正在使用JGit克隆存储库,使用的方法如下: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存储库时,您
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,而不必检查存储库中的整个引用列表,以确定它是分支名称还是特定的提交散列。