我有两个git存储库,它们之间有几个共享子目录,如下所示。
Repo 1 Repo 2
|-Folder A |-Folder A
| |-docA.c | |-docX.c
|-Folder B |-Folder B
| |-docB.c | |-docY.c
|-Folder C |-Folder D
| |-docC.c | |-docZ.c现在,我正在尝试创建第三个存储库,它以类似于GNU的方式将repo 2连接到repo 1中。但是,我希望将导入的表单repo 2确认为属于该存储库的文档,以模仿git子模块的行为。据我所知,子模块只允许我从另一个存储库中将整个子文件夹添加到我的项目中。仅供参考,第三个存储库应该具有以下结构:
Repo 3
|-Folder A
| |-docA.c
| |-docX.c
|-Folder B
| |-docB.c
| |-docY.c
|-Folder C
| |-docC.c
|-Folder D
| |-docZ.c这是否可能实现呢?还是我最好保持两个存储库分开,单独跟踪它们的更改,并在需要时使用GNU?
发布于 2020-05-15 19:53:27
我不知道你为什么要这么做,但从技术上讲,你可以这样做:
git clone repo1 repo3
cd repo3
git remote rename origin repo1 # less confusing this way
git remote add origin <repo3 url>
git remote add repo2 /path/to/repo2 # or URL
git fetch repo2
git merge --allow-unrelated-histories repo2/master # or whatever branch you use然后定期:
git fetch repo1
git fetch repo2
git merge repo1/master
git merge repo2/master只要repo1中的文件和repo2中的文件之间没有冲突,这应该可以工作.然而,提交图(git log --graph)很容易变得混乱。
另一种选择是重基而不是合并:
git clone repo1 repo3
cd repo3
git remote rename origin repo1 # less confusing this way
git remote add origin <repo3 url>
git remote add repo2 /path/to/repo2 # or URL
git pull --rebase repo2 master # or whatever branch you use然后定期:
git pull --rebase repo1 master
git pull --rebase repo2 masterhttps://stackoverflow.com/questions/61823823
复制相似问题