将一个git存储库的历史附加到另一个git存储库
如何将一个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 我想要
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我认为编辑东西会重置它们的投票状态?无论如何,是的-没有共同的提交。这两个分支是否有共同的祖先,如果是的话,它在图表中的什么位置?