分支机构之间的子模块更新

时间:2019-04-04 13:19:19

标签: git git-submodules

几天前,master被撞到指向HASH_5上,我看到了对master的提交。 现在,我已经从主服务器上重新建立了功能分支,并且我希望功能分支中的子模块将指向HASH_5。但是,它仍然指向HASH_1,我看不到将其移至一个主控点的任何方法。 子模块的所有更新选项都使用来自超级项目或远程源(或HASH_1或HASH_10)的哈希。 当我在功能分支上运行git log时,我看到了来自主服务器的提交,该提交将子模块撞到了HASH_5-但该提交实际上并不包含任何文件。据我所知,当前子模块的哈希直接存储在Git对象存储中。 任何人都有一个想法如何将功能分支中的子模块移至所指向的提交主机?

谢谢!

1 个答案:

答案 0 :(得分:0)

在父仓库中。 $ git submodule update

从文档中

  

更新注册的子模块以匹配超级项目   通过克隆缺少的子模块并更新   子模块。可以通过多种方式完成“更新”   命令行选项和submodule..update的值   配置变量。命令行选项优先于   配置变量。如果两者都不给出,则结帐是   执行...

您可以添加一个结帐后挂钩来自动执行此操作。

但是,只有在提交父项目之前正确推送了子模块的情况下,此方法才会更新。如果不是这样,子模块中的那些更改将丢失。如果要确定是否是这种情况:     光盘     git log

如果您在子模块历史记录中看到提交,那么您就很好。

在子模块中进行更改的方法是     光盘     git分支     git提交     git推     光盘     git commit

如果您不想丢失更改,则需要提交和推送子模块。