⚡ ~/naveed Interview Prep
⚡ Portfolio Home ✍️ Engineering Blog Deep Dives 🎯 Interview Hub 998+ Scenarios ☸️ Kubernetes Mastery Hub 24 Modules 🎮 DevOps Arcade & Quizzes Subnet Blitz ⚡ 🗺️ DevOps Roadmaps PDFs & Guides 🤖 Morpheus Analysis AI Quant ↗ 🛠️ Developer Tools Utilities 🧪 Labs & Experiments 📄 Interactive CV & Certs 🔗 All Links & Socials ⚡ Join The Dispatch (Weekly SRE Newsletter) →
Junior / Associate DevOps [L1] Git From your main checkout (on feature/new-api): Core Fundamentals [L1]

Q: What is a `.gitkeep` file, and why do you sometimes see empty files with that name committed to repos?

Git does not track empty directories. If you create logs/ with nothing in it and run git add logs/, nothing happens — Git has nothing to ...

#Git #From your main checkout (on feature/new-api): #L1 #Version Control #Collaboration
🎙️ Candidate Opening & Architectural Context
""Git is an immutable directed acyclic graph (DAG); knowing commands like git reflog means you never truly lose commits. The interviewer is testing: Understanding that Git tracks content, not directories.. 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

Git does not track empty directories. If you create logs/ with nothing in it and run git add logs/, nothing happens — Git has nothing to track because the directory has no files.

  • Ensuring a tmp/, logs/, or uploads/ directory exists when someone clones the repo (the app expects the directory to exist at runtime).
  • Skeleton project templates where the directory structure matters.
2️⃣

Remediation & Permanent Safeguards

.gitkeep is a convention (not a Git feature) — it's an empty file placed inside an otherwise-empty directory so Git will track the directory. The name .gitkeep is arbitrary; you could use .placeholder or any filename. .gitkeep is just the community convention. Common use cases: If the directory should exist but its *contents* should be ignored (e.g., logs/ should be present but log files shouldn't be committed), combine both: This ignores everything inside logs/ except the .gitkeep file, preserving the directory.

# .gitignore
logs/*
!logs/.gitkeep
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Ensuring a tmp/, logs/, or uploads/ directory exists when someone clones the repo (the app expects the directory to exist at runti."
⚡ 60-Second Elevator Pitch Talking Points
  • Ensuring a tmp/, logs/, or uploads/ directory exists when someone clones the repo (the app expect...
  • Skeleton project templates where the directory structure matters.
Advertisement
Want more Git scenarios?
Explore our complete collection of scenario-based Git interview runbooks.
Browse All Git Questions →

📚 Related Production Scenarios in Git