Steps to Update a Submodule

Step 1: Initialize and Update the Submodule

If you’ve just cloned a repository containing submodules, you need to initialize and update them first:

git submodule update --init --recursive

This command initializes, fetches, and checks out the submodule’s content.

Step 2: Fetch the Latest Changes in the Submodule

Navigate to the submodule directory:

cd path/to/submodule

Then, fetch the latest changes from the remote repository:

git fetch

This command updates the submodule with the latest changes from its remote repository.

Step 3: Checkout the Desired Commit

After fetching the latest changes, you need to checkout the desired commit or branch. For instance, to checkout the latest commit on the main branch:

git checkout main

Alternatively, you can checkout a specific commit:

git checkout <commit-hash>

Replace `<commit-hash>` with the actual hash of the commit you want to checkout.

Step 4: Pull the Latest Changes

To ensure your submodule is up to date, pull the latest changes:

git pull origin main

This command pulls the latest changes from the specified branch.

Step 5: Update the Parent Repository

After updating the submodule, you need to update the reference in the parent repository to point to the new commit. Navigate back to the root of your main repository:

cd ../..

Then, add and commit the changes:

git add path/to/submodule
git commit -m "Updated submodule to latest commit"

This updates the reference of the submodule to the latest commit you checked out and pulled.

Step 6: Push the Changes to the Remote Repository

Finally, push the changes to your remote repository to keep it in sync:

git push origin main

This command pushes your changes, including the updated submodule reference, to the remote repository.

Example

Let’s walk through a practical example. Suppose you have a repository with a submodule located at `libs/my-submodule` and you want to update it to the latest commit on its main branch.

Step 1: Initialize and Update the Submodule (if you haven’t already):

git submodule update --init --recursive

Step 2. Navigate to the Submodule Directory:

cd libs/my-submodule

Step 3: Fetch the Latest Changes:

git fetch

Step 4: Checkout the Latest Commit:

git checkout main

Step 5: Pull the Latest Changes:

git pull origin main

Step 6. Navigate Back to the Parent Repository:

    cd ../..

Step 7: Update the Submodule Reference*

    git add libs/my-submodule

git commit -m “Updated my-submodule to latest commit”

Step 8: Push the Changes to the Remote Repository:

git push origin main

Updating a Submodule in Git

Git submodules are a powerful feature that allows you to include and manage external repositories within your own Git project. This is particularly useful for managing dependencies or handling third-party libraries. However, keeping these submodules up to date can be a bit tricky. In this article, we will see the process of updating a submodule in Git.

Similar Reads

What are Git Submodules?

A Git submodule is a repository within a repository. It allows you to clone another repository into your project and keep track of the exact commit it’s on. This is useful for projects that depend on other projects....

Steps to Update a Submodule

Step 1: Initialize and Update the Submodule...

Conclusion

Updating a submodule in Git involves several steps, but it’s a simple process once you understand the workflow. By following the steps in this article, you can keep your submodules up to date, ensuring your project dependencies are current and your codebase remains stable....