使用 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 )
),一旦它在本地可用,检查所需的提交。
我目前正在使用以下方法使用 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 )
),一旦它在本地可用,检查所需的提交。