我开始处理我在另一个项目下的 git 子模块中的一些文件。但是,由于它是一个 git 子模块,它从未检出“master”,而只是检出头部并将文件夹中的所有文件放在“无分支”中。
现在我无意中对这些文件进行了一些更改,我才意识到我在“无分支”的项目子模块中工作。
我如何将这些文件放入一个分支(如 master)以便我可以拯救它们?
我的项目中有大约 8 个子模块 (/modules/..),其中一些没有完全检出。换句话说,当我跑步时
git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)
一些子模块目录不包含所有文件。我的第一个想法是我可能正在进行不同的提交或其他事情。但是当我检查最新的项目提交 - 然后检查子模块的当前提交时,它们是相同的。
git submodule status
Run Code Online (Sandbox Code Playgroud)
我如何让 git 在加载子模块时提取所有子模块文件?或者更确切地说,当我创建子模块文件夹时,我怎么可能只收到一些文件?
我的项目结构如下所示:
/project
/modules
/submodule1
/submodule2
/etc...
Run Code Online (Sandbox Code Playgroud) 阅读 git 命令的文档submodule我发现您可以使用以下命令为子模块指定分支
git submodule set-branch -branch <branch name> -- <submodule path>
Run Code Online (Sandbox Code Playgroud)
.gitmodules这会导致文件中出现一个配置条目
> git config --file .gitmodules --get-regex branch
...
submodule.<submodule name>.branch = <branch name>
Run Code Online (Sandbox Code Playgroud)
然而,文档没有描述这些数据的用途。子模块仍然在分离头状态下签出,我无法找到一种方法来使用此信息从父存储库中签出子模块,该父存储库将子模块设置为跟踪分支而不进行签出的状态直接在子模块内部。
提供此信息有什么好处(除了.gitmodules包含可以由我自己的脚本检索和使用的信息的文件之外)?(或者我只是以错误的方式进行了子模块的初始化/更新?)