几天前主人被指向HASH_5,我看到这个提交给了主人。现在我已经从主服务器重新设置了我的功能分支,我预计我的功能分支中的子模块将指向HASH_5。但是,它仍然指向HASH_1,我没有看到任何方法将其移动到一个主要点上。子模块的所有更新选项都使用来自超级项目的哈希或来自远程源(或HASH_1或HASH_10)。当我在我的功能分支上运行git log时,我看到master的提交将子模块颠覆到HASH_5 - 但是提交并不真正包含任何文件。据我所知,当前子模块的哈希值直接存储在Git对象库中。任何人都知道如何将功能分支中的子模块移动到提交主机指向的位置?
谢谢!
在父回购。 $ git submodule update
来自文档:
通过克隆缺失的子模块并更新子模块的工作树,更新已注册的子模块以匹配超级项目所期望的内容。 “更新”可以通过多种方式完成,具体取决于命令行选项和子模块.update配置变量的值。命令行选项优先于配置变量。如果两者都没有,则执行结账...
您可以添加一个post-checkout挂钩来自动执行此操作。
但是,只有在提交父项目之前正确推送子模块时,才会更新。如果不是,则子模块中的这些更改将丢失。如果你想确保这是或不是这种情况:cd git log
如果您看到提交,在子模块历史记录中,那么您就是好的。
在你的子模块中进行更改的方法是cd git branch git commit git push cd git commit
如果您不想丢失更改,则需要提交和推送子模块。