Что такое Git и как работает система контроля версий
Основы3 минРедакция Innovialabs
Коротко
Git — это система контроля версий, которая сохраняет историю изменений кода в виде снимков (коммитов), позволяет работать в ветках и безопасно объединять работу нескольких людей.
Что такое Git простыми словами
Git — это программа, которая запоминает каждое сохранённое состояние вашего проекта. Вместо папок «проект_финал», «проект_финал_2» и «проект_точно_финал» у вас одна папка и полная история: кто, когда и что изменил.
Git — распределённая система: у каждого разработчика на компьютере лежит полная копия истории. Можно работать без интернета, а потом синхронизироваться с сервером (GitHub, GitLab, Bitbucket или собственным).
Зачем нужен контроль версий
Без контроля версий команда быстро сталкивается с типичными проблемами:
- Потеря работы. Кто-то перезаписал файл коллеги, и правки исчезли.
- Нет отката. Обновление сломало сайт, а вернуться к рабочей версии нечем.
- Непонятно, откуда баг. Нельзя посмотреть, какое изменение его принесло.
- Параллельная работа мешает. Два человека правят один модуль и тормозят друг друга.
Git решает всё это: любое состояние можно восстановить, каждое изменение подписано, а параллельная работа идёт в отдельных ветках.
Модель Git: три ключевых понятия
Коммит
Коммит — это снимок всех отслеживаемых файлов проекта в конкретный момент плюс сообщение, автор и дата. У каждого коммита есть уникальный хеш (например, a3f9c21) и ссылка на предыдущий коммит. Так история превращается в цепочку.
Staging area (индекс)
Между вашими файлами и историей есть промежуточная зона — staging area. Вы сами выбираете, какие изменения войдут в следующий коммит. Это позволяет делать аккуратные коммиты: например, отдельно исправление бага и отдельно правку стилей, даже если оба изменения сделаны одновременно.
Файл в Git проходит три состояния:
| Состояние | Где находится | Команда перехода |
|---|---|---|
| Изменён (modified) | рабочая папка | редактирование файла |
| Подготовлен (staged) | staging area | git add |
| Зафиксирован (committed) | история репозитория | git commit |
Ветка
Ветка — это просто подвижный указатель на коммит. Основная ветка обычно называется main. Когда вы начинаете новую задачу, создаёте ветку, работаете в ней, а затем объединяете (merge) её с основной. Ветки в Git создаются мгновенно и почти ничего не весят, поэтому их принято делать под каждую задачу.
Первый репозиторий: от init до первого коммита
Сначала установите Git и один раз укажите имя и почту — они будут подписывать ваши коммиты:
git config --global user.name "Ваше Имя"
git config --global user.email "you@example.com"
Теперь создадим проект и первый коммит:
mkdir my-project
cd my-project
git init # создаёт скрытую папку .git с историей
echo "# My project" > README.md
git status # README.md отображается как неотслеживаемый
git add README.md # переносим файл в staging area
git commit -m "Add README" # фиксируем снимок
git log --oneline # смотрим историю
После git init в папке появляется каталог .git — это и есть репозиторий со всей историей. Удалите его, и проект перестанет быть Git-репозиторием, а файлы останутся.
Чтобы отправить проект на сервер, создайте пустой репозиторий на GitHub или GitLab и выполните:
git remote add origin <адрес-репозитория>
git push -u origin main
Частые ошибки новичков
- Один огромный коммит в конце дня. Коммитьте небольшими логичными шагами — так проще найти и откатить ошибку.
- Сообщения вроде «fix» или «update». Пишите, что и зачем изменилось: «Fix price rounding in cart».
- Пароли и ключи в репозитории. Секреты не должны попадать в историю — используйте
.gitignoreи переменные окружения. - Работа сразу в
main. Даже в одиночном проекте ветки помогают держать основную версию рабочей. - Путаница Git и GitHub. Git — инструмент, GitHub — сервис для хранения репозиториев и совместной работы.