Я хотел бы создать ветку в существующем репозитории, а затем отслеживать эту ветку. Создание ветки выполнено успешно, вновь созданная ветка по-прежнему отслеживает master. Я пробовал несколько разных решений, но результат тот же - ветвь создается, но отслеживает master.
Сначала я клонирую репозиторий:
Git.cloneRepository()./*set creds*/.setURI(..).setDirectory(...).call
Все идет нормально.
Затем соберите репозиторий из файла git, созданного клоном.
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repo = builder.setGitDir(gitFile).readEnvironment().findGitDir()
.build();
На данный момент я пробовал как проверить ветку с createBranch
, установленным в true, так и сделать это в два этапа - создать, а затем проверить. Вот двухэтапный метод:
git.branchCreate()
.setForce(true)
.setName(branchName)
.setStartPoint("origin/master")
.call();
git.checkout()
.setName(branchName)
.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK)
.setStartPoint("origin/"+branchName)
.call();
Другие вещи, которые я пробовал:
- установка восходящего режима SeetupUpstreamMode.SET_UPSTREAM
- установка начальной точки на имя ветки на шаге создания
- не делать отдельную кассу, а ставить
creatBranch(true)
при кассе - нажатие между созданием и оформлением заказа
Результатом всегда является файл .git/config, который выглядит так:
[remote "origin"]
url = ssh://..
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[branch "newbranch1"]
remote = origin
merge = refs/heads/master << TRACKING master, not newbranch1
В ветках, которые я создаю с помощью обычного git (не jgit), файл конфигурации выглядит так:
[remote "origin"]
url = ssh:...
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[branch "newbranch2"]
remote = origin
merge = refs/heads/newbranch2 << WANT THIS
Любые мысли о том, как я могу заставить свою новую ветку отслеживать ветку, а не мастер?
Использование jgit-4.6.0.201612231935
Git.cloneRepository()
возвращает экземплярGit
, из которого вы можете получить репозиторий черезgetRepository()
, нет необходимости использоватьFileRepositoryBuilder
. Кроме того, не забудьте закрыть возвращенный экземпляр Git, когда закончите. - person Rüdiger Herrmann   schedule 25.05.2017