将一个git存储库的历史记录追加到另一个

时间:2016-02-03 10:22:04

标签: git git-merge

如何将一个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

我想要直接合并,或者从一个文件中清除文件,这样它可以合并并将另一个合并到我清理过的存储库之上?

这是一种明智的方法吗?

干杯

1 个答案:

答案 0 :(得分:1)

你的问题非常适合做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中,我基于repo2temp分支创建了一个名为repo2/master的新临时分支。接下来,我在repo2/master上重新定义此临时分支,该分支看起来与repo1/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