将一个 git 存储库的历史附加到另一个

Appending history of one git repository to another

如何将一个 git 存储库的历史记录添加到另一个存储库? 我有两个类似的项目,我想合并它们的历史。 他们有些不同,但本质上他们所做的工作现在是一样的,这就是我想这样做的原因。

所以基本上我希望它从这里获取:

repo1/master 1a----1b---1c--1d
repo2/master 2a--2b--2c-----2d

对此:

repo1/master 1a----1b---1c--1d-2a--2b--2c-----2d
repo2/master 2a--2b--2c-----2d

我在考虑直接合并,或者清除一个文件,这样它就可以合并并将另一个合并到我清理过的存储库之上?

执行此操作的明智方法是什么?

干杯

你的问题非常适合做 git rebase,下面是我的解决方法:

git checkout repo2/master                   # step 1
git checkout -b repo2temp                   # step 2
git rebase repo1/master                     # step 3
git push origin repo2temp:repo1/master      # step 4

首先,在第 1 步和第 2 步中,我基于 repo2/master 分支创建了一个名为 repo2temp 的新临时分支。接下来,我在 repo1/master 上重新设置这个看起来与 repo2/master 相同的临时分支。在这一步之后 # 图表看起来像这样:

repo1/master 1a----1b---1c--1d
repo2temp    1a----1b---1c--1d--2a--2b--2c-----2d

在第 4 步之后,一旦您将变基的 repo2temp 分支推送到远程 repo1/master 分支,那么分支将如下所示:

repo1/master 1a----1b---1c--1d--2a--2b--2c-----2d
repo2temp    1a----1b---1c--1d--2a--2b--2c-----2d
repo2/master 2a--2b--2c-----2d