2015-10-13 5 views
3

Я использую JGit для создания нового репозитория git, и все, что уже присутствует в папке, я сохраняю как новую ветку.Сделать существующий ветвь ветки Git удаленной веткой с JGit?

Я использую

Git.init().setDirectory(workingDir).call(); 

(по-умолчанию мастер филиал создан после того, как выше заявление, поэтому я переименовать его в «backupBranch»). потому что мастер я клонировал от удаленного мастера позже.

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

из терминала: если я использую git branch -vv результат является

master  5f1994c [origin/master] commitmsg 
backupbranch 7a4d671 taking backup of file already in MyTests Folder.. 

По ссылке Make an existing Git branch track a remote branch? я могу использовать git branch -u upstream/foo от терминала, чтобы указать любое время после нажатия backupbranch.

Как достичь этого с помощью JGit.

Ниже код, я использую

создать backupbranch

git.branchRename().setNewName(backUpName).call(); 
git.add().addFilepattern(".").call(); 
RevCommit commit = git.commit().setMessage("taking backup of file already in MyTests Folder..").call(); 

затем вставьте его в первый раз.

Iterable<PushResult> pushResult = git.push().call(); 

Пожалуйста, укажите способ, которым я могу указать дистанционное отслеживание существующей ветки.

ответ

3

Вы можете использовать CreateBranchCommandas decribed in this post

CreateBranchCommand create = git.branchCreate(); 
create.setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM); 
create.setName("develop"); 
create.setStartPoint("origin/develop"); 
create.setForce(true) 
create.call(); 

Обратите внимание на setForce(true) вызов. Поскольку ваш локальный филиал уже существует, вам необходимо переопределить его. Затем он укажет на удаленный филиал отслеживания (origin/develop), который он сделал раньше.

В качестве альтернативы вы можете напрямую изменить конфигурационный файл. Например:

StoredConfig config = git.getRepository().getConfig(); 
String branchName = "develop" 
String remoteName = "origin"; 
config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, branchName, ConfigConstants.CONFIG_KEY_REMOTE, remoteName); 
config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, branchName, ConfigConstants.CONFIG_KEY_MERGE, Constants.R_HEADS + branchName); 
config.save(); 

Это приведет в разделе конфигурации, например так:

[branch "develop"] 
remote = origin 
merge = refs/heads/develop 
Смежные вопросы