🔥Limited Offer: Get 50% OFFon AI & Full Stack Courses🔥
Back to Git Notes
Topic #48

Git Submodules


What Are Git Submodules?

Git submodules let you include one Git repository inside another as a subdirectory.

This is useful for adding libraries or dependencies managed in separate repositories, while keeping their commit history separate.


Why Use Submodules?

Submodules are helpful when you want to:

  • Reuse code from another project
  • Track a library or dependency at a specific commit
  • Keep histories of projects separate

How to Add a Submodule

To add a submodule to your project, use:

Example: Add a Submodule

git submodule add https://github.com/example/library.git libs/library

This creates a subdirectory libs/library and updates .gitmodules with the submodule info.


How to Clone a Repo with Submodules

When you clone a repository with submodules, you need to fetch their contents separately:

Example: Init and Update Submodules

git submodule init
git submodule update

Or do it all at once when cloning:

Example: Clone with Submodules

git clone --recurse-submodules https://github.com/user/repo.git

How to Check Submodule Status

To see the current commit and state of your submodules, use:

Example: Submodule Status

git submodule status

How to Run Commands in All Submodules

You can run a command in every submodule. For example, to check their status:

Example: foreach

git submodule foreach git status

How to Update Submodules

To update submodules to the latest commit from their remote repository:

Example: Update All Submodules

git submodule update --remote

How to Remove a Submodule

To remove a submodule:

  • Delete the relevant section from .gitmodules
  • Remove the submodule directory from your working tree
  • Run git rm --cached path/to/submodule

About .gitmodules

The .gitmodules file keeps track of all submodules and their paths. Edit this file if you move or remove submodules.

Example: .gitmodules File

[submodule "libs/library"]
  path = libs/library
  url = https://github.com/example/library.git

Troubleshooting and Best Practices

  • If submodules are empty after cloning, run git submodule update --init --recursive.
  • If you change a submodule's URL, update both .gitmodules and .git/config.
  • Submodules always point to a specific commit, not always the latest-remember to update if you want new changes.
  • Keep submodules for external projects you want to track at a fixed version. For simpler needs, consider alternatives like Git subtree or copying files.

Note: Submodules are powerful, but can be tricky to manage. Only use them if you really need to track another project at a specific commit.

Want to go beyond the notes?

Join CodingNow 2.0's Git course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

Git Submodules – FAQs

Quick answers about learning Git Submodules in Git.

This free note from CodingNow 2.0 explains Git Submodules in Git — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every Git topic on CodingNow 2.0, including Git Submodules, is 100% free with no signup required.
With focused practice, most students grasp Git Submodules in 1–3 days from these notes; pairing it with CodingNow 2.0's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the CodingNow 2.0 Community (/community) — expert instructors answer within 24 hours.
WhatsApp
Call NowEnroll Now