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 их почти невозможно удалить бесследно, а копии репозитория есть у всех участников. Секреты хранят в отдельных защищенных хранилищах.
  • Основная ветка всегда в рабочем состоянии; изменения попадают в нее только через проверку.