java - 在 JGIT 中创建分支时出现 RefNotFoundException
问题描述
我有一个问题,我无法创建本地分支。
Error: org.eclipse.jgit.api.errors.RefNotFoundException: Ref origin/sideMerge cannot be resolved
我已经检查了 Stackoverflow 中的以下主题和其他一些主题,但似乎发生了一些可疑的事情或我还不明白的事情。
有人可以指出我对 Ref 不了解的方向吗?据我所知,本地 refs 从 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);
}
解决方案
根据 Git 手册,您可以使用以下语法创建分支。它创建一个名为<branchname>
指向当前 HEAD 的新分支头,或者<start-point>
如果给定:
git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
因此,您可以按照 JGit 中的类似语法创建本地分支“主题”(参见下一个代码块)。在这种情况下,您没有明确配置起点。JGit 将使用 HEAD 作为起点。所以一切正常:
git.branchCreate().setName("topic").call();
但是,如果您使用 start-point 创建本地分支origin/topic
,JGit 将尝试在Git References中找到此引用。在这种情况下,origin
是远程topic
的名称,是分支的名称。如果未找到,则会引发异常:
git.branchCreate().setName("topic").setStartPoint("origin/topic").call();
您还需要注意:
setForce(true)
如果分支名称已经存在,则将目标分支名称重置为起点。没有-f,--force
git branch 拒绝更改现有分支。
推荐阅读
- c# - 将 html 文件从本地磁盘加载到 Web 浏览器控件的异步调用仍然挂起 UI
- php - PHP | ini_get 不反映赋予 ini_set 的值
- excel - 如何修复此代码以使其不会删除提到的工作表?
- c++ - 在条件和阻塞调用之间收到 C/C++ SIGINT
- c# - 重构类似的方法,但具有不同的返回类型
- angular - 使用 asp.net core 和 angular 生成下载链接
- node.js - Node.js Http 结束后写入
- python - Snakemake 检查点(以非零退出代码退出)
- mongodb - 用于商业用途的 MongoDB
- javascript - 输入值时出现问题即使使用多个事件代码并且仅适用于错误