git checkout版本,包括子模块

时间:2018-08-07 12:22:58

标签: git git-submodules git-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的理解是,结帐父项时git不管理子模块,这是正确的吗?

我的实际提交历史更加复杂,并且有几个子模块。有没有办法确定在A的提交xxx中使用了哪个版本的子模块B?我可以通过比较git日志来获得大概的版本,但这很痛苦...

1 个答案:

答案 0 :(得分:1)

git checkout 0ec21a1 --recurse-submodules将根据存储在父项目A中的提交更新子模块B的内容(如果已经初始化)(在这种情况下,将检出e79fea0