首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我签出母版时,git子模块有“新提交”。

当我签出母版时,git子模块有“新提交”。
EN

Stack Overflow用户
提问于 2015-04-28 20:34:27
回答 2查看 6.2K关注 0票数 9

我有个子模块叫做助手。当我用--递归克隆我的主项目时,Helpers子模块处于分离的head状态(正如所有教程所说的那样)。如果我现在在主项目目录中'git状态‘,一切都是干净的。如果我'cd助手;git结帐大师‘,我期望什么都不会改变,除了我现在在一个命名的分支,我可以承诺。然而,如果我没有做任何其他事情,如果我'cd .;git状态‘,我看到

代码语言:javascript
复制
 modified:   Helpers (new commits)

为什么它认为有新的提交?子模块应该仍然与更新时相同(在本例中是克隆的),不是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 21:48:06

如果子模块的HEAD与父存储库索引中指定的提交不匹配,那么git将给出“新提交”消息。可以通过运行git ls-tree来检查索引中指定了哪些提交。

代码语言:javascript
复制
$ git ls-tree master:<path_to_folder_containing_my_submodule>
160000 commit ba9d11670daf5109a52e5a2b01bca8a344897338  my_submodule

当您执行递归的git克隆时,git将获取最新的git,然后将HEAD指向指定的提交。如果指定的提交与远程主服务器中的最新提交不匹配,那么当您克隆时,master将不等于HEAD

执行递归克隆后检查的另一种方法是将cd放入子模块,然后使用git log

代码语言:javascript
复制
$ git log --decorate --all
commit 6a75034cc78fc637e2437bba9f5834835f56bd8f (origin/master, origin/HEAD, master)
...
commit ba9d11670daf5109a52e5a2b01bca8a344897338 (HEAD)

如果HEADmaster指向相同的提交,那么您可以签出主服务器,并且不会在父回购中看到“新提交”消息。

票数 -1
EN

Stack Overflow用户

发布于 2015-04-29 11:20:24

可能发生的情况是,您的子模块的master并不是您持有的回购公司想要的版本。

将您的子模块设置为持有回购所需的版本:

代码语言:javascript
复制
holding/ $ git submodule update

检查所需的子模块的SHA1:

代码语言:javascript
复制
holding/ $ git submodule        # (1)
<list of all submodules, with the desired SHA1>

检查您的子模块的master是什么:

代码语言:javascript
复制
holding/ $ cd sub
holding/sub $ git checkout master
holding/sub $ git log -1     # (2)

SHA1在(2)和你在(1)看到的一样吗?如果不是,那就是你的问题了。子模块的主模块中发生了一些事情,但是这些新的更改没有包含在持有回购中。

持有回购保留一个SHA1作为对要使用的子模块版本的引用。如果在子模块的回购中发生进一步的开发,持有回购仍然保持相同的版本,它不会自动更新子模块。

如果您签出子模块的更新版本(如master),然后返回持有回购,git status会告诉您您已经在子模块中签出了一个新的提交。当前子模块提交的此更改可以在您的持有回购中执行。这将更新子模块的哪个版本将与这个提交保持一起使用。

如果您想继续对子模块工作,从持有回购想要的版本,您将需要创建一个新的分支。master反映了子模块的回购中的进一步发展,所以要么您从master工作(并包括这个进一步的开发和您的新工作),要么您从所指的分离头创建一个新的分支。

如果要将master强制放置在所需的分离头上,那么在分离的头和master之间创建的提交(进一步的dev)会发生什么呢?他们会迷路的。如果你下次把移动的master推到origin上,会发生什么呢?这将是一场冲突,因为您所在的本地master可能与origin不同。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29929396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档