# Everyday Git ## The commands you'll actually use constantly Module 2 gave you the model. This module gives you the six commands that make up the vast majority of real, everyday Git usage. ## `git init` — start tracking a project ``` $ git init ``` Creates a new, empty repository in the current directory (a hidden `.git` folder holds everything). You only run this ONCE per project, at the very beginning. ## `git status` — where do things stand right now? Shows what's staged, what's modified-but-unstaged, and what's untracked — the single most useful command for orienting yourself, and one you'll run constantly, almost reflexively, before and after almost every other Git command. ## `git add` — stage a change ``` $ git add file.txt # stage one specific file $ git add . # stage everything currently changed ``` ## `git commit` — permanently record what's staged ``` $ git commit -m "Add configuration loader" ``` A good commit message describes WHAT changed and, ideally, WHY — future-you (or a teammate) reading `git log` months later should understand the change without re-reading the entire diff. ## `git log` — see the history ``` $ git log --oneline a1b2c3d Add configuration loader 9f8e7d6 Initial commit ``` ## `git diff` — see exactly what changed, before you commit it ``` $ git diff # unstaged changes vs. the last commit $ git diff --staged # staged changes vs. the last commit ``` Reading your own diff before committing is one of the highest-value habits in this entire course — catching an accidental leftover debug line, or a change you didn't mean to include, BEFORE it becomes a permanent part of history. ## Instructor Notes **Lesson goal:** Convert Module 2's model into the six commands used in nearly every real Git session — this is the fluency floor for everything that follows in ROOT 03. **Approximate timing:** 15 minutes read; 10 minutes live. **Common misconception to watch for:** treating `git add .` as always safe — it stages EVERYTHING changed, including files you might not have intended to include; `git status` before `git add .` is the habit that prevents this. **Demo idea:** run the full init→status→add→commit→log→diff sequence live, narrating `git status`'s changing output at each step.