Bird
Raised Fist0
Gitdevops~10 mins

Why submodules manage nested repos in Git - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the command to add a submodule to your Git repository.

Git
git submodule [1] https://github.com/example/repo.git
Drag options to blanks, or click blank then click option'
Aadd
Bclone
Cinit
Dupdate
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'clone' instead of 'add' will clone a repo but not add it as a submodule.
2fill in blank
medium

Complete the command to initialize submodules after cloning a repository.

Git
git submodule [1]
Drag options to blanks, or click blank then click option'
Aadd
Bcommit
Cclone
Dinit
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'add' again instead of 'init' after cloning.
3fill in blank
hard

Fix the error in the command to update submodules recursively.

Git
git submodule update --[1]
Drag options to blanks, or click blank then click option'
Ainit
Brecursive
Cclone
Dcommit
Attempts:
3 left
💡 Hint
Common Mistakes
Using '--init' instead of '--recursive' will not update nested submodules.
4fill in blank
hard

Fill both blanks to create a submodule and initialize it.

Git
git submodule [1] https://github.com/example/repo.git && git submodule [2]
Drag options to blanks, or click blank then click option'
Aadd
Binit
Cupdate
Dclone
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'clone' instead of 'add' or 'update' instead of 'init'.
5fill in blank
hard

Fill all three blanks to update submodules recursively and initialize them.

Git
git submodule [1] && git submodule [2] --[3]
Drag options to blanks, or click blank then click option'
Aupdate
Brecursive
Cinit
Dadd
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up 'add' with 'update' or missing the '--recursive' flag.

Practice

(1/5)
1. Why do Git submodules help when you want to include another repository inside your project?
easy
A. They merge the nested repository's history into the main project.
B. They keep the nested repository separate with its own history.
C. They copy all files from the nested repository permanently.
D. They delete the nested repository after adding it.

Solution

  1. Step 1: Understand submodule purpose

    Git submodules allow you to include another repository inside your project but keep it separate.
  2. Step 2: Recognize history separation

    This means the nested repo keeps its own commit history and does not merge with the main project.
  3. Final Answer:

    They keep the nested repository separate with its own history. -> Option B
  4. Quick Check:

    Submodules keep histories separate = A [OK]
Hint: Submodules keep nested repos separate, not merged [OK]
Common Mistakes:
  • Thinking submodules merge histories
  • Assuming submodules copy files permanently
  • Believing submodules delete nested repos
2. Which command correctly adds a Git submodule to your project?
easy
A. git submodule add https://github.com/example/repo.git
B. git add submodule https://github.com/example/repo.git
C. git clone submodule https://github.com/example/repo.git
D. git submodule clone https://github.com/example/repo.git

Solution

  1. Step 1: Recall submodule add syntax

    The correct command to add a submodule is git submodule add <repo-url>.
  2. Step 2: Check options for correct syntax

    Only git submodule add https://github.com/example/repo.git matches this syntax exactly.
  3. Final Answer:

    git submodule add https://github.com/example/repo.git -> Option A
  4. Quick Check:

    Use 'git submodule add' to add submodules = C [OK]
Hint: Add submodules with 'git submodule add' command [OK]
Common Mistakes:
  • Using 'git add submodule' which is invalid
  • Trying 'git clone submodule' which is not a command
  • Confusing 'git submodule clone' which doesn't exist
3. What is the output of running git submodule update --init after cloning a repository with submodules?
medium
A. It lists all submodules without downloading them.
B. It deletes all submodule directories from the project.
C. It fetches and checks out the submodule repositories at the recorded commit.
D. It merges submodule commits into the main repository.

Solution

  1. Step 1: Understand 'git submodule update --init'

    This command downloads the submodule repositories and checks out the commit recorded in the main repo.
  2. Step 2: Compare options with command behavior

    Only It fetches and checks out the submodule repositories at the recorded commit. correctly describes this behavior; others describe incorrect actions.
  3. Final Answer:

    It fetches and checks out the submodule repositories at the recorded commit. -> Option C
  4. Quick Check:

    'git submodule update --init' fetches submodules = D [OK]
Hint: Update and initialize submodules with 'git submodule update --init' [OK]
Common Mistakes:
  • Thinking it deletes submodules
  • Assuming it merges submodule commits
  • Believing it only lists submodules
4. You cloned a repository with submodules but forgot to run git submodule update --init. What problem will you face?
medium
A. The submodule folders will be empty or missing files.
B. The main repository will not clone properly.
C. The submodules will automatically update without any command.
D. The repository will merge submodule commits automatically.

Solution

  1. Step 1: Understand cloning with submodules

    When cloning, submodule folders exist but are empty until you initialize and update them.
  2. Step 2: Identify the effect of missing update

    Without running git submodule update --init, submodule content is not fetched, so folders are empty or incomplete.
  3. Final Answer:

    The submodule folders will be empty or missing files. -> Option A
  4. Quick Check:

    Missing 'git submodule update --init' causes empty submodule folders = B [OK]
Hint: Always run 'git submodule update --init' after cloning repos with submodules [OK]
Common Mistakes:
  • Expecting submodules to auto-update
  • Thinking main repo cloning fails
  • Assuming submodules merge automatically
5. You want to update a submodule to a newer commit and push this change to the main repository. Which sequence of commands is correct?
hard
A. cd submodule_dir; git pull; git merge main; git push
B. git submodule update --init; git commit -m 'Update submodule'; git push
C. git clone submodule_dir; git push; git commit -m 'Update submodule'
D. cd submodule_dir; git checkout new_commit; cd ..; git add submodule_dir; git commit -m 'Update submodule'; git push

Solution

  1. Step 1: Update submodule commit

    Navigate into the submodule directory and checkout the desired new commit.
  2. Step 2: Stage and commit submodule change in main repo

    Return to main repo, add the submodule directory change, commit with a message, then push.
  3. Final Answer:

    cd submodule_dir; git checkout new_commit; cd ..; git add submodule_dir; git commit -m 'Update submodule'; git push -> Option D
  4. Quick Check:

    Update submodule commit then commit in main repo = A [OK]
Hint: Update submodule inside folder, then commit main repo change [OK]
Common Mistakes:
  • Trying to update submodule without committing main repo
  • Running 'git submodule update --init' instead of checkout
  • Confusing clone with update commands
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