如何解决如何仅更改git子模块的名称,而使其路径保持不变?
假设.gitmodules
文件包含以下几行
[submodule "sub/x"]
path = sub/x
...这是格式命令的结果
git submodule add $url sub/x
事实成立之后(并在超级项目和子模块中都添加了多个提交),我意识到我应该运行它:
git submodule add --name x $url sub/x
...因此,.gitmodules
文件中与前面引用的两行相对应的两行应该是
[submodule "x"]
path = sub/x
我想修复超级项目,以使子模块的 name 为x
而不是sub/x
,但 path 仍为{{ 1}} 1 。
我的直接兴趣是学习如何修复超级项目的历史(例如,通过交互式rebase),以便最终回购看起来像第二个sub/x
命令是一开始就使用的(FWIW,尽管我打算这样做,但尚未发布此仓库。)但是,我也有兴趣学习如何在不修改历史记录的情况下进行此操作,即通过向其添加一个或多个新提交,以供将来参考。它。
我尝试删除该子模块并再次添加(基于给定here的git submodule add
食谱),但是我很快陷入混乱。 (我认为问题的一部分是,正如我已经提到的,我已经向子模块添加了多个提交,并一路对超级项目的子模块信息进行了相应的更新。)
因此,我希望找到有关如何进行此重命名的更直接指导。
1 有一个earlier post,其标题表明它确实在问我在这里问的问题,但实际上,帖子不仅在问如何重命名子模块,还有如何更改其路径。事实证明,该问题答案的大部分内容都集中在更改模块路径的问题上。
解决方法
我认为重命名.git/config
和.gitmodules
中的部分很好:
git config --rename-section submodule.sub/x submodule.x
git config -f .gitmodules --rename-section submodule.sub/x submodule.x
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。