Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JGit: Checkout a remote branch

Tags:

git

jgit

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?

like image 453
Nambi Avatar asked Oct 17 '12 04:10

Nambi


People also ask

What does it mean to checkout a remote branch?

Git checkout remote branch is a way for a programmer to access the work of a colleague or collaborator for the purpose of review and collaboration. There is no actual command called “git checkout remote branch.” It's just a way of referring to the action of checking out a remote branch.

How do I checkout a remote branch in Visual Studio?

Find the remote branch in remotes -> origin , then double-click that branch to get it selected locally.


1 Answers

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)

like image 72
robinst Avatar answered Sep 21 '22 23:09

robinst