此问题已在此处有答案:
Merge git repository in subdirectory(8个回答)
昨天关门了。
我正在尝试从多个现有的存储库创建一个monorepo。我已经创建了一个项目,它有自己的.git,README.md,...和一个/packages文件夹,我想将合并的存储库作为子文件夹放置在其中。但是在我这样做之后
cd packages
git remote add existing-1 git@...
git fetch --all
git merge existing-1/master --allow-unrelated-histories
我遇到了合并冲突(README.md等),因为git希望将repo合并到root目录,而不是/packages目录。我该怎么办?
2条答案
按热度按时间mf98qq941#
最快的方法是将旧仓库中的所有文件复制到新仓库中,并进行一次非常大的提交。
如果你坚持要保留历史,我可以想到两种方法:
1.启动一个干净的repo并像你已经做的那样获取旧的repo。然后将文件
git mv
到你想要的新子文件夹结构中。清洗并重复每个你想要添加到新repo的项目。最后为你的monorepo添加scafolding。1.在旧的仓库中,
git mv
文件到你想要的目录结构。然后合并到新的仓库中,类似于你已经在做的事情。exdqitrt2#
对不起,我不能关闭这个问题,因为它已经被回答了。我发现git-subtree是最好的解决方案。我只需要做
其中git@...是远程URL。参见https://stackoverflow.com/a/32684526/4125622