i在州A处下载了项目的源代码(请参见下图)。这只是正常的下载,导致图像中c表示的本地源代码树。我没有使用
git clone
,因为当时我不熟悉git
。然后,我在本地项目源代码中进行了一些编码,并且在熟悉git
之后,我决定将此源代码树作为git存储库,这是图像中的d。做了一些更改和提交,我到达了F。我们将本地开发发生“分支#2”的分支机构。然后,我分叉了主要的开发分支,并将分支从叉子拿到一个名为“分支#1”的本地分支。目前,主要的开发分支在州B中。由于分支#1和分支#2没有共同的祖先,如果我将分支#2合并到分支#1中,我将获得此错误fatal: refusing to merge unrelated histories
。可以通过使用--allow-unrelated-histories
作为git merge
的选项来解决此限制,但是根据此答案,这似乎是在此答案上皱眉了“拒绝合并无关的历史”失败,同时恢复了存储库。根据此答案,更好的方法是建立两个分支之间的分支关系。就我而言,应该在d和a.之间
建议的重复root root commit父母指向另一个提交(连接两个独立的git存储库)
并不完全处理相同的情况。在这个问题中,OP需要将分支(新分支)的根提交拼写为另一个分支(旧分支)的最后一个提交。就我而言,我想将分支的根提交与另一个不是最后一个提交的分支中的提交联系起来。公认的答案还假设旧分支的最后几个提交与新分支的前几个提交相同。建议答案的最终结果是线性历史记录。虽然我想实现的目标,但两个独立分支的历史都存在,好像它们共享一个共同的祖先。A
C
:
:
git checkout -b my-stuff A
git cherry-pick C..F
现在您的东西连接到A
。