英文:
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,而 repoB 是 repoA 的一个分支版本?
英文:
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/develop 和 refs/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();
专注分享java语言的经验与见解,让所有开发者获益!

评论