← Git: основы
11 мин · intro · Урок 1 из 6

Зачем нужен Git

VCS на примере курсовой работы. Чем коммит отличается от папки с архивами.

История, которую все жили

Представь: ты пишешь диплом. Открыл Word, написал главу, сохранил диплом.docx. На следующий день дописал ещё, испугался сломать, сделал копию диплом_v2.docx. Через неделю отправил научнику, он прислал правки в файле диплом_с_правками_Иванова.docx. Ты что-то принял, что-то отверг, сохранил как диплом_FINAL.docx. Через месяц перепутал две версии, накатил поверх старое, и две недели работы потерялись.

диплом.docx диплом_v2.docx диплом_с_правками_Иванова.docx диплом_FINAL.docx диплом_FINAL_v2_РЕАЛЬНО_ПОСЛЕДНИЙ.docx

С кодом эта картинка выглядит так же, только архивы:

project_final.zip
project_final_v2.zip
project_final_v2_NEW.zip
project_final_v2_NEW_правки_Олега.zip
project_final_v2_NEW_правки_Олега_РАБОЧИЙ.zip

Что тут плохо:

На все четыре проблемы есть один ответ: Version Control System (VCS) — программа, которая хранит все версии твоих файлов и умеет показывать, что и когда изменилось.

Что делает Git вместо архивов

Когда ты пишешь диплом в Word и нажимаешь Ctrl+S, сохранилась текущая версия, предыдущая исчезла. Git ведёт себя иначе: каждое нажатие «сохранить» — это коммит, и все коммиты остаются в истории навсегда.

Коммит — снимок всего проекта в момент времени плюс метаданные:

Из коммитов получается цепочка — линейная история. По ней можно ходить: посмотреть как файл выглядел месяц назад, найти кто и когда сломал конкретную строчку, откатиться на любую точку.

a3f1cпервая b8e2dглава 1 c9f4eглава 2 d1a7bправки main↑ ты

Дипломная аналогия: представь, что Word сам в фоне хранит ВСЕ твои сохранения с подписью «когда» и «что поменялось», и в любой момент ты можешь сказать «верни как было три недели назад», и оно вернёт.

Что меняется в работе вдвоём

Допустим, ты пишешь курсовую с напарником. Олег редактирует главу 1, а ты главу 3. Без Git это:

[понедельник] олег → курсовая_олег.docx
[понедельник] ты   → курсовая_ты.docx
[вторник]     ?    → как теперь слить два файла обратно?

С Git каждый работает в своей ветке — это лёгкий указатель, под который ты складываешь свои коммиты. Когда оба готовы, Git сам накладывает изменения друг на друга. Если правки в разных местах - склеит автоматически. Если оба правили одну строку, покажет конфликт и скажет «решите ребята кто прав».

Это работает, потому что у каждого в Git полная копия истории, не только текущий файл. Старые VCS (SVN, CVS) держали историю только на сервере: закоммитить без сети было нельзя. Git distributed: можно работать офлайн, в самолёте, в подвале без вайфая.

Сервер (его принято называть origin) — это просто ещё один такой же клон, к которому все договорились пушить. Не «главный», а «общий».

Базовые понятия одним блоком

Чтобы не путаться дальше, запомни четыре термина. Все ниже встречаются постоянно.

Зачем это DevOps-инженеру

Git — не инструмент только для программистов. В нём живёт почти всё, что мы рулим:

На каждое изменение есть ревью, история видна, откатиться можно через git revert. Отсюда и вырос GitOps — подход, где единственный источник правды лежит в репозитории, а инфра-агент в кластере сам подтягивает состояние.

Что важно запомнить

В следующем уроке поднимем репозиторий с нуля и сделаем первый коммит руками.

Дрилл · вопросы как на собесе

Проверь себя без подсказок

Сформулируй ответ вслух или письменно, потом раскрой и честно отметь: знал или нет.

01

В чём разница между distributed (Git) и centralized (SVN) VCS?

GIT-102
02

Чем ветка отличается от тэга?

GIT-103
03

Чем коммит отличается от ZIP-архива с версией в имени?

GIT-101

Прошли материал до конца? Отметьте урок пройденным.