如何在Git中检查和更新子模块修订指针

时间:2014-03-20 10:47:07

标签: git git-submodules tortoisegit

我有2个存储库," A"和" B",共享第3个存储库" C"作为一个子模块内部" A"和" B"。

我的客户是TortoiseGit。

如果我提交并推送子模块中的更改,并转到父存储库(" A"例如),然后右键单击 - >在Tortoise中提交,我可以看到标记为已更改的子模块文件夹。如果我提交并推送该更改,主存储库(" A")将指向子模块的正确/最新版本。如果我没有提交更改,主存储库将指向我更新之前的子模块的修订版。

这有点令人困惑,当开发人员忘记更新父/主存储库中子模块的指针时,有时会出现问题。

所以我的第一个问题是,如何使用命令行检查子模块的哪个版本是我的主存储库指向的?

第二个问题是,如何手动编辑该修订版以指向子模块的任意修订版,并推送该更改?

谢谢

1 个答案:

答案 0 :(得分:0)

1)

我建议你使用TortoiseGit GUI。转到A/C - > TortoiseGit - >显示日志 - >粗体文本的修订版是工作目录中的修订版。

使用命令行检查工作目录中的子模块修订版

cd A
cd C
git log -n 1

要检查当前提交中的子模块修订,请转到A - > TortoiseGit - >回购浏览器 - >选择C,您可以在底部看到修订版。 您也可以右键单击以显示日志或复制哈希值。

但命令行方式不是直截了当的:

cd A
git diff HEAD~N HEAD -- C

其中N是您认为子模块修订版更改的提交数。 第+Subproject commit行显示了所需的子模块版本。

2)

  1. 确保子模块的工作目录是干净的。
  2. 转到A/C - > TortoiseGit - >切换/结帐 - >选择任何修订 - >行
  3. 转到A - > TortoiseGit - >提交 - >确保选中C - >行