Життя до Git

Модуль 1Урок 2 з 53Безкоштовний модуль

До появи Git у 2005 році домінували централізовані системи: CVS, потім Subversion (SVN). Усі розробники підключалися до одного сервера — «джерела правди». Ви робили checkout, отримували копію, працювали локально, потім commit відправляв зміни назад на сервер. Поки зміни не на сервері — для команди їх начебто не існує.

Приклад

Централізована модель — як бібліотека з одним читальним залом. Книгу (файл) може тримати лише один відвідувач «офіційно»; інші чекають або працюють з ксерокопією, яка застаріває. Сервер росте, історія ускладнюється, а checkout великого проєкту може займати хвилини.

Зліва — Git: повна історія на кожній машині й remote за домовленістю. Справа — централізована VCS: еталон лише на сервері, commit одразу йде туди.

Два стани локальної копії

У класичному SVN світ поділяли на «брудний» (local changes) і «чистий» (committed на сервер). Commit і push часто зливалися в одну думку: зміни стали справжніми лише після відправки на центральний хост. Поділитися незавершеною роботою без доступу до сервера було складно; офлайн-робота з повною історією — майже неможлива. Гілки були дорогими: створення branch часто копіювало багато файлів, тож команди боялися «зламати trunk».

Увага

Не плутайте «старий SVN» з «Git без інтернету». У SVN сервер — обовʼязковий для спільної історії; у Git повна копія історії живе у вас у .git. Центральний сервер у Git — домовленість команди, а не архітектурна необхідність.

Чому зʼявився Git

Linux kernel розробляли розкидані по світу contributors. Linus Torvalds потребував швидкої distributed VCS: повні копії репозиторію, робота офлайн, дешеві гілки. Так народився Git — не як «ще один SVN у хмарі», а як інша філософія: кожен clone — повноцінний репозиторій, а не «тінь» центру. Torvalds жартома казав, що зробив Інтернет своєю системою резервного копіювання: достатньо кількох повних копій у різних кутках планети.

Перехід команди з SVN на Git часто супроводжував болем: інша ментальна модель, нові команди, страх переписати історію. Але виграш у швидкості branch і автономності розробника переважив. Сьогодні Git — de facto стандарт навіть там, де «центр» усе одно один GitHub-репозиторій.

Bash
svn checkout https://example.com/repo/trunk myproject
cd myproject
svn commit -m "Повідомлення"

git log --oneline

Що запамʼятати

До Git панували централізовані VCS: один сервер, checkout, commit = «на сервері». Це ускладнювало офлайн, дорогі гілки й масштабування. Git перевернув модель: distributed репозиторії з повною історією локально. Розуміння старого світу допомагає цінувати, чому Git поводиться інакше.

Перевірка

4 питання

Кілька питань за матеріалом уроку. Спроб — скільки завгодно.

1.Яка головна риса централізованих VCS на кшталт SVN?
2.Чому в старих VCS рідко створювали гілки?
3.Що означало «committed» у централізованому світі для колег?
4.Навіщо створили Git?