Git子模块更新被覆盖

我正在与几个人一起开展一个git项目,我们已将一个外部库作为git子模块.我们共享一个常用的遥控器,我们经常推进和拉动.

自从我们第一次添加这个子模块以来,它有一些变化,所以我做了一个git子模块更新 – 远程更新到最新版本.这对我有用,我把它推到我们的共享遥控器上.存储对提交的引用的子模块位置的文件已更改:

-Subproject commit <old-commit-hash>
+Subproject commit <new-commit-hash>

当我的同事从共享遥控器中提取更改时,他们也会收到更改的子模块,但这似乎与常规文件中的更改不同,因为它不会覆盖旧版本(我期望的那样),但它会出现当他们运行git状态时改变:

Changes not staged for commit:
    modified:   src/submodule (new commits)

所以下面的文件改变了(我推到的新版本),但不知何故git认为我的同事的本地版本更新.然而,这实际上是旧的,指向我的同事仍然有的先前修订版.

现在,我喜欢我的同事,但有时他们并没有真正关注,他们所做的只是git add.或git commit -a,其中包含所有更改,当然会使用对旧子模块提交的引用来覆盖对子模块的更改.

有没有办法对从这个遥控器拉出来的所有人强制执行这个子模块更新?这个子模块参考文件可以像普通文件一样对待吗?
或者我是否必须告诉我的同事更多关注并不时更新git子模块?

我希望我的问题很明确.如果没有,请询​​问,我会尽力澄清.

最佳答案

Or do I have to tell my colleagues to pay more attention and do a git submodule update from time to time?

理想情况下,这就是他们所做的.如果他们不这样做,你可以尝试添加一个git-hook,它在拉出后运行git子模块更新.

This问题可能会有所帮助.

点赞