我正在尝试使用jGit克隆存储库并签出特定的提交。
假设提交哈希是:1e9ae842ca94f326215358917c620ac407323c81。
我的第一步是:
// Cloning the repository
Git.cloneRepository()
.setURI(remotePath)
.setDirectory(localPath)
.call();
然后我发现了另一个提出这种方法的问题:
git.checkout().
setCreateBranch(true).
setName("branchName").
setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).
setStartPoint("origin/" + branchName).
call();
但我不确定如何将两者联系在一起?
有什么想法吗?
答案 0 :(得分:15)
您必须首先克隆存储库,因此您的第一步是正确的:
Git.cloneRepository().setURI( remotePath ).setDirectory( localPath ).call();
要通过其ID识别提交,您可以像这样调用checkout
:
git.checkout().setName( "<id-to-commit>" ).call();
但请注意,这会产生detached HEAD。为避免这种情况,您可以告诉checkout
首先创建一个指向提交的新分支,然后签出此分支。
git.checkout().setCreateBranch( true ).setName( "new-branch" ).setStartPoint( "<id-to-commit>" ).call();
API不是很直观,但它可以做到它应该做的事情。