当前位置: 首页 > 知识库问答 >
问题:

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

禄星腾
2023-03-14

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

我正在用

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

(默认情况下,master分支是在上面的语句之后创建的,所以我将其重命名为Backup分支)。

问题是当我推后支时,它被推了,但我无法建立远程跟踪。

从终端:如果我使用git分支-vv结果是

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

根据链接,让现有的Git分支跟踪远程分支?我可以使用终端中的git branch-u upstream/foo来指定推送backupbranch后的任何时间。

如何使用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();

请建议我如何为现有分支指定远程跟踪。

共有1个答案

桑睿识
2023-03-14

您可以使用本文中描述的CreateBranchCommand

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

注意setForce(true)调用。因为您的本地分支已经存在,所以您需要覆盖它。之后,它将指向远程跟踪分支(origin/developer)——不管怎么说,它以前是这样做的。

也可以直接修改配置文件。例如:

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
 类似资料:
  • 我用JGit签出了一个远程跟踪分支。 文件已签出,但头部未指向分支。下面是git状态的输出, 同样的操作也可以在git命令行中执行,非常简单,而且非常有效, 如何做到这一点?

  • 远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支。 远程跟踪分支是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移动。 远程跟踪分支像

  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 我使用github的时间相对较短,并且一直使用客户端执行提交和拉取。我决定从昨天的git bash开始尝试它,并且我成功地创建了一个新的repo和提交的文件。 今天,我从另一台计算机上对存储库进行了更改,我提交了更改,现在我回到家里,执行了来更新我的本地版本,我得到了以下信息: 这次回购的唯一贡献者是我,没有分支(只有一个主人)。我在windows上执行了git Bash中的pull: 我做错了什

  • 本文向大家介绍Git 创建分支提交远程分支详解,包括了Git 创建分支提交远程分支详解的使用技巧和注意事项,需要的朋友参考一下 Git 创建分支提交远程分支详解 1.创建本地分支 git branch 分支名,例如:git branch 2.0.1.20120806 注:2.0.1.20120806是分支名称,可以随便定义。 2.切换本地分支 git checkout 分支名,例如从master切

  • 远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支 {#2}。 远程跟踪分支 {#2}是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移