When I run the command git submodule status, I see references to tags from months or even years ago. Everything else works fine (the code checks out what I expect it to, and there is no other weird behaviour).
The issue is that this one command displaying it incorrectly. Everything works fine. git submodule update always gets what I expect, and I frequently update the submodules with git add and git push.
username:~/src/main (master)$ git submodule status
3f786850e387550fdab836ed7e6dc881de23001b module0 (old-tag-1234-g8f123456)
89e6c98d92887913cadf06b2adb97f26cde4849b module1 (years-old-tag-4321-g12f4567890)
2b66fd261ee5c6cfc8de7fa466bab600bcfe4f69 module2 (heads/master)
e983f374794de9c64e3d1c1de1d490c0756eeeff module3 (heads/master)
This is strange, because ALL of my submodules have the master branch checked out. I would expect this command to show me heads/master for all 4 of the modules.
username:~/src/main/module0 (master)$ git status
On branch master
Your branch is up to date with 'origin/master'.
...
username:~/src/main/module3 (master)$ git status
On branch master
Your branch is up to date with 'origin/master'.
These submodules are properly referenced too - a git submodule update does not result in any changes to them. This is a repository updated dozens of times daily by dozens of people - There is zero chance that we're accidentally using code from 3 years ago, or forgot to update it.
To further emphasise: The issue is that this one command displaying it incorrectly. Everything works fine
Can anyone suggest reason's why? I suspect this might be something to do with needing to do a update-ref for everything, or some kind of stale refs in ~/src/main/.git/modules/module0/info/refs