Git
Система контроля версий: хранит всю историю изменений кода и позволяет многим разработчикам работать над ним одновременно.
Git — система контроля версий: она запоминает каждое изменение в файлах проекта — кто, когда и зачем его сделал — и позволяет вернуться к любой прошлой версии. Над одним кодом одновременно работают десятки разработчиков, каждый в своей ветке, а Git помогает объединить их изменения. Git создал Линус Торвальдс в 2005 году для разработки ядра Linux; сегодня это стандарт де-факто для любой разработки.
Основные понятия
- Репозиторий — проект со всей историей изменений.
- Коммит — сохраненный снимок изменений с описанием: «Исправлен расчет НДС в счетах».
- Ветка — независимая линия разработки. Новая функция делается в своей ветке и не мешает остальным.
- Слияние (merge) — объединение изменений из ветки в основную.
- Удаленный репозиторий — общая копия на сервере (GitLab, GitHub, Gitea, российский GitFlic), с которой синхронизируются все участники.
Типичный рабочий цикл
git switch -c fix/vat-calculation # новая ветка для задачи
# ... правки в коде ...
git add src/invoice.py
git commit -m "Исправлен расчет НДС для счетов в валюте"
git push -u origin fix/vat-calculation # отправить ветку на сервер
Дальше разработчик создает запрос на слияние (merge request), коллеги проводят код-ревью, а конвейер CI/CD автоматически собирает код и запускает тесты. Только после этого изменения попадают в основную ветку.
Почему Git устроен распределенно
У каждого разработчика на компьютере полная копия репозитория со всей историей. Можно работать без сети, просматривать историю мгновенно, а потеря сервера не уничтожает проект. Это отличие от старых централизованных систем вроде SVN, где история хранилась только на сервере.
Что дает команде
- История и ответственность. По любой строке кода можно узнать, когда и почему она появилась.
- Безопасные эксперименты. Ветку можно выбросить, не задев основной код.
- Откат. Ошибочное изменение отменяется одной командой.
- Основа автоматизации. Сборка, тесты, выкатка и даже изменения инфраструктуры через Terraform запускаются по событиям в репозитории.
Правила гигиены
- Небольшие коммиты с понятными описаниями: «что и зачем», а не «правки».
- Никогда не сохранять в репозиторий пароли, ключи и токены: из истории Git их почти невозможно удалить бесследно, а копии репозитория есть у всех участников. Секреты хранят в отдельных защищенных хранилищах.
- Основная ветка всегда в рабочем состоянии; изменения попадают в нее только через проверку.