2014-07-22 31 views
8

我想使用jGit克隆存儲庫並簽出一個特定的提交。查看從Git倉庫與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(); 

但我不能確定如何將兩個連接在一起?

有什麼想法?

回答

14

您必須首先克隆庫,這樣你的第一步是正確的:

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不是很直觀,但它做它應該做的。

+1

謝謝,這正是我所需要的! – MrD