I have a 3rd party dependency in may code, call it repo A. The dependency itself has a git submodule, call the submodule repo B. Sometime in the last couple months, someone must have rebased repo B because the commit referenced in repo A no longer exists in repo B, and when I try to recursively clone repo A, I get the following error:
fatal: reference is not a tree: 3c27a70ae7304feb48c60b268c70adf585879d50
Unable to checkout '3c27a70ae7304feb48c60b268c70adf585879d50' in submodule path 'B'
However, when I navigate in a browser to https://github.com/A, there is a link to the submodule in the repo overview. If I click the link to the submodule dependency, and I get taken to this page: https://github.com/B/tree/3c27a70ae7304feb48c60b268c70adf585879d50
This image, together with the URL tree/3c27a70ae7304feb48c60b268c70adf585879d50
, has me confused. Looking here leads me to believe that the commit still exists but just hasn't been 'garbage-collected' by github.
My questions are:
1) What exactly is this "tree" object, since it is not a branch, and the SHA does not appear to reference any git object?
2) Is it possible to recover the commit referenced in the github page?
3) I'm assuming the answer to (2) is no, in which case, does that mean my dependency is just broken? (Note: I am aware that I can look for the same commit in repo B and then just "manually" add in the submodule dependency for repo A, however this introduces its own set of issues that I'd prefer to avoid if possible.)