问题描述
我有两个存储库 Repo1 和 Repo2。我在 Repo1 中有几个新分支应该移到 Repo2。我如何cherry-pick
那些分支(连同其中的所有提交)并将其移动到第二个存储库?
到目前为止我已经完成了:
git remote add repo2 https://...repo1.git
git fetch other
它列出了在 Repo1 中创建的所有分支。但我不确定如何挑选这些分支并推送 Repo2。
附言。我不能做 git remote
因为它会导致很多冲突,因为两个存储库中的数据存在一些差异。
解决方法
首先,您获取的不是应该是 git fetch other
而是。
cd /path/to/repo2
git remote add repo1 https://...repo1.git
git fetch repo1
换句话说,您将在目标存储库 (repo2) 的本地克隆中工作,而不是在 repo1 中工作。
其次,它应该列出所有分支,带有git branch -avv
。
但是,由于 repo1 和 2 没有共同的历史记录,所以由您决定 repo1 分支的开始(或者它会考虑分支提交一直回到第一个 repo1 提交:没有共同的分支从中所述分支已在 repo1 中启动)
如果您认为 repo1 分支可以应用于现有的 repo2 历史记录,您可以:
- 从
repo1/aBranchToMove
创建一个新的分支 -
rebase --onto
repo1 分支(on)到现有的 repo2 分支
即:
cd /path/to/repo2
git switch -c newBranch repo1/branch
git rebase --onto main <first-Commit>~ newBranch
这会将提交从 <first-Commit>
(您需要在 repo1 中查找)重新定位到 newBranch(引用 repo1 分支 HEAD,您想要挑选)到现有的 repo2 分支(此处为 ' main
' 例如)