Repository (committed history) in Git - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When working with a git repository, it's important to understand how the time to access committed history changes as the repository grows.
We want to know how the cost of viewing or searching commits grows when more commits are added.
Analyze the time complexity of the following git command.
git log --oneline
This command lists all commits in the repository in a short form, showing the commit history.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Reading each commit object in the history one by one.
- How many times: Once for every commit in the repository.
As the number of commits increases, the time to list them grows proportionally.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 commits | 10 operations (reading each commit) |
| 100 commits | 100 operations |
| 1000 commits | 1000 operations |
Pattern observation: The time grows linearly as the number of commits increases.
Time Complexity: O(n)
This means the time to list commits grows directly with the number of commits in the repository.
[X] Wrong: "Listing commits is always fast no matter how many commits exist."
[OK] Correct: Each commit must be read and shown, so more commits mean more work and longer time.
Understanding how git commands scale with repository size helps you work efficiently and explain your reasoning clearly in technical discussions.
"What if we used a command to show only the last 10 commits? How would the time complexity change?"
Practice
git log command show in a Git repository?Solution
Step 1: Understand the purpose of
Thegit loggit logcommand is designed to show the commit history of the repository, listing all saved changes.Step 2: Differentiate from other commands
Commands likegit statusshow file changes,git branchshows branches, andgit remote -vshows remote URLs, not commit history.Final Answer:
A list of all commits made in the repository history -> Option AQuick Check:
Commit history = git log output [OK]
- Confusing git log with git status
- Thinking git log shows branches
- Mixing git log with remote info commands
Solution
Step 1: Identify the correct flag for short commit view
The--onelineoption withgit logshows each commit in a single line summary.Step 2: Verify other options are incorrect
git log --shortis invalid,git show --summaryshows details of one commit, andgit status --onelineis invalid syntax.Final Answer:
git log --oneline -> Option BQuick Check:
Short commit list = git log --oneline [OK]
- Using invalid flags like --short
- Confusing git show with git log
- Trying to use git status for commit history
git log --oneline:
f3a1b2c Fix typo in README 9d8e7f6 Add new feature X 4b3c2d1 Initial commitWhat is the hash of the commit that added the new feature?
Solution
Step 1: Read the commit messages and hashes
The commit message "Add new feature X" corresponds to the hash9d8e7f6.Step 2: Match the message to the correct hash
Each line shows the hash first, then the message. So the hash for adding the feature is9d8e7f6.Final Answer:
9d8e7f6 -> Option AQuick Check:
Commit message matches hash 9d8e7f6 [OK]
- Picking the wrong hash for the message
- Thinking hashes are at the end
- Assuming output is incomplete
git log --oneline but got an error: error: unknown option `--oneline'. What is the most likely cause?Solution
Step 1: Understand the error message
The error says the option--onelineis unknown, meaning Git does not recognize it.Step 2: Identify the cause
This usually happens if the Git version is old and does not support the--onelineflag.Final Answer:
Your Git version is too old and does not support --oneline -> Option DQuick Check:
Unknown option error = outdated Git version [OK]
- Assuming wrong folder causes option error
- Thinking fetch fixes option errors
- Adding unrelated flags to fix syntax
Solution
Step 1: Identify the correct option to limit commits
The-n 3or--max-count=3option limits the number of commits shown.Step 2: Combine with
Using--onelinefor short outputgit log --oneline -n 3shows the last 3 commits in one-line format.Step 3: Check other options for correctness
--3is invalid,--last 3and--limit=3are not valid git log options.Final Answer:
git log --oneline -n 3 -> Option CQuick Check:
Limit commits with -n, short view with --oneline [OK]
- Using invalid flags like --last or --limit
- Trying --3 which is invalid
- Mixing order of options incorrectly
