2014-07-22 3 views
8

jGit을 사용하여 저장소를 복제하고 특정 커밋을 체크 아웃하려고합니다.Git 저장소에서 특정 버전의 JGit을 확인하십시오.

커밋 해시가 1e9ae842ca94f326215358917c620ac407323c81이라고 가정합니다.

내 첫 번째 단계는 다음과 같습니다 어떻게 함께 두 가지를 연결하는

git.checkout(). 
       setCreateBranch(true). 
       setName("branchName"). 
       setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK). 
       setStartPoint("origin/" + branchName). 
       call(); 

하지만 확실 해요 :

// Cloning the repository 
    Git.cloneRepository() 
     .setURI(remotePath) 
     .setDirectory(localPath) 
     .call(); 

내가 다음이 접근 방식을 제안 또 다른 질문을 찾았나요?

의견이 있으십니까?

Git.cloneRepository().setURI(remotePath).setDirectory(localPath).call(); 

그냥이 같은 checkout 호출 할 수있는이 ID로 커밋 체크 아웃 :

, 따라서 귀하의 첫 번째 단계는 바로 당신이 먼저 저장소를 복제해야합니다

답변

14

했다

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