这篇文章将为大家详细讲解有关如何解决git子模块更新获取不到最新提交的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
同事在共同使用的一个工程里修改了代码,这个工程在我本地的工程中是作为子模块来使用的,但是我在本地执行以下命令却获取不到最新提交的代码。
git init——递归子模块更新
git子模块在工程中维护了一个文件.gitmodules文件,里边记录了子工程在当前父工程下的存放路径路径和子工程的git路径url。同时,在父工程下的。git目录中,还有个模块子目录如下所示。
在这个模块中存放的就是父工程相关的子工程的路径。进入子工程后,可以看到里边有个叫做FETCH_HEAD的文件:
查看该文件的内容如下:
zhuwsh@zhuwsh-TM1705: ~/work_space/autonomousDriving/it/模块/src/跑龙套dw_xxx_center美元猫FETCH_HEAD
31 ecb3458596f22134588460eefb9efa4bd6df23分支& # 39;主# 39;https://gitlab.xxx.com/xxx/dw_xxx_center
引用>此时可以发现,这里的提交身份证和git上最新提交的commitid不一样,这里的提交身份证还是之前某一次的提交id。
这个其实要说明的是,git子模块更新获取代码的时候是和子工程的git路径和这里的提交身份证有关联的,获取的就是对应的git路径下截止这个提交id的所有代码,之后的代码是不会获取到的。
明白了这个原理后,就知道怎么来修改了。
既然git远端服务器代码已经修改过了,那么本地每次执行了git子模块更新——init——递归命令后自然需要在自工程对应的路径下执行git pull命令,执行完后服务器端的最新代码就更新到本地了。这个操作做完后再执行git子模块更新命令,此时就可以看到上边说的FETCH_HEAD文件中的提交身份证发生了变化,已经变为当前最新的提交身份证了。
zhuwsh@zhuwsh-TM1705: ~/work_space/autonomousDriving/it/模块/src/跑龙套dw_xxx_center美元猫FETCH_HEAD
ab214ead574d51755f4faabad4045de6486b49c2分支& # 39;主# 39;https://gitlab.xxx.com/xxx/dw_xxx_center
引用>总结一下就是,在使用git init——递归子模块更新获取了自工程代码后,还需要执行下面两条命令:
git拉 git子模块更新关于如何解决git子模块更新获取不到最新提交的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。
如何解决git子模块更新获取不到最新提交的问题