Глиф Учебники

Урок 1. Что такое Git и зачем он нужен

Курс «Git» · урок 1 из 9 · 4 минуты чтения

Знакомая картина: папка с файлами курсовая.docx, курсовая_новая.docx, курсовая_финал.docx, курсовая_финал_2_точно.docx. Какая версия последняя, что в ней поменялось и как вернуть удачный абзац из позапрошлой — уже не понять. С программами ещё хуже: исправили одну ошибку, появились две новые, а как было до правки — никто не помнит.

Система контроля версий решает эту задачу: она сама хранит все версии файлов проекта, помнит, кто, когда и зачем их менял, и в любой момент может показать разницу или вернуть прошлое состояние. Самая распространённая такая система — Git.

Что умеет Git

Основные слова

Репозиторий (repository, «репа» на жаргоне) — папка проекта, история которой ведётся в Git. Сама история лежит в скрытой подпапке .git внутри неё. Удалите .git — останутся обычные файлы без истории.

Коммит (commit) — сохранённый снимок проекта: состояние файлов, имя автора, дата и короткое сообщение о том, что сделано, например «Исправлен расчёт скидки». У каждого коммита есть номер — хеш, строка вида 3e677f89be64b50549cba314384e0f14e6770322. Обычно хватает первых семи знаков: 3e677f8.

Ветка (branch) — линия развития проекта, цепочка коммитов. Основная ветка обычно называется main (во многих репозиториях — master). Для новой задачи заводят отдельную ветку, а когда работа готова, сливают её с основной.

Репозиторий папка проекта todo README.md .git история скрытая папка История в .git 5e634b3 прошлый main коммит 3e677f8 автор Ivan Petrov дата 5.11.2026 10:15 сообщение Добавлен первый пункт снимок README.md
Репозиторий — папка проекта с файлами и скрытой папкой .git, где лежат коммиты: у каждого есть хеш, автор, дата, сообщение и снимок файлов, а ветка main указывает на последний.

Удалённый репозиторий (remote) — копия проекта на другом компьютере или сервере, например на GitHub. С ним обмениваются коммитами: отправляют свои и забирают чужие.

Три места, где живут изменения

Новичка в Git сначала удивляет, что коммит делается в два шага. Изменения проходят три места:

МестоЧто тамКак туда попасть
Рабочая папкаФайлы, которые вы правите в редактореПросто изменить файл
Индекс (staging area)Изменения, отобранные для следующего коммитаgit add
РепозиторийИстория коммитов в папке .gitgit commit

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

Рабочая папка файлы в редакторе исправление новая функция подождёт Индекс git add исправление отобрано для коммита Репозиторий git commit новый коммит Исправлена ошибка исправление остаётся в истории
Исправление проходит из рабочей папки в индекс командой git add и в коммит «Исправлена ошибка» командой git commit, а файл с новой функцией остаётся ждать в рабочей папке.

Git и GitHub — не одно и то же

Git — программа, которая стоит на вашем компьютере и ведёт историю. GitHub, GitLab, Bitbucket, Gitea — сервисы и программы для хранения репозиториев на сервере. Они добавляют к Git веб-страницы проекта, обсуждение правок (pull request), задачи и права доступа. Git можно использовать вовсе без них, а репозиторий с GitHub переносится на GitLab или свой сервер вместе со всей историей.

Ваш компьютер программа Git репозиторий вся история — у вас на диске работает без интернета отправить коммиты забрать чужие сеть нужна только для обмена Сервер GitHub, GitLab, Gitea… копия репозитория и сверх Git: страницы проекта pull request, задачи права доступа
Git хранит всю историю у вас на диске, а GitHub, GitLab и подобные сервисы держат копию репозитория на сервере и добавляют страницы проекта, pull request, задачи и права доступа.

Что хранить в Git, а что нет

Git создан для текстовых файлов: код, настройки, документация, разметка сайтов. Для них он показывает разницу построчно и умеет объединять правки.

Большие двоичные файлы — видео, образы дисков, архивы, файлы фотошопа — Git тоже сохранит, но разницу показать не сможет, а каждая версия навсегда увеличит размер репозитория. Не кладут в Git и то, что собирается из исходников (папки сборки, node_modules), и секреты — пароли, ключи, токены. Как их исключить — в уроке Файл .gitignore.

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

Коротко

Проверьте себя

1. Где Git хранит историю проекта?
2. Что такое коммит?
3. Для чего нужен индекс (staging area)?
4. Чем Git отличается от GitHub?