将子模块的 gitdir 迁移到 'in-tree'
Migrating a submodule's gitdir to 'in-tree'
我的仓库中有一个子模块,其中包含一个只有一行的 .git 文件
gitdir: ../.git/modules/mysubmodule
不过,gitlab的CI runner好像对这个gitdir
的说法有问题,所以我想把../.git/modules/mysubmodule
移到./mysubmodule/.git
.
我用 mv
做了这个
我没有使用 git mv
,因为这个命令抱怨
fatal: cannot move directory over file, source=.git/modules/mysubmodule, destination=mysubmodule/.git
而且我还从 mysubmodule/.git/config
文件中删除了 worktree
行。
但是,当我想提交更改(无论是对超级项目还是子模块)时,git 没有列出要提交的更改。
这就是为什么我想知道如何将 git 目录移动到另一条路径?
在 ./mysubmodule/.git
中看到 .git
git 仍然认为 mysubmodule
是一个子模块,并且没有将其显示为 superrepo 的一部分。
如果您想删除子模块并直接重新添加它们,您应该 remove submodules 并在没有 .git
子目录的情况下添加它们。
或从 git submodule
切换到 git subtree
。参见 https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt and https://medium.com/@v/git-subtrees-a-tutorial-6ff568381844
我的仓库中有一个子模块,其中包含一个只有一行的 .git 文件
gitdir: ../.git/modules/mysubmodule
不过,gitlab的CI runner好像对这个gitdir
的说法有问题,所以我想把../.git/modules/mysubmodule
移到./mysubmodule/.git
.
我用 mv
做了这个
我没有使用 git mv
,因为这个命令抱怨
fatal: cannot move directory over file, source=.git/modules/mysubmodule, destination=mysubmodule/.git
而且我还从 mysubmodule/.git/config
文件中删除了 worktree
行。
但是,当我想提交更改(无论是对超级项目还是子模块)时,git 没有列出要提交的更改。
这就是为什么我想知道如何将 git 目录移动到另一条路径?
在 ./mysubmodule/.git
中看到 .git
git 仍然认为 mysubmodule
是一个子模块,并且没有将其显示为 superrepo 的一部分。
如果您想删除子模块并直接重新添加它们,您应该 remove submodules 并在没有 .git
子目录的情况下添加它们。
或从 git submodule
切换到 git subtree
。参见 https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt and https://medium.com/@v/git-subtrees-a-tutorial-6ff568381844