Git将远程文件合并到子文件夹中[重复]

jtoj6r0c  于 2023-04-19  发布在  Git
关注(0)|答案(2)|浏览(140)

此问题已在此处有答案

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目录。我该怎么办?

mf98qq94

mf98qq941#

最快的方法是将旧仓库中的所有文件复制到新仓库中,并进行一次非常大的提交。
如果你坚持要保留历史,我可以想到两种方法:
1.启动一个干净的repo并像你已经做的那样获取旧的repo。然后将文件git mv到你想要的新子文件夹结构中。清洗并重复每个你想要添加到新repo的项目。最后为你的monorepo添加scafolding。
1.在旧的仓库中,git mv文件到你想要的目录结构。然后合并到新的仓库中,类似于你已经在做的事情。

exdqitrt

exdqitrt2#

对不起,我不能关闭这个问题,因为它已经被回答了。我发现git-subtree是最好的解决方案。我只需要做

git subtree add -P packages/existing-1 git@... master

其中git@...是远程URL。参见https://stackoverflow.com/a/32684526/4125622

相关问题