RefNotFoundException при создании ветки в JGIT - PullRequest
0 голосов
/ 26 апреля 2018

У меня проблема с тем, что я не могу создать локальную ветвь.

Error: org.eclipse.jgit.api.errors.RefNotFoundException: Ref origin/sideMerge cannot be resolved

Я проверил следующие темы и некоторые другие в Stackoverflow, но кажется, что происходит что-то подозрительное или что-то, чего я пока не понимаю.

Может ли кто-нибудь указать мне направление, которое я не понимаю в отношении Реф? Насколько я знаю, местные ссылки начинаются с 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);
    }

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Согласно руководству по Git, вы можете создать ветку, используя следующий синтаксис. Он создает новый заголовок ветви с именем <branchname>, который указывает на текущий заголовок, или <start-point>, если задан:

git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]

Таким образом, вы можете создать локальную ветку "topic" , следуя аналогичному синтаксису в JGit (см. Следующий кодовый блок). В этом случае вы не настроили начальную точку явно. 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 branch отказывается изменять существующую ветку.
0 голосов
/ 26 апреля 2018

Szilágyi István, я создаю ветку следующим образом:

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()); }

...