我们可以使用jgit在git中创建一个远程分支而无需签出。例如,我想在远程存储库中从名为 bar 的分支创建名为 foo 的分支,而不在本地检出分支 bar 。
答案 0 :(得分:3)
您无法在不克隆的情况下创建远程分支。
但您可以创建远程分支而无需签出。
具体来说,你可以克隆' .git'目录(不是工作目录)与" setNoCheckout(true),"然后创建远程分支并推送。
让我们看看我的例子:
// clone repository. Like to 'git clone -n repository'
Git.cloneRepository().setURI(projectURL).setDirectory(repositoryFile)
.setCredentialsProvider(credentials).setCloneAllBranches(true).setNoCheckout(true)
.call();
// create branch locally
git.branchCreate().setName(targetBranch).setForce(true)
.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).setStartPoint(startPoint)
.call();
// push created branch to remote repository
// This matches to 'git push targetBranch:targetBranch'
RefSpec refSpec = new RefSpec().setSourceDestination(targetBranch, targetBranch);
git.push().setRefSpecs(refSpec).setCredentialsProvider(credentials).call();
我使用的是jgit版本3.3.0.201403021825-r。这对我来说很好。
答案 1 :(得分:2)
您需要在本地仓库中至少有一个分支“bar
”,才能使用其他名称“foo
”进行推送。
但您不必首先签出本地分支“bar
”。
RefSpec spec = new RefSpec("refs/heads/bar:refs/heads/foo");
git1.push().setRemote("test").setRefSpecs(spec).call();
答案 2 :(得分:0)
我能够使用rest api curl命令
创建一个远程分支/rest/branch-utils/1.0/projects/ {projectKey} /回购/ {repositorySlug} /分支