Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the git add command do?
It moves changes in your files into the staging area, preparing them to be saved in the next commit.
Click to reveal answer
beginner
How do you stage a single file named index.html?
Use the command git add index.html to stage that specific file.
Click to reveal answer
intermediate
What is the difference between git add . and git add -A?
git add . stages new and modified files in the current directory and below, but not deletions. git add -A stages all changes including deletions everywhere.
Click to reveal answer
intermediate
Can git add be used to stage parts of a file?
Yes, using git add -p lets you choose specific changes (hunks) inside files to stage.
Click to reveal answer
beginner
Why is staging files useful before committing?
Staging lets you control exactly which changes go into your next commit, helping keep commits clear and organized.
Click to reveal answer
What does git add do?
AMoves changes to the staging area
BDeletes files from the repository
CCommits changes to the repository
DCreates a new branch
✗ Incorrect
git add prepares changes by moving them to the staging area before committing.
Which command stages all changes including deletions?
Agit add .
Bgit add -p
Cgit commit -a
Dgit add -A
✗ Incorrect
git add -A stages all changes including file deletions.
How do you stage only part of a file's changes?
Agit add .
Bgit add -p
Cgit commit -m
Dgit push
✗ Incorrect
git add -p lets you interactively select parts of changes to stage.
What happens if you run git add on a file that has no changes?
AIt does nothing
BIt stages the file anyway
CIt deletes the file
DIt commits the file
✗ Incorrect
If there are no changes, git add does nothing because there is nothing new to stage.
Why should you use staging before committing?
ATo delete files
BTo push changes to remote
CTo control which changes go into the commit
DTo create a new branch
✗ Incorrect
Staging lets you pick exactly what changes to include in your next commit.
Explain what the git add command does and why it is important in the Git workflow.
Think about how you prepare things before saving them permanently.
You got /3 concepts.
Describe the difference between git add . and git add -A.
One includes deletions, the other does not.
You got /2 concepts.
Practice
(1/5)
1. What does the git add command do in Git?
easy
A. It creates a new branch.
B. It stages changes to be included in the next commit.
C. It deletes files from the repository.
D. It permanently saves changes to the repository.
Solution
Step 1: Understand the purpose of git add
The git add command is used to stage changes, which means preparing files to be saved in the next commit.
Step 2: Differentiate from other Git commands
Unlike committing, which saves changes permanently, git add only marks files to be included in the next commit.
Final Answer:
It stages changes to be included in the next commit. -> Option B
2. Which of the following is the correct syntax to stage a single file named index.html?
easy
A. git stage index.html
B. git add -commit index.html
C. git commit index.html
D. git add index.html
Solution
Step 1: Recall the basic git add syntax
The correct command to stage a file is git add <filename>. Here, the filename is index.html.
Step 2: Identify incorrect options
Options A, B, and D use wrong commands or flags: -commit is invalid for git add, git stage is not a Git command, and git commit commits changes, not stages them.
Final Answer:
git add index.html -> Option D
Quick Check:
Stage single file = git add filename [OK]
Hint: Use 'git add filename' to stage one file [OK]
Common Mistakes:
Using 'git commit' instead of 'git add' to stage
Adding invalid flags like '-commit' with 'git add'
What will git status show about file1.txt and file2.txt?
medium
A. Both file1.txt and file2.txt are staged.
B. Both files are untracked.
C. file1.txt is staged; file2.txt is untracked.
D. file2.txt is staged; file1.txt is untracked.
Solution
Step 1: Analyze the commands executed
Two files are created: file1.txt and file2.txt. Then only file1.txt is staged using git add file1.txt.
Step 2: Understand git status output
git status will show file1.txt as staged (ready to commit) and file2.txt as untracked (not staged).
Final Answer:
file1.txt is staged; file2.txt is untracked. -> Option C
Quick Check:
Only added files are staged [OK]
Hint: Only files added with 'git add' are staged [OK]
Common Mistakes:
Assuming all new files are staged automatically
Confusing staged and untracked files
Thinking 'git add' stages all files without specifying
4. You run git add *.txt but get an error: fatal: pathspec '*.txt' did not match any files. What is the most likely cause?
medium
A. There are no files ending with .txt in the current directory.
B. You need to use git add --all instead.
C. The command should be git add '*.txt' with quotes.
D. Git does not support wildcards in git add.
Solution
Step 1: Understand the error message
The error says no files match '*.txt', meaning no files with .txt extension exist in the current folder.
Step 2: Evaluate other options
Using quotes (The command should be git add '*.txt' with quotes.) or --all (You need to use git add --all instead.) won't help if no matching files exist. Git does not support wildcards in git add. is incorrect because Git supports wildcards via shell expansion.
Final Answer:
There are no files ending with .txt in the current directory. -> Option A
Quick Check:
No matching files = error [OK]
Hint: Check if files exist before using wildcards [OK]
Common Mistakes:
Assuming Git handles wildcards internally
Using quotes that prevent shell expansion
Confusing git add --all with wildcard usage
5. You want to stage all modified and new files in your project except files in the logs/ folder. Which command correctly stages the files?
hard
A. git add . ':!logs/'
B. git add --all -- ':!logs/'
C. git add . && git reset --hard logs/
D. git add . && git rm -r --cached logs/
Solution
Step 1: Understand how to exclude a folder when staging
Git allows pathspec exclusions using :!folder/ syntax after the paths to add. So git add . ':!logs/' stages all except logs/.
Step 2: Analyze other options
git add --all -- ':!logs/' uses invalid syntax with --all -- ':!logs/'. git add . && git reset --hard logs/ uses git reset --hard which discards changes in the working directory of logs/, not just unstaging. git add . && git rm -r --cached logs/ removes logs/ from Git tracking, which is destructive.
Final Answer:
git add . ':!logs/' -> Option A
Quick Check:
Use pathspec exclusion ':!folder/' to skip files [OK]
Hint: Use ':!folder/' to exclude paths in git add [OK]