将没有共同的提交合并到主分支?

Merge no common commits into master branch?

我有一个 Git 回购,其中有很多提交和单独的代码,比如

/Proj1

我还有另一个 Git 存储库,其中有 1 个提交不是普通提交,

/Proj2

如何合并这两个 repos 并让历史记录与父提交一起正确显示?基本上,两个回购协议之间没有任何共享提交,但我想要一个包含两组代码的回购协议。我希望它看起来像:

proj2 commit
proj2 commit
proj1 commit (root)

我知道 rebase 是一个选项,但不确定使用 --onto 是否替换了根提交(如果我从远程仓库和 rebase --onto --root master 中获取数据,它似乎会这样做)。

我试过使用 git 子树,最初看起来它们可以工作,但是当我使用 git-tfs 来推送我的提交时,我收到一个错误提示

warning: the parent ... does not belong to a TFS tracked branch (not checked in TFS) and will be ignored

并且提交实际上并没有向上推(也可能是因为它是一个子树)。

编辑:我只想以 1 个回购 (Proj1) 结束,但 Proj2 的提交是在 Proj1 在主分支上的提交之后进行的。

Cupcake 帮助解决了这个问题。这是执行此操作的一种方法:

在 ProjA 中,将 Proj B 添加为远程:

git remote add projb C:\projB

执行 git 提取以获取 projB 主分支的所有提交:

git fetch projb

从 projB 的根开始变基到 projA 主分支的顶端(末尾):

git rebase --onto master --root projb/master

就是这样!执行此操作的风险可能较低,但目前肯定可以解决此问题。