使用JGit通过分支或提交ID检出Git存储库

时间:2017-07-26 08:46:45

标签: java git jgit

我目前正在使用以下内容使用JGit克隆存储库:

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

但是我想允许branch也是提交ID。我怎么能实现这个呢?

1 个答案:

答案 0 :(得分:1)

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

可以查询可用引用及其提交ID的远程存储库,但无法克隆任意提交ID。

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

如果性能和带宽不是问题,您当然可以使用其所有引用(cloneCommand.setCloneAllBranches( true ))克隆存储库,一旦在本地可用,请检查所需的提交。