git子模块状态如何选择提交描述?

时间:2013-09-30 18:45:26

标签: git git-submodules

我有一个跟踪分支的子模块。它目前坐在分支机构的负责人。但是git submodule status提出了一个相当丑陋的标记 该提交实际上是当前的分支负责人,无论是在子模块还是在远程模块中。

 % git submodule status
    168b1e6c54101dfa7b1b865197ab7ac660c56fcf common (tha-6-7-g168b1e6)
 % cat .gitmodules
    [submodule "common"]
    path = common
    url = git@github.com:basis-technology-corp/perceptron-segmentation-models.git
    branch = etrog-985-restructure

丑陋的字符串'tha-6-7-g....'来自哪里?它不是分支顶部提交的标记。

1 个答案:

答案 0 :(得分:1)

你的子模块跟踪一个分支,是的:它是registered in the .gitmodules file

 git config -f .gitmodules submodule.<path>.branch

但是submodule true nature没有改变:它的作用仍然是在你的父仓库中引用一个修复提交SHA1。这就是git submodule status显示的内容,并且可以保证克隆您的仓库的任何人都会得到与您当前看到的子模块相同的子模块。

git submodule status
  

显示子模块的状态。这将打印每个子模块当前检出的提交的SHA-1,以及SHA-1的子模块路径和 git describe 的输出。

只有当您执行git submodule update --remote时,SHA1才会更改,以便反映最新的远程分支。
然后,您需要提交父repo才能注册子模块的新SHA1。

父代表总是引用子模块SHA1,而不是子模块分支 分支名称可以来来去去,重命名或删除。这不应该影响父级仓库恢复子模块的精确内容的能力。