I'm using JGit to checkout a remote tracking branch.
Git binrepository = cloneCmd.call()
CheckoutCommand checkoutCmd = binrepository.checkout();
checkoutCmd.setName( "origin/" + branchName);
checkoutCmd.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK );
checkoutCmd.setStartPoint( "origin/" + branchName );
Ref ref = checkoutCmd.call();
The files are checked out, but the HEAD is not pointing to the branch.
Following is the git status
output,
$ git status
# Not currently on any branch.
nothing to commit (working directory clean)
The same operation can be performed in git command line, easily and it works,
git checkout -t origin/mybranch
How to do this JGit?
You have to use setCreateBranch
to create a branch:
Ref ref = git.checkout().
setCreateBranch(true).
setName("branchName").
setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).
setStartPoint("origin/" + branchName).
call();
Your first command was the equivalent of git checkout origin/mybranch
.
(Edit: I submitted a patch to JGit to improve the documentation of CheckoutCommand: https://git.eclipse.org/r/8259)