是否有一些简单的方法来重命名git子模块目录(而不是从头到脚删除它,然后用新的目标名称重新添加它)。

当我们在它的时候,为什么我不能在父目录中做以下事情:git mv old-submodule-name new-submodule-name


当前回答

编辑.gitmodules文件重命名子模块,然后重命名子模块目录。

我认为你可能需要做一个git子模块同步之后,但我现在不在一个位置检查。

其他回答

不能重命名它,所以你必须先删除它(deinit),然后再添加它。

所以在移除它之后:

git submodule deinit <path>
git rm --cached <path>

你也可以仔细检查并删除对它的引用:

.gitmodules . /配置 从.git/modules/<name>中删除引用文件夹(最好做备份),因为每个文件夹都有配置文件,其中保存了对其工作树的引用

然后通过将任何更改提交到您的repo来进行更改:

git commit -am 'Removing submodule.'

并且通过以下方法再次检查是否有任何未解决的问题:

git submodule update
git submodule sync
git submodule status

所以现在你可以再次添加git子模块:

git submodule add --name <custom_name> git@github.com:foo/bar.git <my/path>

MacOs:当我想使用VonC解决方案将子模块文件夹Common改为小写时:

git mv Common common

我得到

fatal:重命名“Common”失败:无效参数

解决方案-使用临时文件夹名并移动两次:

git mv Common commontemp
git mv commontemp common

这就是全部:)

我发现以下工作流程:

.gitmodules最新消息 接近新手机 得一个人去 晚上好,夫人 什么

注意:这种方法不会在2018年版本的GIT中正确更新索引和. GIT模块。

注意:你现在可以只执行git mv oldpath newpath,就像VonC的回答中指出的那样。(确保您使用的是最新版本的git)

编辑.gitmodules文件重命名子模块,然后重命名子模块目录。

我认为你可能需要做一个git子模块同步之后,但我现在不在一个位置检查。

我只是尝试了上面建议的一些。我运行:

$ git --version
git version 1.8.4

我发现最好是去初始化子模块,删除目录并创建一个新的子模块。

git submodule deinit <submodule name>

git rm <submodule folder name>

git submodule add <address to remote git repo> <new folder name>

至少这对我来说是最有效的。YMMV !