How To Move A Git Submodule To An Entirely Different Repository

At some point it may seem like an interesting idea to move one of the submodules in your Git repository to an entirely different URL with completely different commit hashes and history. Here’s how it goes.

  1. Change the submodule URL in your .gitmodules file
  2. Type `git submodule sync` to sync your repo to the new URL
  3. Type `git submodule foreach git pull origin master` to pull down new history for all of your submodules
  4. Watch as a complete mess unfolds when it runs into conflicts
  5. Delete the .git/modules/submodule_repo directory and try again
  6. Watch as a complete mess unfolds when it runs into conflicts
  7. Throw your hands up
  8. Remove the submodule completely. See: “Remove a Submodule within git
  9. Add a new submodule in the same location.

Or just start with steps 8 and 9 next time.

Leave a Reply