如何 checkout git 存储库(包括其子模块)?
例如我有一个repo A,有一个子模块B,提交历史如下:
- f7fe0a4 A、bcbaec2 B(最新)
- 206c8dd A,bcbaec2 B
- 0fd667c A,bcbaec2 B
- 0ec21a1 A、e79fea0 B(旧版本)
我想暂时回到 A 的旧版本,因此我将本地更改存储在 A 和 B 中,然后 git checkout 0ec21a1
但我仍在使用最新版本的子模块。我希望子模块根据父版本进行更新。我对这个问题的理解,submodule tag当您 checkout 父模块时,git 不管理子模块,这是正确的吗?
我的真实提交历史更加复杂,并且有几个子模块。有没有办法确定 A 的提交 xxx 中使用的子模块 B 的版本?我可以通过比较 git 日志来获得近似版本,但这相当痛苦......
最佳答案
git checkout 0ec21a1 --recurse-submodules
将根据存储在父项目 A 中的提交更新子模块 B 的内容(如果它已经初始化)(在本例中将 checkout e79fea0
)
关于git checkout 版本,包括子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51726725/