📦 Submodules = External Repos
Projects depend on other repos. Submodules include external repositories. Track dependencies, version control included.
📝 Submodule Commands
# Add submodule git submodule add https://github.com/user/repo.git path/to/submodule # Clone with submodules git clone --recursive https://github.com/your/repo.git # Initialize submodules git submodule init # Update submodules git submodule update # Update with recursive git submodule update --recursive # Pull latest changes git submodule update --remote # Show submodule status git submodule status # Update all submodules git submodule foreach git pull # Remove submodule git submodule deinit path/to/submodule git rm path/to/submodule git config -f .gitmodules --remove-section submodule.path/to/submodule
🎯 Working with Submodules
# Add shared library git submodule add https://github.com/company/shared-lib.git libs/shared # Add external plugin git submodule add https://github.com/plugin/plugin.git plugins/plugin # Clone project with submodules git clone https://github.com/project.git cd project git submodule init git submodule update # Update single submodule cd libs/shared git checkout main git pull cd .. git add libs/shared git commit -m "Update shared library" # Update all submodules git submodule update --remote --recursive git commit -m "Update all submodules" # Check submodule differences git diff --submodule # Submodule branching cd libs/shared git checkout develop git pull origin develop cd .. git add libs/shared git commit -m "Switch submodule to develop branch" # Troubleshoot git submodule sync # Update URL if changed git submodule update --init --recursive
💡 Best Practices
- Use specific tags/branches for stability
- Update submodules in separate commits
- Document submodule usage
- Consider alternatives (Git subtree)
- Keep submodule paths consistent
“Submodules manage external dependencies. Version tracking, shared code. Essential for complex projects.”
