git - 使用 JGit 使现有的 Git 分支跟踪远程分支?

标签 git github jgit

我正在使用 JGit 创建一个新的 git 存储库,文件夹中已经存在的所有内容,我都保存为新分支。

我正在使用

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

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

问题是当我推送备份分支时,它被推送但我无法建立远程跟踪。

来自终端:如果我使用 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 从终端指定推送备份分支后的任何时间。

如何使用JGit实现。

以下是我使用的代码

创建备份分支

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();

请建议我可以为现有分支指定远程跟踪的方式。

最佳答案

您可以使用CreateBranchCommand as 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

关于git - 使用 JGit 使现有的 Git 分支跟踪远程分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101533/

相关文章:

git - checkout 并重置后恢复未提交的工作

java - JGit:远程存储库的状态

gitHub 桌面查看执行的命令

egit - 如何为大型存储库调整 EGit?

java - 使用 Java 检查 Git 存储库是私有(private)的还是公共(public)的(例如 GitHub)

javascript - 帮助将条目插入 Azure DB

git - 在两个提交之间插入一个被忽略的提交

git subtree merge on the root of repository (with.git-flow)

java - 如何使用 JGit 执行 "git filter-branch --subdirectory <folderName>"

python - 错误: cannot run ssh: No such file or directory