在Git中移动子模块

15 浏览
0 Comments

在Git中移动子模块

有没有办法在不先移除再重新添加的情况下,将子模块从超级项目中移动?

0
0 Comments

问题的出现原因:移动子模块时,需要手动编辑.gitmodules文件并更改子模块的路径,然后将其放入索引中。还需要创建新位置的父目录,并将所有内容从旧目录移动到新目录。最后,需要删除旧目录并提交更改。这些步骤需要手动执行,没有Git命令可以自动完成。

解决方法:

1. 编辑.gitmodules文件并相应地更改子模块的路径,使用git add .gitmodules将其放入索引中。

2. 如果需要,创建新位置的父目录:mkdir -p new/parent

3. 将所有内容从旧目录移动到新目录:mv -vi old/parent/submodule new/parent/submodule

4. 使用git rm --cached old/parent/submodule删除旧目录。

5. 最后,提交更改。

6. 如果新的子模块目录没有被追踪,需要使用git add命令将其加入。

希望有一个Git命令可以自动完成这些步骤。

0
0 Comments

在Git中移动子模块的问题出现的原因是目前Git还没有内置的命令来处理移动子模块的操作,并且也没有提供相应的更新.gitmodules文件的方法。目前有一个正在开发中的补丁,旨在实现一个名为"git mv"的命令来处理移动子模块的操作,并且可以更新.gitmodules文件。然而,该补丁还未完全完成。

目前,可以通过切换已存在的子模块的远程仓库来实现简单的移动子模块操作,但这并不是你想要的解决方法。

0