首页 > 解决方案 > 我怎样才能让 GIT 中的两个不相关的分支有一个共同的根?

问题描述

我最近将我的 SVN 存储库迁移到了 GIT。SVN 存储库有 2 个具有相同提交历史的分支。现在在 GIT 中,我想让这两个带有平行图的分支有一个共同的根。我该怎么做?将一个分支重定位于另一个分支是行不通的。

$ git checkout BRANCH_1
$ git rebase BRANCH_2

这给了我一个无关历史的错误。

$ git rebase BRANCH_2 --allow-unrelated-histories

没有在他们应该的提交中加入两个分支。

标签: gitgit-branchgit-mergegit-rebasegit-merge-conflict

解决方案


以下为我工作..

假设,这两个分支是 BRANCH_1 BRANCH_2

$ git checkout BRANCH_1

我从需要公共根目录的地方签出了提交

$ git checkout e405d8d172dfa017a3fea17ce111dff280412a3c

然后我从当前提交创建了一个新分支并检查了它

$ git branch NEW_BRANCH
$ git checkout branches/release/0.0.1

然后我从 BRANCH_2 中挑选了我想要的提交

$ git cherry-pick 47c661bfb8cbf79017bff53fedbbd7db13cf68bf
$ git push --set-upstream origin NEW_BRANCH
$ git branch -D BRANCH_2

注意:我可以删除 BRANCH_2 因为两个分支的历史记录相同。IE

$ git diff 47c661bfb8cbf79017bff53fedbbd7db13cf68bf e405d8d172dfa017a3fea17ce111dff280412a3c

返回空


推荐阅读