Bird
Raised Fist0
Gitdevops~20 mins

Removing submodules in Git - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Submodule Removal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output after removing a submodule directory?
You run these commands in a git repository:

git rm --cached path/to/submodule
rm -rf path/to/submodule
git commit -m "Remove submodule"

What will git status show immediately after the commit?
ANo changes, clean working tree
BDeleted submodule directory shown as deleted
CSubmodule still listed in .gitmodules as modified
DUntracked files in submodule directory
Attempts:
2 left
💡 Hint
Think about what happens when you remove a submodule properly and commit.
❓ Configuration
intermediate
1:30remaining
Which file must be edited to fully remove a submodule?
You want to completely remove a submodule from your git project. Besides removing the submodule directory and running git rm --cached, which file must you edit to remove the submodule reference?
A.gitattributes
B.gitmodules
C.gitignore
Dconfig
Attempts:
2 left
💡 Hint
This file tracks submodule paths and URLs.
❓ Troubleshoot
advanced
2:30remaining
Why does git still show a submodule after removal?
You removed a submodule directory and ran git rm --cached and committed. But git status still shows the submodule as modified. What is the most likely cause?
AYou did not run git submodule update
BYou forgot to delete the submodule directory
CThe submodule entry remains in .gitmodules and .git/config
DThe submodule repository is corrupted
Attempts:
2 left
💡 Hint
Check all places where submodule info is stored.
🔀 Workflow
advanced
3:00remaining
Correct sequence to fully remove a git submodule
Arrange the steps in the correct order to fully remove a git submodule named libs/foo:
A2,3,1,4
B1,2,3,4
C1,3,2,4
D2,1,3,4
Attempts:
2 left
💡 Hint
Think about removing from index before deleting files and updating config.
✅ Best Practice
expert
3:00remaining
What is the safest way to remove a submodule to avoid repository corruption?
Which practice helps avoid repository corruption when removing a git submodule?
ARun git rm --cached, remove submodule entry from .gitmodules, delete directory, then commit
BRemove submodule directory manually, then run git rm --cached
CDelete submodule directory and commit directly without git rm
DOnly edit .gitmodules and commit, leaving directory intact
Attempts:
2 left
💡 Hint
Follow git's recommended removal steps carefully.

Practice

(1/5)
1. What is the first step to remove a Git submodule from your project?
easy
A. Commit the changes immediately
B. Delete the submodule folder manually
C. Unregister the submodule using git submodule deinit
D. Run git rm --cached on the main repository

Solution

  1. Step 1: Unregister the submodule

    Use git submodule deinit <path> to unregister the submodule from Git's configuration.
  2. Step 2: Remove submodule files and commit

    After unregistering, delete the submodule folder and commit the changes to keep the project clean.
  3. Final Answer:

    Unregister the submodule using git submodule deinit -> Option C
  4. Quick Check:

    First step is unregistering submodule [OK]
Hint: Always unregister submodule before deleting files [OK]
Common Mistakes:
  • Deleting folder before unregistering causes errors
  • Committing before unregistering submodule
  • Skipping unregister step
2. Which command correctly removes a submodule's cached entry from Git's index?
easy
A. git rm <submodule_path>
B. git delete submodule <submodule_path>
C. git submodule remove <submodule_path>
D. git rm --cached <submodule_path>

Solution

  1. Step 1: Remove cached submodule entry

    Use git rm --cached <submodule_path> to remove the submodule from Git's index without deleting files immediately.
  2. Step 2: Delete submodule folder and commit

    After removing cached entry, delete the folder manually and commit the changes.
  3. Final Answer:

    git rm --cached <submodule_path> -> Option D
  4. Quick Check:

    Remove cached entry with git rm --cached [OK]
Hint: Use --cached to remove from index but keep files temporarily [OK]
Common Mistakes:
  • Using git rm without --cached deletes files immediately
  • Using non-existent git submodule remove command
  • Trying git delete submodule which is invalid
3. Given these commands run in order, what is the final state of the submodule folder?
git submodule deinit mysub
rm -rf .git/modules/mysub
git rm --cached mysub
rm -rf mysub
git commit -m "Remove submodule"
medium
A. The submodule folder and Git data are fully removed
B. The submodule folder remains but is untracked
C. Only Git data is removed, folder remains
D. Submodule is still registered and tracked

Solution

  1. Step 1: Unregister and remove Git data

    git submodule deinit mysub unregisters the submodule, and rm -rf .git/modules/mysub deletes its Git data.
  2. Step 2: Remove cached index and folder, then commit

    git rm --cached mysub removes it from Git index, rm -rf mysub deletes the folder, and commit saves changes.
  3. Final Answer:

    The submodule folder and Git data are fully removed -> Option A
  4. Quick Check:

    All steps done means full removal [OK]
Hint: Deinit, remove Git data, rm cached, delete folder, commit [OK]
Common Mistakes:
  • Forgetting to delete .git/modules data
  • Not committing after removal
  • Deleting folder before unregistering
4. You ran rm -rf mysub before git submodule deinit mysub. What problem might occur?
medium
A. Git still tracks the submodule and shows errors on next fetch
B. The submodule folder is restored automatically
C. Git removes the submodule automatically without errors
D. No problem, this is the correct order

Solution

  1. Step 1: Understand order importance

    Deleting the folder before unregistering leaves Git still tracking the submodule path.
  2. Step 2: Resulting error state

    Git will show errors or warnings because the submodule is missing but still registered.
  3. Final Answer:

    Git still tracks the submodule and shows errors on next fetch -> Option A
  4. Quick Check:

    Delete folder before deinit causes tracking errors [OK]
Hint: Always deinit before deleting submodule folder [OK]
Common Mistakes:
  • Deleting folder first then deinit
  • Ignoring Git errors after removal
  • Assuming folder deletion unregisters submodule
5. You want to completely remove a submodule named libs/toolkit from your project. Which sequence of commands correctly removes it and cleans all related data?
hard
A. git rm libs/toolkit; rm -rf libs/toolkit; git commit -m "Remove submodule"
B. git submodule deinit libs/toolkit; rm -rf .git/modules/libs/toolkit; git rm --cached libs/toolkit; rm -rf libs/toolkit; git commit -m "Remove submodule"
C. rm -rf libs/toolkit; git submodule deinit libs/toolkit; git commit -m "Remove submodule"
D. git submodule remove libs/toolkit; git commit -m "Remove submodule"

Solution

  1. Step 1: Unregister and remove Git submodule data

    Run git submodule deinit libs/toolkit to unregister, then delete Git metadata with rm -rf .git/modules/libs/toolkit.
  2. Step 2: Remove cached index and folder, then commit

    Use git rm --cached libs/toolkit to remove from index, delete the folder manually, and commit changes.
  3. Final Answer:

    git submodule deinit libs/toolkit; rm -rf .git/modules/libs/toolkit; git rm --cached libs/toolkit; rm -rf libs/toolkit; git commit -m "Remove submodule" -> Option B
  4. Quick Check:

    Full removal requires unregister, delete Git data, rm cached, delete folder, commit [OK]
Hint: Deinit, delete .git/modules, rm cached, delete folder, commit [OK]
Common Mistakes:
  • Skipping removal of .git/modules data
  • Using non-existent git submodule remove command
  • Deleting folder before unregistering
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