2015-10-13 152 views
3

我正在使用JGit创建一个新的git存储库,并且文件夹中已存在的所有内容都保存为新分支。让现有的Git分支跟踪JGit的远程分支?

我使用

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

(由默认的主分支上面的语句之后创建的,所以我将其重命名为“backupBranch”)。因为主人我稍后从远程主人克隆。

问题是当我推动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