git子模块名称是否用于显示以外的任何其他内容?

用于跟踪git存储库中的子模块的.gitmodules文件通常具有每个子模块的名称,如下所示:

[submodule "my-submodule"]
  path = foo/bar/my-submodule
  url = http://github.com/myuser/original-my-submodule

但是,我也看到它使用子模块名称中重复的本地路径编写:

[submodule "foo/bar/my-submodule"]
  path = foo/bar/my-submodule
  url = http://github.com/myuser/original-my-submodule

我在我的一个存储库中有这两种风格,可能是偶然的,我不确定它们为什么会有所不同.

我想确保我正确表达了这些.哪一个是“正确的”?有关系吗?子模块名称是否用于显示以外的任何其他内容?

最佳答案
gitmodules man page包括:

The file contains one subsection per submodule, and the subsection value is the name of the submodule.
The name is set to the path where the submodule has been added unless it was customized with the --name option of git submodule add.

然后可以添加子模块(git子模块添加)两次,使用和不使用–name选项(“不”表示:.gitmodules中使用的默认“名称”是其路径,如foo / bar / my -submodule).

它似乎与git submodule add无关,因为它通常与–name选项一起使用,使用.gitmodules的两个条目之一.
没有–name的git子模块添加将使用.gitmodules的第二个条目.

如果两个url在这两个条目中都相同… git submodule add命令的结果是相同的.
除了“添加”之外,该名称不会在其他地方使用.

点赞