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

将一个git存储库的历史附加到另一个git存储库,git,git-merge,Git,Git Merge,如何将一个git存储库的历史附加到另一个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存储库的历史附加到另一个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

@Downvoter:我整理了一下我的答案,感谢upvote(和downvote?)。我认为只有在两个存储库之间有共同的提交时,你才能重新设置基础?@TimBiegeleisen我认为编辑东西会重置它们的投票状态?无论如何,是的-没有共同的提交。这两个分支是否有共同的祖先,如果是的话,它在图表中的什么位置?