Bird
Raised Fist0
Linux CLIscripting~20 mins

Repository management in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Repository Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of listing all configured remote repositories?
You run the command git remote -v in a repository with two remotes named origin and upstream. What is the expected output?
Linux CLI
git remote -v
Aremote origin https://github.com/user/repo.git\nremote upstream https://github.com/other/repo.git
Borigin https://github.com/user/repo.git\nupstream https://github.com/other/repo.git
Cfetch origin https://github.com/user/repo.git\npush origin https://github.com/user/repo.git\nfetch upstream https://github.com/other/repo.git\npush upstream https://github.com/other/repo.git
Dorigin https://github.com/user/repo.git (fetch)\norigin https://github.com/user/repo.git (push)\nupstream https://github.com/other/repo.git (fetch)\nupstream https://github.com/other/repo.git (push)
Attempts:
2 left
💡 Hint
The -v option shows URLs for fetch and push separately.
💻 Command Output
intermediate
2:00remaining
What is the output of adding a new remote repository?
You run git remote add backup https://example.com/backup.git in your repository. Then you run git remote. What is the output?
Linux CLI
git remote
Aorigin\nbackup
Bbackup
Corigin https://github.com/user/repo.git\nbackup https://example.com/backup.git
Dremote origin\nremote backup
Attempts:
2 left
💡 Hint
The git remote command lists remote names only.
🔧 Debug
advanced
2:00remaining
Why does this command fail to clone a repository?
You run git clone git@github.com:user/repo.git but get an error: Permission denied (publickey). What is the most likely cause?
Linux CLI
git clone git@github.com:user/repo.git
ASSH keys are not set up or not added to the SSH agent
BThe repository URL is incorrect and should use HTTPS
CYou need to run the command with sudo
DGit is not installed on the system
Attempts:
2 left
💡 Hint
The error mentions Permission denied (publickey) which relates to SSH authentication.
💻 Command Output
advanced
2:00remaining
What is the output of listing all branches including remote ones?
You run git branch -a in a repository with local branches main, dev and remote branches origin/main, origin/feature. What is the output?
Linux CLI
git branch -a
A* main\n dev\n origin/main\n origin/feature
Bmain\ndev\norigin/main\norigin/feature
C* main\n dev\n remotes/origin/main\n remotes/origin/feature
D* main\n dev
Attempts:
2 left
💡 Hint
The -a option shows local and remote branches with the remotes/ prefix.
🧠 Conceptual
expert
2:00remaining
What happens when you run git fetch --prune?
You run git fetch --prune in a repository. What is the effect of the --prune option?
AIt deletes all untracked files in the working directory
BIt removes remote-tracking references that no longer exist on the remote
CIt deletes local branches that have been merged
DIt resets the current branch to match the remote branch
Attempts:
2 left
💡 Hint
Pruning cleans up references to remote branches that were deleted.

Practice

(1/5)
1. What is the purpose of the git init command in repository management?
easy
A. To add files to the staging area
B. To check the status of the repository
C. To upload changes to a remote repository
D. To create a new Git repository in the current directory

Solution

  1. Step 1: Understand the role of git init

    This command sets up a new Git repository by creating necessary files and folders in the current directory.
  2. Step 2: Differentiate from other commands

    git add stages files, git push uploads changes, and git status shows repository state, so they do not create a repository.
  3. Final Answer:

    To create a new Git repository in the current directory -> Option D
  4. Quick Check:

    git init creates repo [OK]
Hint: Remember: init means start a new repo [OK]
Common Mistakes:
  • Confusing git init with git add
  • Thinking git init uploads files
  • Using git init to check status
2. Which of the following is the correct syntax to add all changed files to the staging area in Git?
easy
A. git add .
B. git add *
C. git add -all
D. git add --commit

Solution

  1. Step 1: Identify the command to stage all changes

    git add . stages all changes in the current directory and subdirectories.
  2. Step 2: Check other options for correctness

    git add * may not include hidden files, git add -all is invalid, and git add --commit is not a valid option.
  3. Final Answer:

    git add . -> Option A
  4. Quick Check:

    git add . stages all files [OK]
Hint: Use dot (.) to add all files in current folder [OK]
Common Mistakes:
  • Using git add * which misses hidden files
  • Typing invalid options like -all
  • Confusing git add with commit commands
3. What will be the output of the command git status immediately after running git init in a new directory?
medium
A. fatal: not a git repository (or any of the parent directories): .git
B. On branch main nothing to commit, working tree clean
C. On branch main No commits yet nothing to commit (create/copy files and use "git add" to track)
D. On branch master nothing to commit, working tree clean

Solution

  1. Step 1: Understand initial state after git init

    After initializing, the repository has no commits yet, so git status shows "No commits yet" and instructions to add files.
  2. Step 2: Check branch name and messages

    Modern Git uses "main" as default branch, and the message includes "nothing to commit (create/copy files and use \"git add\" to track)".
  3. Final Answer:

    On branch main No commits yet nothing to commit (create/copy files and use "git add" to track) -> Option C
  4. Quick Check:

    New repo status shows no commits yet [OK]
Hint: New repo shows 'No commits yet' on main branch [OK]
Common Mistakes:
  • Expecting 'master' branch instead of 'main'
  • Thinking working tree is clean immediately
  • Confusing error message with valid status
4. You ran git commit -m "Initial commit" but got the error: nothing to commit, working tree clean. What is the most likely cause?
medium
A. The repository is not initialized
B. You forgot to run git add to stage files before committing
C. The commit message is missing quotes
D. You need to run git push first

Solution

  1. Step 1: Analyze the error message meaning

    The message means there are no staged changes to commit, so Git has nothing to save.
  2. Step 2: Identify missing step before commit

    Files must be staged using git add before committing; skipping this causes the error.
  3. Final Answer:

    You forgot to run git add to stage files before committing -> Option B
  4. Quick Check:

    Stage files before commit [OK]
Hint: Always add files before commit [OK]
Common Mistakes:
  • Trying to push before committing
  • Ignoring the need to stage files
  • Assuming commit message syntax error
5. You cloned a repository and want to update your local copy with the latest changes from the remote. Which sequence of commands correctly achieves this?
hard
A. git fetch origin; git merge origin/main
B. git pull origin main; git add .
C. git push origin main; git commit -m "update"
D. git clone origin; git commit -m "update"

Solution

  1. Step 1: Understand how to update local repo from remote

    git fetch origin downloads changes from remote without merging, then git merge origin/main applies those changes to your current branch.
  2. Step 2: Check other options for correctness

    git pull origin main combines fetch and merge but git add . after pull is unnecessary; git push uploads changes, not updates; git clone is for initial copy, not update.
  3. Final Answer:

    git fetch origin; git merge origin/main -> Option A
  4. Quick Check:

    Fetch then merge updates local repo [OK]
Hint: Fetch then merge to update local repo safely [OK]
Common Mistakes:
  • Using push instead of pull to update
  • Running add after pull unnecessarily
  • Trying to clone again to update
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