2015-10-13 167 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