git从一个fork合并到另一个fork

时间:2016-06-13 21:08:35

标签: git git-merge

我分叉了一个原始git存储库(repo1),它有很多模块(让我们说A,B,C)并对其中一个模块进行一些更改(让我们假设在A中) fork(myname / repo1)。到那时,我计划将我的更改从fork转移到原始repo(repo1),原始repo已被重构,每个模块现在都是git repo(repoA,repoB,repoC)。我现在分叉了repoA,并希望首先从前一个fork(myname / repo1 - moduleA)合并到这个(myname / repoA)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题。由于提交ID和文件位置已更改,因此无法合并。可能最简单的方法是将更改重新绑定到新存储库,然后合并。由于文件名已移动,您还必须应用相同的更改。

第一步是将新存储库作为远程引入。 git remote add repoA url-to-repo-agit fetch repoA

然后,您需要应用与为分支创建repoA所做的相同的文件名更改。可以使用--subdirectory-filter使用git filter-branch来完成此操作。检查完分支后,运行git filter-branch --subdirectory-filter moduleA/ master..HEAD之类的内容。这将使目录moduleA/的内容成为新的根目录。 master..HEAD会将此更改限制为您的分支。为了安全起见,您可以在运行过滤器之前标记当前分支,以便在过滤器出错时更容易恢复。

您现在应该能够正常合并。