Bird
Raised Fist0
Gitdevops~5 mins

Submodule status and sync in Git - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the command git submodule status show?
It shows the current commit checked out in each submodule and whether it is up to date with the main repository.
Click to reveal answer
beginner
How do you update all submodules to match the commits recorded in the main repository?
Use git submodule update --init --recursive to initialize and update all submodules recursively.
Click to reveal answer
intermediate
What is the purpose of git submodule sync?
It updates the URLs of submodules in the local configuration to match the main repository's configuration.
Click to reveal answer
intermediate
Why might you need to run git submodule sync after changing the submodule URL?
Because the local .git/config may still have the old URL, so syncing updates it to the new URL from the main repository.
Click to reveal answer
intermediate
What does the --recursive option do when used with submodule commands?
It applies the command to all nested submodules inside submodules, ensuring full update or sync.
Click to reveal answer
Which command shows the current commit checked out in each submodule?
Agit submodule init
Bgit submodule sync
Cgit submodule update
Dgit submodule status
What does git submodule update --init --recursive do?
AInitializes and updates all submodules and nested submodules
BOnly initializes submodules without updating
CSyncs submodule URLs with the main repository
DRemoves all submodules
When should you run git submodule sync?
AAfter changing submodule URLs in the main repository
BBefore cloning a repository
CTo commit changes in submodules
DTo delete submodules
What happens if you don't run git submodule sync after changing a submodule URL?
ASubmodules get deleted automatically
BYour local submodule URL remains outdated
CSubmodules update to the new URL anyway
DGit throws an error on every command
Which option ensures commands apply to nested submodules as well?
A--all
B--force
C--recursive
D--init
Explain how to check the status of submodules and update them to the correct commit.
Think about commands that show current state and commands that bring submodules up to date.
You got /4 concepts.
    Describe why and how you would use git submodule sync in your workflow.
    Consider what happens when submodule URLs change in the main repo.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the command git submodule status show in a Git project?
      easy
      A. The current commit of each submodule and if it is initialized
      B. The list of all branches in the main repository
      C. The status of files changed in the main repository
      D. The remote URLs of all submodules

      Solution

      1. Step 1: Understand the purpose of git submodule status

        This command shows the commit hash each submodule is currently set to and whether it is initialized (downloaded) or not.
      2. Step 2: Compare with other options

        Other options describe unrelated information: branches, changed files, or URLs, which are not shown by this command.
      3. Final Answer:

        The current commit of each submodule and if it is initialized -> Option A
      4. Quick Check:

        Submodule status = commit + init info [OK]
      Hint: Submodule status shows commit and init state [OK]
      Common Mistakes:
      • Confusing submodule status with branch listing
      • Thinking it shows changed files in main repo
      • Assuming it lists remote URLs
      2. Which command correctly updates the URLs of submodules to match the main repository configuration?
      easy
      A. git submodule status
      B. git submodule update --init
      C. git submodule sync
      D. git submodule clone

      Solution

      1. Step 1: Identify the command for syncing URLs

        The command git submodule sync updates the local submodule URLs to match the main repository's configuration.
      2. Step 2: Understand other commands

        git submodule update --init initializes and updates submodules but does not sync URLs. git submodule status shows status, and git submodule clone is not a valid command.
      3. Final Answer:

        git submodule sync -> Option C
      4. Quick Check:

        Sync updates URLs = git submodule sync [OK]
      Hint: Sync URLs with 'git submodule sync' command [OK]
      Common Mistakes:
      • Using update instead of sync for URLs
      • Confusing status with sync
      • Trying non-existent commands like clone
      3. Given a Git project with a submodule, what is the output of git submodule status if the submodule is initialized and at commit abc1234?
      medium
      A. abc1234 path/to/submodule (heads/main)
      B. -abc1234 path/to/submodule
      C. +abc1234 path/to/submodule
      D. abc1234 path/to/submodule (detached HEAD)

      Solution

      1. Step 1: Understand submodule status output format

        The output shows the commit hash, path, and state. A space before the commit means initialized and checked out at that commit. The label '(detached HEAD)' appears if the submodule is not on a branch but at a specific commit.
      2. Step 2: Match output to initialized submodule at commit

        Since the submodule is initialized and at commit abc1234, the output includes the commit, path, and '(detached HEAD)' if not on a branch.
      3. Final Answer:

        abc1234 path/to/submodule (detached HEAD) -> Option D
      4. Quick Check:

        Initialized submodule shows commit + path + detached HEAD [OK]
      Hint: Initialized submodule shows commit and detached HEAD [OK]
      Common Mistakes:
      • Confusing '-' or '+' signs meaning
      • Missing detached HEAD label
      • Assuming branch name always shown
      4. You ran git submodule update --init but the submodule content did not download. What is the most likely cause?
      medium
      A. The submodule URL is outdated and needs syncing
      B. The main repository has no submodules
      C. You forgot to commit the submodule changes
      D. The submodule is already up to date

      Solution

      1. Step 1: Analyze why submodule update --init fails to download

        If the submodule URL in the local config is outdated, Git cannot fetch the submodule content properly.
      2. Step 2: Identify the fix

        Running git submodule sync updates URLs to match the main repo, fixing the issue.
      3. Final Answer:

        The submodule URL is outdated and needs syncing -> Option A
      4. Quick Check:

        Update fails if URLs outdated = sync needed [OK]
      Hint: Sync URLs if submodule update fails to download [OK]
      Common Mistakes:
      • Assuming no submodules exist without checking
      • Thinking commit is needed before update
      • Ignoring URL mismatch errors
      5. You cloned a repository with submodules. To ensure all submodules are initialized, updated to the correct commit, and URLs are synced, which sequence of commands should you run?
      hard
      A. git submodule update --init && git submodule sync
      B. git submodule sync && git submodule update --init
      C. git submodule status && git submodule update --init
      D. git submodule update --init --recursive

      Solution

      1. Step 1: Sync URLs before updating submodules

        Running git submodule sync first ensures local URLs match the main repo, preventing fetch errors.
      2. Step 2: Initialize and update submodules

        After syncing, git submodule update --init downloads and sets submodules to the correct commit.
      3. Final Answer:

        git submodule sync && git submodule update --init -> Option B
      4. Quick Check:

        Sync URLs first, then update/init submodules [OK]
      Hint: Always sync URLs before updating submodules [OK]
      Common Mistakes:
      • Updating before syncing URLs
      • Skipping sync causing fetch errors
      • Assuming update --init handles sync automatically
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard