在 JGIT 中创建分支时出现 RefNotFoundException
RefNotFoundException when creating a branch in JGIT
我遇到无法创建本地分支的问题。
Error: org.eclipse.jgit.api.errors.RefNotFoundException: Ref origin/sideMerge cannot be resolved
我已经检查了以下 和 Whosebug 中的其他一些内容,但似乎有些可疑或我还不明白。
有人可以指出我对 Ref 不理解的方向吗?
据我所知,本地参考文献从 origin/"other_branch"
开始
代码片段:
Git git;
CreateBranchCommand tmpCreateBranch;
git = new Git(existingRepo);
tmpCreateBranch = git.branchCreate();
try {
tmpCreateBranch.setName(tmpBranchName).setStartPoint("origin/" + tmpBranchName).setForce(true).call();
} catch (Exception e) {
System.out.println("Error in Branch creation");
System.out.println(e);
}
István Szilágyi,我创建的分支如下:
try (Git git = new Git(repository)) {
Ref ref = git.branchCreate().setName("Name_Branch").setStartPoint("origin/develop").call();
git.checkout().setName(branch).call();
git.push().setCredentialsProvider(userService.getCredencialsProvider()).call();
logger.info("Branch created: " + ref + " - " + ref.getName() + " - " + ref.getObjectId().getName());
}
根据Git手册,您可以使用以下语法创建分支。它创建一个名为 <branchname>
的新分支头,它指向当前的头,或者 <start-point>
如果给定:
git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
因此,您可以按照 JGit 中的类似语法创建本地分支 "topic"(请参阅下一个代码块)。在这种情况下,您没有明确配置起点。 JGit 将使用 HEAD 作为起点。所以一切正常:
git.branchCreate().setName("topic").call();
但是,如果您创建起点为 origin/topic
的本地分支,JGit 将尝试在 Git References 中找到该引用。在此上下文中,origin
是远程名称,topic
是分支名称。如果没有找到,它会引发异常:
git.branchCreate().setName("topic").setStartPoint("origin/topic").call();
您还需要注意:
如果分支名称已经存在,setForce(true)
会将目标分支名称重置为起点。没有 -f,--force
git 分支拒绝更改现有分支。
我遇到无法创建本地分支的问题。
Error: org.eclipse.jgit.api.errors.RefNotFoundException: Ref origin/sideMerge cannot be resolved
我已经检查了以下
有人可以指出我对 Ref 不理解的方向吗? 据我所知,本地参考文献从 origin/"other_branch"
开始代码片段:
Git git;
CreateBranchCommand tmpCreateBranch;
git = new Git(existingRepo);
tmpCreateBranch = git.branchCreate();
try {
tmpCreateBranch.setName(tmpBranchName).setStartPoint("origin/" + tmpBranchName).setForce(true).call();
} catch (Exception e) {
System.out.println("Error in Branch creation");
System.out.println(e);
}
István Szilágyi,我创建的分支如下:
try (Git git = new Git(repository)) {
Ref ref = git.branchCreate().setName("Name_Branch").setStartPoint("origin/develop").call();
git.checkout().setName(branch).call();
git.push().setCredentialsProvider(userService.getCredencialsProvider()).call();
logger.info("Branch created: " + ref + " - " + ref.getName() + " - " + ref.getObjectId().getName());
}
根据Git手册,您可以使用以下语法创建分支。它创建一个名为 <branchname>
的新分支头,它指向当前的头,或者 <start-point>
如果给定:
git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
因此,您可以按照 JGit 中的类似语法创建本地分支 "topic"(请参阅下一个代码块)。在这种情况下,您没有明确配置起点。 JGit 将使用 HEAD 作为起点。所以一切正常:
git.branchCreate().setName("topic").call();
但是,如果您创建起点为 origin/topic
的本地分支,JGit 将尝试在 Git References 中找到该引用。在此上下文中,origin
是远程名称,topic
是分支名称。如果没有找到,它会引发异常:
git.branchCreate().setName("topic").setStartPoint("origin/topic").call();
您还需要注意:
-
如果分支名称已经存在,
setForce(true)
会将目标分支名称重置为起点。没有-f,--force
git 分支拒绝更改现有分支。