“ 超级”存储库在哪里跟踪每个子模块所处的提交位置?
我在.gitmodules中没有看到任何有关此信息的内容。
我想要实现的是,如果我使用
是否可以在不手动记录每个子模块的提交位置的情况下实现这一点?
我现在意识到以后我可以通过使用以下方法获取该信息:
我在.gitmodules中没有看到任何有关此信息的内容。
我想要实现的是,如果我使用
1.0-alpha
等标签来标记“超级”存储库,则它将记住所有子模块在那个时间点上所处的提交状态,因此当我稍后检出该标记时,也会将子模块放置在其正确的提交位置。是否可以在不手动记录每个子模块的提交位置的情况下实现这一点?
我现在意识到以后我可以通过使用以下方法获取该信息:
git ls-tree <tag>
但是我将不得不进入每个子模块并手动检出该特定子模块在提交abc1234
时的代码。
/David
git checkout whatever
之后,你需要运行git submodule update
,它会查看主项目中的提交,并检出子模块中所需的任何内容。 - twalbergHEAD
引用中,这取决于您使用的 git 版本。它曾经存储在path/to/submodule/.git
中,但是新版本将 git-dir 和子模块的工作树分离,因此现在它位于主存储库中的.git/modules/path/to/submodule
... - twalberg