使用JGit将仓库A合并到派生版本的仓库B中,其中A领先于B。

huangapple 未分类评论50阅读模式
英文:

JGit merge Repo A into forked version repo B, where A is ahead of B

问题

final Git repoAgit = Git.cloneRepository()
            .setURI(repoAgitUrl)
            .setDirectory(new File(repoApath))
            .setBranchesToClone(Arrays.asList("refs/heads/develop"))
            .setBranch("refs/heads/develop")
            .setTransportConfigCallback(TRANSPORT_CONFIG_CALLBACK)
            .call();
final Git repoBgit = Git.cloneRepository()
            .setURI(repoBgitUrl)
            .setDirectory(new File(repoBpath))
            .setBranchesToClone(Arrays.asList("refs/heads/develop"))
            .setBranch("refs/heads/develop")
            .setTransportConfigCallback(TRANSPORT_CONFIG_CALLBACK)
            .call();

我应该如何将 repoA 合并到 repoB 中?其中假设 repoA 应该领先于 repoB,而 repoBrepoA 的一个分支版本?

英文:
final Git repoAgit = Git.cloneRepository()
			.setURI(repoAgitUrl)
			.setDirectory(new File(repoApath))
			.setBranchesToClone(Arrays.asList("refs/heads/develop"))
			.setBranch("refs/heads/develop")
			.setTransportConfigCallback(TRANSPORT_CONFIG_CALLBACK)
			.call();
final Git repoBgit = Git.cloneRepository()
			.setURI(repoBgitUrl)
			.setDirectory(new File(repoBpath))
			.setBranchesToClone(Arrays.asList("refs/heads/develop"))
			.setBranch("refs/heads/develop")
			.setTransportConfigCallback(TRANSPORT_CONFIG_CALLBACK)
			.call();

How do I merge repoA into repoB, where repoA is supposed to be ahead of repoB, and repoB is a forked version of repoA?

答案1

得分: 0

首先,在 repoB 中创建一个引用 repoA 的远程仓库。

然后从这个远程仓库获取数据,以便有两个本地分支:refs/heads/developrefs/remotes/repoa/develop

如果还没有完成,切换到 repoB 中的目标分支 refs/heads/develop

调用 MergeCommand 将远程跟踪分支合并到 HEAD。

例如:

repoB.remoteAdd().setName("repoa").setUri(new URIish("/path/to/repoA")).call();
repoB.fetch().setRemote("repoa").call();
MergeResult mergeResult = repoB.merge()
    .include(repoB.getRepository().resolve("refs/remotes/repoa/develop"))
    .call();
英文:

First, in repoB, create a remote that references repoA.

Then fetch from this remote so that there are two local branches: refs/heads/develop and refs/remotes/repoa/develop.

If not yet done, checkout the target branch refs/heads/develop in repoB.

Call the MergeCommand to merge the remote tracking branch into HEAD.

For example:

repoB.remoteAdd().setName("repoa").setUri(new URIish("/path/to/repoA")).call();
repoB.fetch().setRemote("repoa").call();
MergeResult mergeResult = repoB.merge()
    .include(repoB.getRepository().resolve("refs/remotes/repoa/develop"))
    .call();

huangapple
  • 本文由 发表于 2020年4月7日 00:31:34
  • 转载请务必保留本文链接:https://java.coder-hub.com/61064516.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定