Чим Git відрізняється від інших систем контролю версій
Модуль 1Урок 3 з 53Безкоштовний модуль
Якщо ви вже торкалися SVN, Git спочатку здається дивним. Він distributed: clone — не «підключення до сервера», а повна копія історії. Можна тижнями commit-ити офлайн; sync з remote — окремий крок. Усі репозиторії рівні за природою: ноутбук, CI і GitHub обмінюються змінами; «головний» remote — лише домовленість команди.
Порада
Золоте правило: на рівні протоколу немає «головного» репозиторію. Є лише домовленість, який remote вважати upstream. Ваш ноутбук, сервер CI і GitHub — три однакові за природою бази, що обмінюються змінами через push і fetch.
Дешеві гілки й знімок усього проєкту
Branch у Git — вказівник на commit, операція O(1): як закладка в браузері, а не копія дерева файлів. Історію локально можна переписувати (rebase, amend), доки не поділилися нею з іншими. Commit — знімок усього відстежуваного проєкту, не окремого файлу: один commit = одна логічна зміна для всього репозиторію.
Перейменування файлу не рве історію так жорстко, як у старих file-oriented системах: Git бачить вміст і структуру разом. Це змінює workflow — ви думаєте знімками проєкту, а не «ревізіями одного файлу». Створити гілку для експерименту так само легко, як створити закладку; видалити її теж дешево.
Хеші замість номерів версій
Git не видає «версію 1.7.3» автоматично для кожного commit. Замість цього кожен знімок отримує SHA-1 хеш — довгий ідентифікатор, на кшталт a1b2c3d. Він залежить від вмісту, батьківських commit і метаданих. Два однакові знімки дадуть той самий хеш; зміна одного байта — інший хеш. Для людей є короткі форми та tag; для машини — унікальний відбиток.
Приклад
Уявіть commit як запечатаний конверт із описом змін. Номер версії SVN — порядковий номер у журналі бібліотеки. Хеш Git — відбиток воску на конверті: якщо всередині щось змінити, печатка інша. Тому посилатися на commit за хешем безпечніше, ніж «версія 42», яку хтось міг перезаписати в іншій системі.
git log --oneline -5
git branch experiment
git branch
git diff HEAD~1 HEADЩо запамʼятати
Git — distributed, з повною історією локально; branch дешеві; commit — знімок усього проєкту; ідентифікатор — хеш, не порядковий номер. Історію можна обережно змінювати локально, доки не поділилися нею з іншими. Тому кілька remote і pull request — нормальна модель, а не «хак поверх SVN».
Перевірка
4 питанняКілька питань за матеріалом уроку. Спроб — скільки завгодно.