Q: You have local changes in your working directory that you don't want anymore. How do you discard them, and what's the difference between discarding tracked vs untracked changes?
Different commands for different states — and one of them is destructive, so know which:
#Git #Undo, Recovery & History Rewriting #L1 #Version Control #Collaboration #Terraform State
🎙️ Candidate Opening & Architectural Context
""In a fast-paced team with dozens of pull requests merged daily, Git workflow hygiene was critical. The interviewer is testing: Understanding of the working tree, staging area, and untracked files.. I structure my answer around systematic triage first, root cause analysis second, and permanent remediation third.""
Advertisement
🛠️ Production Runbook & Step-by-Step Resolution
1️⃣
Initial Diagnostics & Root Cause Analysis
Different commands for different states — and one of them is destructive, so know which:
- Modified tracked files (not staged):
git restore(or older syntaxgit checkout --) reverts the file to what's inHEAD. - Staged changes:
git restore --stagedunstages, leaving the modification in the working tree. Add anothergit restoreto discard it too. - Untracked (new) files:
git restorewon't touch them — Git doesn't know they exist. Usegit clean -fdto delete them. Rungit clean -ndfirst to preview what will be deleted.
2️⃣
Remediation & Permanent Safeguards
These are destructive — there's no undo for working-tree changes that were never committed. When unsure, git stash first; you can drop the stash later if you don't need it.
- Nuke everything back to a clean checkout:
git reset --hard HEAD && git clean -fd.
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Modified tracked files (not staged): git restore (or older syntax git checkout -- ) reverts the file to what's in HEAD.."
⚡ 60-Second Elevator Pitch Talking Points
- Modified tracked files (not staged): git restore (or older syntax git checkout -- ) reverts the ...
- Staged changes: git restore --staged unstages, leaving the modification in the working tree. Add...
- Untracked (new) files: git restore won't touch them — Git doesn't know they exist. Use git clean ...
Advertisement