我有一个名为辅助程序的子模块。当我用--recursive克隆我的主项目时,Helpers子模块处于分离的头部状态(所有教程都说应该如此)。如果我现在在主项目目录中处于“ git status”状态,则一切都干净了。如果我是CD助手;git checkout master”,除了我现在可以提交的命名分支外,我希望什么都不会改变。但是,如果我不执行任何其他操作,请输入cd ..;。git status”,我看到了
modified: Helpers (new commits)
为什么认为有新提交?子模块仍应与更新时(在本例中为克隆)在同一时间,不是吗?
如果HEAD
您的子模块的与父存储库的索引中指定的提交不匹配,则git将为您提供“新提交”消息。您可以通过运行git ls-tree
以下命令检查在索引中指定了哪个提交:
$ git ls-tree master:<path_to_folder_containing_my_submodule>
160000 commit ba9d11670daf5109a52e5a2b01bca8a344897338 my_submodule
当您进行递归git克隆时,git将获取最新的git,然后指向HEAD
指定的提交。如果指定的提交与远程主服务器中的最新提交不匹配,则克隆时master
将不相等HEAD
。
执行递归克隆后检查的另一种方法是cd
进入子模块,然后使用git log
:
$ git log --decorate --all
commit 6a75034cc78fc637e2437bba9f5834835f56bd8f (origin/master, origin/HEAD, master)
...
commit ba9d11670daf5109a52e5a2b01bca8a344897338 (HEAD)
如果HEAD
并且master
指向相同的提交,则可以检出master,并且在父存储库中将看不到“新提交”消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句