Лекція 44. Як Git бачить зміни: working tree, staging area, commit
Лекція 44. Як Git бачить зміни: working tree, staging area, commit
Section titled “Лекція 44. Як Git бачить зміни: working tree, staging area, commit”Рівень 8: Хранитель історії коду
Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.
Що ми сьогодні розкриємо
Section titled “Що ми сьогодні розкриємо”- зрозуміти три основні стани змін
- користуватися
git add,git status,git commit,git log - робити маленькі логічні commits
Зв’язок з попередніми лекціями
Section titled “Зв’язок з попередніми лекціями”У цій лекції ми використаємо поняття repository та commit із лекції 43, щоб навчитися працювати зі змінами в Git.
Working tree — твій робочий стіл
Section titled “Working tree — твій робочий стіл”Ти редагуєш файли у звичайній папці. Це working tree. Git помічає, що вони нові або змінені, але ще не означає, що зміни потраплять до наступного commit.
Staging area — коробка «це беру в наступне збереження»
Section titled “Staging area — коробка «це беру в наступне збереження»”git add file додає поточну версію змін до staging area. Це як покласти вибрані LEGO-деталі у коробку перед фотографуванням конструкції.
Якщо після git add ще раз змінити файл, Git може одночасно мати staged-версію та нові unstaged-зміни. Тому git status — наш найкращий друг.
Commit записує staged-зміни в історію
Section titled “Commit записує staged-зміни в історію”git commit -m "message" створює commit із тим, що було підготовлено. Хороше повідомлення коротко пояснює логічну зміну: Add greeting краще за stuff.
graph LR
WT["Working tree
Твої файли"]
SA["Staging area
Підготовані зміни"]
C["Commit
Збережена точка"]
LOG["Git log
Історія"]
WT -->|"git add"| SA
SA -->|"git commit"| C
C -->|"Додається до"| LOG
WT -.->|"git diff
Показує зміни"| WT
SA -.->|"git status
Що staged?"| SA
style WT fill:#fff3e0
style SA fill:#f3e5f5
style C fill:#e8f5e9
style LOG fill:#e1f5fe
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”git add app.py не відправляє файл у GitHub і не створює commit. Воно готує зміни локально.
Приклад 2
Section titled “Приклад 2”git log --oneline показує коротку історію commits.
Приклад 3
Section titled “Приклад 3”Звичка: редагуй → git status → git diff → git add → git status → git commit.
Git-лабораторія: перший commit
Section titled “Git-лабораторія: перший commit”У репозиторії з лекції 43. Якщо Git ще не має імені автора, разом із дорослим налаштуйте локально для цього репозиторію, наприклад:
git config user.name "Marko"git config user.email "privacy-friendly-address@example.invalid"Для реального GitHub пізніше використовуйте privacy-friendly адресу, яку надає GitHub, або іншу адресу, яку дорослий свідомо обрав.
Далі:
git statusgit add app.pygit statusgit commit -m "Add first Python program"git log --onelineМісія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- зроби перший commit
app.py - зміни текст на
Version 2 - виконай
git diffдоgit add - підготуй зміну через
git addі ще раз перевірgit status - створи другий commit і переглянь два рядки в
git log --oneline
Перевір себе
Section titled “Перевір себе”- Що таке working tree?
- Що робить
git add? - Що потрапляє в commit?
- Що показує
git status? - Навіщо маленькі зрозумілі commit messages?
Терміни однією фразою
Section titled “Терміни однією фразою”- Working tree — робоча папка з файлами, де ти редагуєш.
- Staging area — підготовлений набір змін перед наступним commit.
git add— додає поточну версію змін до staging area.git commit— зберігає staged-зміни в історію.git log --oneline— показує короткий список commits.git status— показує стан working tree та staging area.git diff— показує різницю між версіями.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити різницю між working tree, staging area та комітом?
- Чи вмієш ти використовувати
git add,git commitтаgit log? - Чи розумієш ти, як Git зберігає історію змін?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- Git дозволяє вибирати, які зміни ввійдуть у наступну контрольну точку
- staging area стоїть між робочими файлами й commit
git statusіgit diffдопомагають не діяти наосліп
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.