我分叉了一个原始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)。我怎么能这样做?
答案 0 :(得分:1)
有很多方法可以解决这个问题。由于提交ID和文件位置已更改,因此无法合并。可能最简单的方法是将更改重新绑定到新存储库,然后合并。由于文件名已移动,您还必须应用相同的更改。
第一步是将新存储库作为远程引入。 git remote add repoA url-to-repo-a
和git fetch repoA
。
然后,您需要应用与为分支创建repoA所做的相同的文件名更改。可以使用--subdirectory-filter
使用git filter-branch
来完成此操作。检查完分支后,运行git filter-branch --subdirectory-filter moduleA/ master..HEAD
之类的内容。这将使目录moduleA/
的内容成为新的根目录。 master..HEAD
会将此更改限制为您的分支。为了安全起见,您可以在运行过滤器之前标记当前分支,以便在过滤器出错时更容易恢复。
您现在应该能够正常合并。