Bird
Raised Fist0
Gitdevops~15 mins

Shallow clones with depth in Git - Mini Project: Build & Apply

Choose your learning style10 modes available
Shallow clones with depth
📖 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

  1. Step 1: Understand the purpose of --depth

    The --depth option limits the number of commits cloned, creating a shallow copy.
  2. Step 2: Compare with other clone types

    Unlike a full clone, a shallow clone saves time and space by copying recent commits only.
  3. Final Answer:

    It creates a shallow clone with limited commit history. -> Option C
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    git clone --depth=5 https://example.com/repo.git -> Option A
  4. 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

  1. Step 1: Understand shallow clone effect on history

    Using --depth 2 clones only the last 2 commits, so git log shows those.
  2. Step 2: Analyze git log --oneline output

    This command lists commits in short form, limited to the shallow clone's depth.
  3. Final Answer:

    Shows only the last 2 commits in the log. -> Option D
  4. 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

  1. Step 1: Understand how to convert shallow clone to full

    Inside the shallow clone, running git fetch --unshallow downloads the full commit history.
  2. 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.
  3. Final Answer:

    Run git fetch --unshallow inside the cloned repo. -> Option A
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    git clone --depth 10 --single-branch --branch main https://example.com/repo.git -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard