2015-09-23 47 views
2

我有兩個分支之一是主,另一個是level1。現在level1是我需要在git bash中正常重置master到level1的最新版本,我可以通過以下命令來完成。如何在JGit中從一個git分支硬復位到其他分支?

$ git checkout master 
$ git tag old-master-branch 
$ git reset --hard level1 
$ git merge -s ours origin/master 
$ git push origin master 

這對我來說工作得很好。我的問題是如何使用JGit來實現它。我試過了。但我無法弄清楚如何設置源和目標分支。

考慮我克隆了一個主分支

Git git = Git.cloneRepository().setURI(remote).setCredentialsProvider(new UsernamePasswordCredentialsProvider("obuli", "xxxxxx")).setDirectory(gitPath)     .setNoCheckout(true).call(); 

現在我需要硬重置爲1級的一個場景。

git.reset().setMode(ResetType.HARD).call(); 

但是這裏我沒有指定level1。我不知道如何指定它。也請說如何在JGit提供git merge -s ours origin/master

+0

請每個帖子提問一個問題。在JGit中合併分支請看這裏:http://stackoverflow.com/questions/12138659/how-to-merge-in-jgit或者 - 如果那不回答你的問題 - 發佈一個單獨的問題。 –

回答

4

默認情況下,ResetCommand重置爲HEAD。要重置爲其他分支,您需要使用setRef()指定此分支。

例如:

git.reset().setMode(ResetType.HARD).setRef("refs/heads/level1").call(); 

上面的命令將讓當前分支點的最新提交1級和檢出的狀態投入到工作目錄。

相關問題