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

4

我有两个分支,一个是主分支,另一个是level1。现在level1是最新的,我需要将主分支硬重置到level1,通常在git bash中,我可以通过以下命令来完成。

$ 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


请每个帖子只提一个问题。有关在JGit中合并分支的信息,请参见此处:https://dev59.com/22ct5IYBdhLWcg3wXsXH,如果这不能回答您的问题,请单独发布一个问题。 - Rüdiger Herrmann
1个回答

8

默认情况下,ResetCommand 会重置到 HEAD。如果要重置到另一个分支,需要使用 setRef() 指定该分支。

例如:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接