Модуль 7 · Урок 26

Branches, merge і conflicts

Branch — movable pointer на commit, не копія всього проєкту. Topic branch із чистим scope дозволяє перевірити graph і diff до інтеграції. Conflict — не команда «обрати ours/theirs», а вимога зрозуміти обидва intent і створити один коректний результат.

Commit graphTopic branchThree-way mergeConflict evidence

Branch workflow

git status
git switch main
git switch -c feat/reading-status
# edit, verify, add, commit
git log --graph --oneline --decorate --all
git switch main
git merge feat/reading-status

switch -c створює pointer від поточного commit і перемикає HEAD. Fast-forward лише пересуває base pointer, якщо divergence немає; true merge знаходить common ancestor і поєднує дві histories.

Conflict resolution як контрольований процес

1 · StatusНазвіть unmerged paths і merge state.
2 · IntentПорівняйте common ancestor, ours і theirs.
3 · ResolveПриберіть markers і сформуйте один expected behavior.
4 · VerifyDiff, tests, browser/keyboard checks.
5 · Stagegit add PATH позначає resolved version.
6 · FinishCommit/continue і повторний graph/status.

Якщо merge треба почати заново, спершу перевірте local changes, потім git merge --abort. Не використовуйте reset --hard як універсальну кнопку: він може знищити незбережену роботу.

Практика

Використайте base/ours/theirs у lab, поясніть різницю intent і запишіть resolved behavior. Acceptance: немає markers, status не має unmerged paths, checks пройдені, graph і commit message пояснюють інтеграцію.

Офіційні джерела

Практична перевірка · урок 26 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що таке Git branch?
2. Що означає HEAD у звичайному branch checkout?
3. Що робить git switch -c feat/x?