我有2个存储库," A"和" B",共享第3个存储库" C"作为一个子模块内部" A"和" B"。
我的客户是TortoiseGit。
如果我提交并推送子模块中的更改,并转到父存储库(" A"例如),然后右键单击 - >在Tortoise中提交,我可以看到标记为已更改的子模块文件夹。如果我提交并推送该更改,主存储库(" A")将指向子模块的正确/最新版本。如果我没有提交更改,主存储库将指向我更新之前的子模块的修订版。
这有点令人困惑,当开发人员忘记更新父/主存储库中子模块的指针时,有时会出现问题。
所以我的第一个问题是,如何使用命令行检查子模块的哪个版本是我的主存储库指向的?
第二个问题是,如何手动编辑该修订版以指向子模块的任意修订版,并推送该更改?
谢谢
答案 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)
A/C
- > TortoiseGit - >切换/结帐 - >选择任何修订 - >行A
- > TortoiseGit - >提交 - >确保选中C
- >行