JGit - 推送分支并添加上游(-u选项)

时间:2015-01-07 16:25:46

标签: java jgit

JGit中,我搜索推送分支并添加上游引用(跟踪)的方法。

push command中的选项-u--set-upstream

我没有在班级PushCommand中看到允许这样做的方法。

拜托,你能告诉我怎么做吗?

PushCommand pushCommand = git.push()
                    .setRemote(remoteAlias)
                    .setRefSpecs(spec);

1 个答案:

答案 0 :(得分:8)

JGit PushCommand尚未提供此功能,但您可以像--set-upstream那样修改存储库配置。

如果您将远程别名传递给setRemote()(就像问题建议中的代码段一样),您需要设置上游,如下所示:

StoredConfig config = git.getRepository().getConfig();
config.setString( CONFIG_BRANCH_SECTION, "local-branch", "remote", "remote-alias-name" );
config.setString( CONFIG_BRANCH_SECTION, "local-branch", "merge", "refs/heads/name-of-branch-on-remote" );
config.save();

这将导致此配置部分

[branch "local-branch"] 
remote = remote-alias-name 
merge = refs/heads/name-of-branch-on-remote

如果尚未配置遥控器(即没有部分[remote "remote-alias-name"],您还必须创建这样的部分。例如,像这样:

config.setString( CONFIG_REMOTE_SECTION, "remote-alias-name", "url", "url-of-remote" );
config.setString( CONFIG_REMOTE_SECTION, "remote-alias-name", "fetch", "ref-spec" );

常量在类ConfigConstants中定义。