将git repo转换为子模块并将.git目录移动到superepo

Hen*_*rik 5 git version-control git-submodules

我在这个回购中有一个超级回购和一些子模块:

MY_SUPER_REPO

  • my_sub_1
  • my_sub_2

现在我正在创建一个新目录,该目录稍后将成为子模块:

  • my_dir_3

当我准备好成为子回购时,我做:

git init
git remote add origin URL
Run Code Online (Sandbox Code Playgroud)

然后我去超级回购和

git submodule add URL
Run Code Online (Sandbox Code Playgroud)

现在.gitmodules相应地更新但.git目录保留在该目录中,my_dir_3当我在该子模块中工作时,钩子似乎从这里取出,而不是从super repo .git/modules/xyz目录中取出.我运行一个脚本来复制.git/modules/xyz我的超级仓库中的钩子,但由于.git添加的子模块中存在本地文件夹,因此不使用超级仓库中的钩子.

是否有任何"魔术"命令来解决这个问题,还是需要.git手动复制?

Von*_*onC 3

您可以稍微改变您的流程并且:

  • 添加远程 URL 后(git remote add origin URL ) 后,您将首先将该新存储库推送到其远程目的地
  • 然后你删除该文件夹
  • 最后,您以通常的方式添加子模块(git submodule add URL

这样,您就可以确定子模块已正确初始化,其 .git 位于正确的位置。