英文:
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语言的经验与见解,让所有开发者获益!
评论