如何转换一个 repo 为另一个 repo 的 submodule?

2019-09-26 12:32:56 +08:00
 LudwigWS
repoA
repoB

repoA, repoB 都是 Git 仓库。

想转换为一下结构

repoA
  repoB
mv repoB repoA
git submodule add ./repoB/ repoB
# 'repoB' already exists in the index
git submodule add -- https://github.com/[repoB] repoB
# 'repoB' already exists in the index

求大神指点啊。

3328 次点击
所在节点    git
7 条回复
yzlnew
2019-09-26 12:56:02 +08:00
compilerhero
2019-09-26 12:58:21 +08:00
你不应该把 repoB 移动到 repoA 中, 而是应该直接在 repoB 里需要 repoA 的地方添加 submodule. 一个 submodule 实际上是对另一个 repository 的引用.
LudwigWS
2019-09-26 13:07:16 +08:00
@compilerhero
@yzlnew
因为本地我已经有这两个仓库了。如果删了 repoB,再执行 `git submodule add` 我想是可以的,但是这会从远程进行 `clone`。

我想是否有方法在本地就进行 repo 到 submodule 的结构转换。
compilerhero
2019-09-26 13:22:11 +08:00
@LudwigWS 可以的. 添加 submodule 时和克隆时引用源 repository 的方式是一样的. 如果你有一个本地的 repoB 副本, 只要使用指向它的路径就可以, 比如 `git submodule add D:\work\repoB\.git repoB` (我觉得这么做并不好). 你添加的 submodules 都会出现在 .gitmodules 文件里.
LudwigWS
2019-09-26 13:54:51 +08:00
@compilerhero 但是我不想指向本地的地址。😅。太难了,我还是删了重新克隆观察一下。
IMCA1024
2019-09-26 16:14:26 +08:00
subtree?
jtnwm
2019-09-27 05:55:10 +08:00
在 add 的时候添加 --reference 参数指向本地 repoB,会使用本地 repoB 中已有的对象。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604380

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX