On Thu, Jan 23, 2014 at 03:38:49AM -0500, shawn wilson wrote: > My issue is in trying to update the submodules, I'm getting: > % git submodule update --init > gits/kt (master ⚡) > swlap1 > fatal: reference is not a tree: 98f1e9f99fca32ab3de901219eb2f600d38ab3a5 > Unable to checkout '98f1e9f99fca32ab3de901219eb2f600d38ab3a5' in > submodule path 'repo_a' > > Ok, so a bit of googling and I found this: > http://stackoverflow.com/questions/13425298/git-submodule-update-fatal-error-reference-is-not-a-tree > Ok, so update the repo that contains the submodules every time you > push from a sub repo? How / where do I create a hook to do this?
You've got it switched. You *did* push the superproject, but forgot to push the new submodule commits that it references. An easy way to avoid this problem is to always push the superproject using: $ git push --recurse-submodules=on-demand … If you no longer have access to the submodule repositories that weren't pushed, you'll have to roll back the superproject so it references submodule commits that were pushed. The easiest way to do this is probably to just cd into the submodule directory and checkout an appropriate commit (e.g. origin/master): $ cd repo_a $ git fetch origin $ git checkout origin/master That will put you on a detached HEAD, so you might want to replace the checkout with: $ git checkout -B master origin/master or some such to get a local branch. Then cd back into the superproject and commit the submodule (referencing the current submodule commit): $ cd .. $ git commit -m 'repo_a: Roll back to last public commit' repo_a When you push that commit, don't forget to push everything ;) $ git push --recurse-submodules=on-demand Cheers, Trevor -- This email may be signed or encrypted with GnuPG (http://www.gnupg.org). For more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy
Description: OpenPGP digital signature