从一个 Repo 到另一个 Repo 的 Cherry-pick 分支

问题描述

我有两个存储库 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' 例如)