📖 Scenario: You are working on a project where you want to save time and space by downloading only the latest commits from a Git repository instead of the full history.
🎯 Goal: Learn how to create a shallow clone of a Git repository using the --depth option to limit the number of commits downloaded.
📋 What You'll Learn
Use the git clone command
Add the --depth option with a value of 1
Clone the repository from https://github.com/example/repo.git
Verify the clone contains only the latest commit
💡 Why This Matters
🌍 Real World
Shallow cloning is useful when you want to quickly get the latest code without downloading the entire project history, especially for large repositories.
💼 Career
Many DevOps and software development roles require efficient use of Git. Knowing shallow clones helps optimize workflows and save resources.
Progress0 / 4 steps
1
Create a shallow clone with depth 1
Write the git clone command to clone the repository from https://github.com/example/repo.git with a depth of 1 using the --depth 1 option.
Git
Hint
Use git clone --depth 1 followed by the repository URL.
2
Check the commit history depth
After cloning, write the git log --oneline command to show the commit history and verify it contains only one commit.
Git
Hint
Use git log --oneline to see a short list of commits.
3
Clone with a different depth
Write the git clone command to clone the repository from https://github.com/example/repo.git with a depth of 3 using the --depth 3 option.
Git
Hint
Change the depth number to 3 in the git clone command.
4
Show the commit history for depth 3 clone
Write the git log --oneline command to show the commit history of the repository cloned with depth 3 and verify it contains three commits.
Git
Hint
Run git log --oneline after cloning with depth 3 to see the commits.
Practice
(1/5)
1. What does the --depth option do when used with git clone?
easy
A. It compresses the repository to save disk space.
B. It clones all branches including remote ones.
C. It creates a shallow clone with limited commit history.
D. It initializes a new empty repository.
Solution
Step 1: Understand the purpose of --depth
The --depth option limits the number of commits cloned, creating a shallow copy.
Step 2: Compare with other clone types
Unlike a full clone, a shallow clone saves time and space by copying recent commits only.
Final Answer:
It creates a shallow clone with limited commit history. -> Option C
Quick Check:
Shallow clone = limited history [OK]
Hint: Remember: --depth limits commit history depth [OK]
Common Mistakes:
Thinking --depth clones all branches
Confusing shallow clone with compression
Assuming it creates an empty repo
2. Which of the following is the correct syntax to clone a repository with a depth of 5 commits?
easy
A. git clone --depth=5 https://example.com/repo.git
B. git clone -depth 5 https://example.com/repo.git
C. git clone --depth 5 https://example.com/repo.git
D. git clone --deep 5 https://example.com/repo.git
Solution
Step 1: Recall correct git clone syntax for depth
The correct syntax uses --depth with an equals sign or a space and the number, like --depth=5 or --depth 5. Both are valid.
Step 2: Identify incorrect options
git clone -depth 5 https://example.com/repo.git uses a single dash which is invalid. git clone --deep 5 https://example.com/repo.git uses an invalid flag --deep.
Final Answer:
git clone --depth=5 https://example.com/repo.git -> Option A
Quick Check:
Correct syntax = --depth=5 or --depth 5 [OK]
Hint: Use --depth=5 or --depth 5 for shallow clone [OK]
Common Mistakes:
Using '=' instead of space after --depth (both valid but some prefer equals)
Typing -depth instead of --depth
Using --deep instead of --depth
3. What will be the output of the following commands?
git clone --depth 2 https://example.com/repo.git
cd repo
git log --oneline
medium
A. Shows commits from all branches.
B. Shows the full commit history.
C. Shows no commits because depth is too low.
D. Shows only the last 2 commits in the log.
Solution
Step 1: Understand shallow clone effect on history
Using --depth 2 clones only the last 2 commits, so git log shows those.
Step 2: Analyze git log --oneline output
This command lists commits in short form, limited to the shallow clone's depth.
Final Answer:
Shows only the last 2 commits in the log. -> Option D
Quick Check:
Depth 2 clone shows 2 commits [OK]
Hint: Shallow clone limits log to depth commits [OK]
Common Mistakes:
Expecting full history in shallow clone
Thinking no commits show if depth is low
Assuming all branches' commits appear
4. You ran git clone --depth 3 https://example.com/repo.git but later need the full history. What should you do to fix this?
medium
A. Run git fetch --unshallow inside the cloned repo.
B. Delete the repo and clone again without --depth.
C. Run git clone --depth 0 to get full history.
D. Run git pull --depth=full to fetch all commits.
Solution
Step 1: Understand how to convert shallow clone to full
Inside the shallow clone, running git fetch --unshallow downloads the full commit history.
Step 2: Evaluate other options
Deleting the repo and cloning again without --depth works but is inefficient. Options C and D use invalid syntax or commands.
Final Answer:
Run git fetch --unshallow inside the cloned repo. -> Option A
Quick Check:
Use git fetch --unshallow to get full history [OK]
Hint: Use git fetch --unshallow to complete shallow clone [OK]
Common Mistakes:
Trying to reclone instead of fetching full history
Using invalid git pull options
Assuming --depth 0 is valid
5. You want to clone a large repository but only need the last 10 commits of the main branch and no other branches. Which command achieves this efficiently?
hard
A. git clone --depth=10 https://example.com/repo.git
B. git clone --depth 10 --single-branch --branch main https://example.com/repo.git
C. git clone --branch main https://example.com/repo.git
D. git clone --shallow-since=10days https://example.com/repo.git
Solution
Step 1: Identify options to limit clone depth and branches
Use --depth 10 to limit commits and --single-branch --branch main to clone only main branch.
Step 2: Check other options for correctness
git clone --depth=10 https://example.com/repo.git clones all branches shallowly. git clone --branch main https://example.com/repo.git clones full history of main. git clone --shallow-since=10days https://example.com/repo.git uses invalid flag.
Final Answer:
git clone --depth 10 --single-branch --branch main https://example.com/repo.git -> Option B
Quick Check:
Depth + single branch = efficient clone [OK]
Hint: Combine --depth with --single-branch for focused clone [OK]
Common Mistakes:
Not using --single-branch clones all branches
Using invalid flags like --shallow-since
Assuming --depth=10 clones only main branch
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.