如何解决git子模块更新获取不到最新提交的问题

  介绍

这篇文章将为大家详细讲解有关如何解决git子模块更新获取不到最新提交的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

同事在共同使用的一个工程里修改了代码,这个工程在我本地的工程中是作为子模块来使用的,但是我在本地执行以下命令却获取不到最新提交的代码。

 git init——递归子模块更新

git子模块在工程中维护了一个文件.gitmodules文件,里边记录了子工程在当前父工程下的存放路径路径和子工程的git路径url。同时,在父工程下的。git目录中,还有个模块子目录如下所示。

如何解决git子模块更新获取不到最新提交的问题

在这个模块中存放的就是父工程相关的子工程的路径。进入子工程后,可以看到里边有个叫做FETCH_HEAD的文件:

如何解决git子模块更新获取不到最新提交的问题

查看该文件的内容如下:

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子模块更新获取不到最新提交的问题