我想添加一个不同名称的git子模块,例如:
git submodule add --name foo git@bitbucket.org:ironsand/cookbook-foo.git
我想创建一个名为foo
的git子模块目录,但是仓库的名称是用cookbook-foo
创建的。
很可能是我做错了什么,但我不知道具体是哪里错了。
我该如何更改git子模块目录的名称?
我想添加一个不同名称的git子模块,例如:
git submodule add --name foo git@bitbucket.org:ironsand/cookbook-foo.git
我想创建一个名为foo
的git子模块目录,但是仓库的名称是用cookbook-foo
创建的。
很可能是我做错了什么,但我不知道具体是哪里错了。
我该如何更改git子模块目录的名称?
不要混淆子模块的路径和名称。你想运行
git submodule add git@bitbucket.org:ironsand/cookbook-foo.git foo/
请参考 git-submodule
手册获取更多细节,此处相关的 git-submodule
语法为:
git submodule [--name <name>] <repository> [<path>]
其中...
<repository>
是新子模块的源代码库的 URL。<path>
,则确定子目录(超级项目根目录下的)的名称,用于接收位于<repository>
上的 repo 的克隆;如果未指定,则<path>
默认为该 repo 的名称。<name>
是子模块的名称,在.gitmodules
文件中相应的子模块条目中出现;如果未指定,则<name>
仅默认为<path>
。以下是一个玩具示例以澄清概念:
$ cd ~/Desktop
$ mkdir test
$ cd test
$ git init
$ git submodule add --name brutus https://github.com/bradfitz/gitbrute bradfitz_bruteforce
$ ls -a
. .git bradfitz_bruteforce
.. .gitmodules
$ cat .gitmodules
[submodule "brutus"]
path = bradfitz_bruteforce
url = https://github.com/bradfitz/gitbrute
--
分隔符,就像 submodule
命令帮助中所示的示例一样。$ git submodule -h
usage: git submodule [--quiet] [--cached]
or: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]
例如:
git submodule add --name foo \
-- git@bitbucket.org:ironsand/cookbook-foo.git \
path/to/foo
供参考,我的 Git 版本是 2.30。
$ git version
git version 2.30.0
git mv cookbook-foo foo