bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Git/Git Advanced
Git•Git Advanced

Git Submodules

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind Git Submodules?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

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

Put the learning moves in the order that makes the concept easiest to apply.

How to Clone a Repo with Submodules
How to Add a Submodule
Why Use 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:

git submodule init
git submodule update

Or do it all at once when cloning:

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:

git submodule status

How to Run Commands in All Submodules

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

git submodule foreach git status

How to Update Submodules

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

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.

[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.

Previous

Git Hooks

Next

Git Advanced Remote