Модуль 10 · Урок 37
Commits, branches і reviewable changesets
Git для QA — це не «зберегти файли», а створити точний, перевірений і відтворюваний changeset: знати стан working tree/index/HEAD, прочитати diff і прив’язати commit до risk та evidence.
Три стани змін
Working tree містить поточні файли, index (staging area) — snapshot, підготовлений до наступного commit, HEAD — поточний checked-out commit. `git status` показує tracked/untracked і різницю між цими станами; `git diff` читає unstaged changes, `git diff –cached` — staged changes.
`git add` — не просто «додати файл»
Команда переносить поточний file content у index. Після подальшого редагування staged і unstaged версії одного файла можуть відрізнятися.
Atomic changeset
Один commit має одну пояснювану мету, мінімальний scope і власний verification. Не змішуйте feature, formatting, dependency upgrade і випадкові generated files. Перед commit звірте status, unstaged diff, staged diff, whitespace check, tests і відсутність secrets/PII.
| Gate | QA питання |
|---|---|
| Scope | Кожний staged path потрібен requirement/defect? |
| Behavior | Diff змінює саме intended rule та failure paths? |
| Evidence | Tests і manual observations відповідають exact staged snapshot? |
| Safety | Немає `.env`, ключів, dumps, customer data чи випадкових binaries? |
Branches — pointers, не копії repository
Branch вказує на commit; HEAD вказує на поточну branch/commit. `git switch -c topic` створює topic branch. Switching змінює working tree під target commit і може бути заблокований, якщо local changes конфліктують. Перед switch зафіксуйте status і не ховайте незрозумілі зміни blanket stash/commit.
Практика
У disposable repository виконайте `git-safe-command-lab.md`, заповніть `commit-plan.csv` і `changeset-review.csv`. Commit SHA, staged diff і test result мають описувати один і той самий snapshot.
Ігнорування не видаляє history
`.gitignore` впливає на untracked paths, але не прибирає вже tracked secret або попередні commits. Якщо секрет потрапив у history — зупиніться, revoke/rotate його та дійте за incident process; не маскуйте проблему новим ignore rule.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.