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

标签 java git bash jgit

我有两个分支,一个是 master,另一个是 level1。现在 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

最佳答案

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

例如:

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

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

关于java - 如何在 JGit 中从一个 git 分支硬重置到另一个分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736517/

相关文章:

Java:我可以在字符串中编码吗?

Javafx设置背景

java - 为什么Hamcrest `matches`方法使用Object作为输入类型而不使用泛型类型作为输入

git - 在不更改索引或工作树的情况下存储

linux - 在文本文件 shell 的列中插入下划线

java - 如何在页面对象模型类-Java中使用鼠标悬停 Action ?

git - 是否可以从 origin/master 恢复对本地分支的提交?

bash - Shell 脚本 - 在文件中智能替换并在第二个文件中查找

linux - 意外标记附近的语法错误

WordPress 主题 git 部署到 windows azure