Что это такое
Git — распределенная система контроля версий. Она хранит историю изменений, позволяет создавать ветки, сливать работу нескольких людей, откатываться к прошлым состояниям и проверять, кто и зачем менял код.
Репозиторий `git/git` на GitHub является зеркалом исходного кода. Это важно: основная культура разработки Git исторически связана с почтовыми списками и патчами, а GitHub-репозиторий удобен для чтения, CI и навигации.
Как устроена модель
Git хранит содержимое как набор объектов: blob, tree, commit и tag. Ветка указывает на коммит, коммит ссылается на дерево файлов и родителей, а история образует граф.
Эта модель дает Git силу: локальная история полная, операции быстрые, а ветки являются легкими указателями. Разработчик может экспериментировать без постоянной связи с сервером.
Минимальный цикл работы
Пример показывает базовый путь изменения: посмотреть состояние, создать коммит и отправить ветку на сервер.
git status
git add app/Modules/OpenSource
git commit -m "Add open source catalog project"
git push origin feature/catalog-project
Что внутри репозитория
Внутри находится исходный код Git на C, документация, тесты, команды высокого уровня и низкоуровневые механизмы. Проект необычен тем, что сам является инструментом, которым пользуются для разработки почти всех остальных проектов в этом каталоге.
Документация Git тоже является важной частью репозитория. Многие команды используют Git каждый день, но реальное понимание приходит только после знакомства с объектной моделью и командами для диагностики.
Сильные стороны
Сильная сторона Git — распределенность. Каждый разработчик имеет полноценную локальную историю, может создавать ветки и сравнивать состояния без центрального сервера.
Вторая сильная сторона — гибкость. Git подходит и для маленьких проектов, и для огромных кодовых баз с тысячами участников, хотя дисциплина работы в них будет разной.
Ограничения
Git мощный, но не всегда простой. Ошибки с rebase, force push, конфликтами и потерянными ссылками могут пугать новичков.
Также Git не заменяет процессы команды. Он хранит историю и помогает слиянию, но не решает за людей, как проводить ревью, выпускать релизы и описывать изменения.