JGit: Checkout a remote branch

前端 未结 4 1529
滥情空心
滥情空心 2020-12-16 10:46

I\'m using JGit to checkout a remote tracking branch.

Git binrepository = cloneCmd.call()

CheckoutCommand checkoutC         


        
相关标签:
4条回答
  • 2020-12-16 10:53

    For whatever reason, the code that robinst posted did not work for me. In particular, the local branch that was created did not track the remote branch. This is what I used that worked for me (using jgit 2.0.0.201206130900-r):

    git.pull().setCredentialsProvider(user).call();
    git.branchCreate().setForce(true).setName(branch).setStartPoint("origin/" + branch).call();
    git.checkout().setName(branch).call();
    
    0 讨论(0)
  • 2020-12-16 10:58

    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)

    0 讨论(0)
  • 2020-12-16 11:01

    As shown in the code of CheckoutCommand, you need to set the boolean createBranch to true in order to create a local branch.

    You can see an example in CheckoutCommandTest - testCreateBranchOnCheckout()

    @Test
    public void testCreateBranchOnCheckout() throws Exception {
      git.checkout().setCreateBranch(true).setName("test2").call();
      assertNotNull(db.getRef("test2"));
    }
    
    0 讨论(0)
  • 2020-12-16 11:03

    you also can just like this

    git.checkout().setName(remoteBranch).setForce(true).call();
                    logger.info("Checkout to remote branch:" + remoteBranch);
                    git.branchCreate() 
                       .setName(branchName)
                       .setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM)
                       .setStartPoint(remoteBranch)
                       .setForce(true)
                       .call(); 
                    logger.info("create new locale branch:" + branchName + "set_upstream with:" + remoteBranch);
                    git.checkout().setName(branchName).setForce(true).call();
                    logger.info("Checkout to locale branch:" + branchName);
    
    0 讨论(0)
提交回复
热议问题