Модуль 9 · урок 4 з 9
Цикл роботи
Цикл роботи — послідовність команд, яку ти повторюватимеш щодня. За кілька тижнів вона стає рефлексом, але спочатку варто мати її перед очима: більшість проблем із Git беруться саме з порушення порядку.
Повний цикл
# 1. взяти свіжу основу
git switch main
git pull
# 2. створити гілку під задачу
git switch -c feature/12-status-filter
# 3. працювати, комітячи маленькими кроками
git add src/app/features/tasks/task-filters.ts
git commit -m "feat(tasks): add status filter control"
git add src/app/core/store/task.store.ts
git commit -m "feat(tasks): apply status filter in store"
# 4. підтягнути зміни з main, якщо гілка живе довго
git fetch origin
git rebase origin/main
# 5. відправити
git push -u origin feature/12-status-filter
# 6. створити PR, пройти рев'ю, вмерджити
# 7. прибрати за собою
git switch main
git pull
git branch -d feature/12-status-filter
Що комітити разом
- Додав компонент фільтра з його стилями й шаблоном.
- Підключив фільтр до стору.
- Додав тест на фільтрацію.
- Виправив назву поля в моделі й усі місця використання.
- Один коміт на весь день роботи.
- Коміт на кожне збереження файлу.
- Рефакторинг і нова фіча в одному коміті.
git add -Aбез перегляду того, що потрапляє.
git add -A зручний і небезпечний: разом із кодом легко відправити
.env, тимчасові файли, папку з ключами. Звичка спершу глянути
git status, а краще git diff --staged перед комітом —
коштує пʼять секунд і рятує від видалення репозиторію заднім числом.
Виправити останній коміт
git commit --amend # змінити повідомлення або додати файли
git commit --amend --no-edit # додати забутий файл, лишивши текст
Працює лише для того, що ще не відправлено. Після push зміна історії
вимагатиме --force, а це вже інша розмова — про неї в уроці про конфлікти.
Тимчасово відкласти зміни
git stash # сховати незакомічені зміни
git stash list
git stash pop # повернути й прибрати зі списку
git stash apply # повернути, лишивши в списку
Класичний сценарій: ти посеред роботи, і тут терміново треба щось подивитись в іншій гілці.
stash дозволяє перемкнутись, не роблячи коміт «wip».
Squash чи merge commit
| Squash | Merge commit | |
|---|---|---|
| Що потрапляє в main | Один коміт на весь PR | Усі коміти гілки плюс коміт злиття |
| Історія main | Пряма, один рядок на задачу | Повна, з усіма кроками |
| Коли зручно | Гілка з проміжними «wip»-комітами | Коли кожен коміт осмислений |
| Пошук причини бага | Простіше знайти PR | Простіше знайти точний коміт |
На більшості команд обирають squash: історія main лишається читабельною,
а деталі при потребі знаходяться в PR. Але це командна домовленість — і саме таке питання
варто поставити ліду на початку роботи.
Пʼять команд, які рятують
git status # що взагалі відбувається
git log --oneline -10 # останні коміти коротко
git diff # що змінено й не додано
git diff --staged # що піде в коміт
git restore src/file.ts # скасувати зміни у файлі
git restore --staged file.ts # прибрати з індексу, лишивши зміни