4

I have two branches one is master and another one level1. Now level1 is the latest I need to hard reset master to level1 normally in git bash I can do that by following command.

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

This one works fine for me. My question is how can I achieve it by using JGit. I have tried it. But I am not able to figure out how to set the source and target branch.

consider a scenario I have cloned a master branch

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

Now I need to hard reset it to the level1.

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

But here I am not specifying level1 . I dont know how to specify it. and also please say how to provide git merge -s ours origin/master in JGit

Rüdiger Herrmann
  • 20,512
  • 11
  • 62
  • 79
Obuli Sundar
  • 566
  • 7
  • 26
  • Please ask one question per post. For merging branches in JGit see here: http://stackoverflow.com/questions/12138659/how-to-merge-in-jgit or - if that doesn't answer your question - post a separate question. – Rüdiger Herrmann Sep 23 '15 at 11:29

1 Answers1

8

By default the ResetCommand resets to HEAD. To reset to another branch, you need to specify this branch with setRef().

For example:

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

The above command will let the current branch point to the latest commit of level1 and checkout its state into the work directory .

Rüdiger Herrmann
  • 20,512
  • 11
  • 62
  • 79