responding not force everything git jgit

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 )