繁体   English   中英

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

[英]Checking out a Git repository by branch or commit ID using JGit

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

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

但是我想允许branch也可以是一个提交ID。 我该如何实施?

克隆Git存储库时,您只能指定要克隆的分支(或更普遍的引用)。 这不仅适用于JGit,还适用于CLI Git。

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

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

如果性能和带宽不是问题,那么您当然可以克隆带有所有引用的存储库( cloneCommand.setCloneAllBranches( true ) ),并在本地使用该存储库后,签出所需的提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM