not - JGit: Checkout una rama remota
git force push everything up to date (4)
Como se muestra en el código de CheckoutCommand
, debe establecer el booleano createBranch
en true
para crear una rama local.
Puede ver un ejemplo en CheckoutCommandTest
- testCreateBranchOnCheckout()
@Test
public void testCreateBranchOnCheckout() throws Exception {
git.checkout().setCreateBranch(true).setName("test2").call();
assertNotNull(db.getRef("test2"));
}
Estoy usando JGit para pagar una rama de seguimiento remoto.
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();
Los archivos están desprotegidos, pero HEAD no apunta a la rama. A continuación se muestra la salida de git status
,
$ git status
# Not currently on any branch.
nothing to commit (working directory clean)
La misma operación se puede realizar en la línea de comandos git, fácilmente y funciona,
git checkout -t origin/mybranch
¿Cómo hacer esto JGit?
Por alguna razón, el código que Robinst publicó no funcionó para mí. En particular, la rama local que se creó no rastreaba la rama remota. Esto es lo que usé que funcionó para mí (usando 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()
También puedes simplemente así
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);
Tienes que usar setCreateBranch
para crear una rama:
Ref ref = git.checkout().
setCreateBranch(true).
setName("branchName").
setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).
setStartPoint("origin/" + branchName).
call();
Su primer comando fue el equivalente de git checkout origin/mybranch
.
(Edit: envié un parche a JGit para mejorar la documentación de CheckoutCommand: https://git.eclipse.org/r/8259 )