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
Explore git log formatting options
📖 Scenario: You are working on a project with a Git repository. You want to see the commit history in a clear and customized way to understand changes better.
🎯 Goal: Learn how to use git log with formatting options to display commit history with specific details.
📋 What You'll Learn
Use git log command
Format commit logs with --pretty=format: option
Display commit hash, author name, date, and commit message in a custom format
💡 Why This Matters
🌍 Real World
Developers often need to review commit history clearly to understand changes and authorship.
💼 Career
Knowing how to customize git log output is useful for code reviews, debugging, and reporting in software development jobs.
Progress0 / 4 steps
1
Initialize a Git repository and make commits
Create a new Git repository and make two commits with messages "First commit" and "Second commit".
Git
Hint
Use git init to start a repo, then create a file and commit twice with the exact messages.
2
Set a custom format string for git log
Create a variable called format_string and set it to "%h - %an, %ar : %s" to show short commit hash, author name, relative date, and commit message.
Git
Hint
Assign the exact string "%h - %an, %ar : %s" to format_string.
3
Use git log with the custom format string
Use the command git log --pretty=format:"$format_string" to display the commit history with the custom format.
Git
Hint
Use git log --pretty=format:"$format_string" exactly to show commits.
4
Display the formatted git log output
Run the command to display the commit history with the custom format and observe the output.
Git
Hint
The output should show two lines with short hashes, author names, relative dates, and commit messages.
Practice
(1/5)
1. What does the %h placeholder represent in git log --pretty=format:"%h %s"?
easy
A. Author name
B. Abbreviated commit hash
C. Commit date
D. Full commit message
Solution
Step 1: Understand %h in git log format
The placeholder %h stands for the abbreviated commit hash, a short version of the commit ID.
Step 2: Compare with other placeholders
%an is author name, %cd is commit date, and %s is the commit message. So %h is unique for the commit hash.
Final Answer:
Abbreviated commit hash -> Option B
Quick Check:
Commit hash short form [OK]
Hint: Remember: %h = short hash, %an = author name [OK]
Common Mistakes:
Confusing %h with %an (author name)
Thinking %h shows full commit message
Mixing %h with commit date placeholder
2. Which of the following is the correct syntax to show the author name followed by commit message using git log --pretty=format?
easy
A. git log --pretty=format:"%an %s"
B. git log --pretty=format:"%s %an"
C. git log --pretty=format:"%author %message"
D. git log --pretty=format:"%name %subject"
Solution
Step 1: Identify correct placeholders for author and message
The correct placeholders are %an for author name and %s for commit message.
Step 2: Check syntax correctness
git log --pretty=format:"%an %s" uses %an %s which is valid. Options A and C use invalid placeholders. git log --pretty=format:"%s %an" reverses order but is still valid syntax, but question asks for author then message.
Final Answer:
git log --pretty=format:"%an %s" -> Option A
Quick Check:
Author then message [OK]
Hint: Use %an for author, %s for message in format string [OK]
Common Mistakes:
Using invalid placeholders like %author or %message
Swapping order when question specifies author first
Missing quotes around format string
3. What will be the output of this command if the latest commit hash is abc1234, author is Jane, and message is Fix bug?
git log -1 --pretty=format:"%h - %an: %s"
medium
A. Fix bug - Jane: abc1234
B. abc1234 Jane Fix bug
C. Jane - abc1234: Fix bug
D. abc1234 - Jane: Fix bug
Solution
Step 1: Understand placeholders in format string
The format string is %h - %an: %s. %h is abbreviated hash, %an is author name, %s is commit message.
Step 2: Substitute given values
Replacing placeholders: %h = abc1234, %an = Jane, %s = Fix bug. So output is "abc1234 - Jane: Fix bug".
Final Answer:
abc1234 - Jane: Fix bug -> Option D
Quick Check:
Format placeholders replaced correctly [OK]
Hint: Match placeholders to values exactly in order [OK]
Common Mistakes:
Mixing order of placeholders and values
Ignoring separators like '-' and ':'
Confusing full hash with abbreviated hash
4. You run git log --pretty=format:"%h %an %msg" but get an error. What is the problem?
medium
A. The placeholder %msg is invalid
B. Missing quotes around format string
C. Using %h and %an together is not allowed
D. Command needs --oneline option
Solution
Step 1: Identify invalid placeholder
The placeholder %msg does not exist in git log formatting. The correct placeholder for commit message is %s.
Step 2: Check other parts of command
Quotes are present, and using %h and %an together is valid. The --oneline option is optional and unrelated to this error.
Final Answer:
The placeholder %msg is invalid -> Option A
Quick Check:
Invalid placeholder causes error [OK]
Hint: Use %s for message, not %msg [OK]
Common Mistakes:
Typing %msg instead of %s
Forgetting quotes around format string
Assuming --oneline is required for formatting
5. You want to list commits showing only the abbreviated hash, author email, and commit date in ISO format. Which command achieves this?
hard
A. git log --pretty=format:"%h %an %cd" --date=short
B. git log --pretty=format:"%H %ae %cd" --date=iso
C. git log --pretty=format:"%h %ae %cd" --date=iso
D. git log --pretty=format:"%h %ae %cd" --date=relative
Solution
Step 1: Identify placeholders for required info
%h is abbreviated hash, %ae is author email, %cd is commit date.
Step 2: Choose correct date format option
--date=iso shows date in ISO 8601 format, which matches requirement.
Step 3: Verify options
git log --pretty=format:"%h %ae %cd" --date=iso matches all requirements. git log --pretty=format:"%h %an %cd" --date=short uses %an (author name) and short date, not email or ISO. git log --pretty=format:"%H %ae %cd" --date=iso uses %H (full hash), not abbreviated. git log --pretty=format:"%h %ae %cd" --date=relative uses relative date format, not ISO.
Final Answer:
git log --pretty=format:"%h %ae %cd" --date=iso -> Option C
Quick Check:
Abbreviated hash, email, ISO date [OK]
Hint: Use %ae for email and --date=iso for ISO date format [OK]