Skip to content

Лекція 43. Навіщо існує контроль версій і що таке Git

Лекція 43. Навіщо існує контроль версій і що таке Git

Section titled “Лекція 43. Навіщо існує контроль версій і що таке Git”

Рівень 8: Хранитель історії коду

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • зрозуміти проблему версій файлів
  • познайомитися з repository і commit
  • створити локальний Git-репозиторій

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо знання про файли з лекції 17, щоб зрозуміти, навіщо існує контроль версій Git.

final_final_REAL.py — сигнал, що потрібна машина часу

Section titled “final_final_REAL.py — сигнал, що потрібна машина часу”

Коли проєкт росте, копії game.py, game2.py, game_final.py, game_final_really.py перестають бути зручною історією. Незрозуміло, що змінилося, хто це зробив і до якої версії повертатися.

Version control system зберігає історію змін структуровано. Git — одна з найпопулярніших таких систем.

Repository — проєкт плюс історія

Section titled “Repository — проєкт плюс історія”

Git-репозиторій містить робочі файли та службові дані Git про історію. git init створює в поточній папці прихований каталог .git.

Не видаляй .git, якщо хочеш зберегти історію репозиторію.

Commit — контрольна точка з поясненням

Section titled “Commit — контрольна точка з поясненням”

Commit можна уявити як збереження гри з коментарем: «додав меню». Він фіксує стан вибраних змін і має автора, час, повідомлення та унікальний ідентифікатор.

Git не робить commit автоматично після кожного натискання клавіші. Ти сам вирішуєш, коли зміна стала логічною контрольної точкою.

Замість десяти копій Python-файлу можна мати один робочий файл і послідовність commits.

git status — приладова панель: показує стан робочого дерева й підказує, що Git бачить.

Git працює локально. Для git init, git add, git commit GitHub та Internet не потрібні.

Git-лабораторія: створюємо машину часу

Section titled “Git-лабораторія: створюємо машину часу”
Terminal window
mkdir -p ~/marko-lab/git-time-machine
cd ~/marko-lab/git-time-machine
printf 'print("Version 1")
' > app.py
git init
git status

Подивися також:

Terminal window
ls -a

Там з’явиться .git.

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. створи репозиторій лабораторії
  2. знайди .git через ls -a
  3. запусти git status і прочитай повідомлення про app.py
  4. намалюй аналогію «проєкт → save point → історія»
  5. поясни різницю між Git і просто папкою з копіями файлів
  • Що таке version control?
  • Що створює git init?
  • Що таке repository?
  • Що таке commit?
  • Чи потрібен GitHub для локального Git?
  • Version control system — система для збереження та організації історії змін.
  • Git — найпоширений інструмент контролю версій.
  • Репозиторій (repository) — проєкт плюс його збережена історія.
  • .git — прихований каталог, де Git зберігає службові дані.
  • Commit — контрольна точка змін з автором, часом, повідомленням і унікальним ідентифікатором.
  • git init — команда, що створює Git-репозиторій у поточній папці.
  • git status — показує стан робочого дерева й підказує наступні кроки.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити, що таке система контролю версій та Git?
  • Чи знаєш ти, що таке репозиторій та коміт?
  • Чи розумієш ти, навіщо потрібен Git для відстеження змін у коді?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • Git зберігає історію проєкту структуровано
  • репозиторій має службову історію в .git
  • commit — усвідомлена контрольна точка, а не автоматична копія кожної миті

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.