Життя до Git
Модуль 1Урок 2 з 53Безкоштовний модуль
До появи Git у 2005 році домінували централізовані системи: CVS, потім Subversion (SVN). Усі розробники підключалися до одного сервера — «джерела правди». Ви робили checkout, отримували копію, працювали локально, потім commit відправляв зміни назад на сервер. Поки зміни не на сервері — для команди їх начебто не існує.
Приклад
Централізована модель — як бібліотека з одним читальним залом. Книгу (файл) може тримати лише один відвідувач «офіційно»; інші чекають або працюють з ксерокопією, яка застаріває. Сервер росте, історія ускладнюється, а checkout великого проєкту може займати хвилини.
Два стани локальної копії
У класичному 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-репозиторій.
svn checkout https://example.com/repo/trunk myproject
cd myproject
svn commit -m "Повідомлення"
git log --onelineЩо запамʼятати
До Git панували централізовані VCS: один сервер, checkout, commit = «на сервері». Це ускладнювало офлайн, дорогі гілки й масштабування. Git перевернув модель: distributed репозиторії з повною історією локально. Розуміння старого світу допомагає цінувати, чому Git поводиться інакше.
Перевірка
4 питанняКілька питань за матеріалом уроку. Спроб — скільки завгодно.