如何在JGit中从一个git分支硬重置到另一个?

问题描述 投票:2回答:1

我有两个分支,一个是主,另一个是1。现在level1是我需要通过git bash将master重置为level1的最新版本我可以通过以下命令来实现。

$ 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();

现在我需要将其重置为level1。

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

但在这里我没有指定level1。我不知道如何指定它。还请说明如何在JGit中提供git merge -s ours origin/master

java git bash jgit
1个回答
6
投票

默认情况下,ResetCommand重置为HEAD。要重置为另一个分支,您需要使用setRef()指定此分支。

例如:

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

上面的命令将让当前分支指向level1的最新提交并将其状态签出到工作目录中。

© www.soinside.com 2019 - 2024. All rights reserved.