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

Obu*_*dar 2 java git bash jgit

我有两个分支,一个是主,另一个是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
Run Code Online (Sandbox Code Playgroud)

这个对我来说很好.我的问题是如何使用JGit实现它.我试过了.但我无法弄清楚如何设置源和目标分支.

考虑我克隆了一个主分支的场景

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

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

git.reset().setMode(ResetType.HARD).call();
Run Code Online (Sandbox Code Playgroud)

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

Rüd*_*ann 6

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

例如:

git.reset().setMode(ResetType.HARD).setRef("refs/heads/level1").call();
Run Code Online (Sandbox Code Playgroud)

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