Одно магическое слово. Без него не обходится ни одна современная разработка. Говорю я про систему контроля версий – Git. Давайте узнаем, что это такое и какие проблемы в разработке решает это ПО. Как всегда, начнём по порядку.
Перед тем, как рассмотреть сам Git и его особенности, узнаем смысл словосочетания – это система контроля версий. Она записывает изменения в файл или набор файлов в течение времени и позволяет «откатить» изменения к определённой версии. Это самое лучшее объяснение, которое у меня получилось откопать в интернете. Если приводить аналогии – это своеобразный журнал работ для программистов и не только.
Если вы, например, дизайнер и хотите сохранить каждую версию изображения, система контроля версий вам в этом поможет. Она позволяет:
– вернуть файлы к состоянию, в котором они были до изменений;
– вернуть проект к исходному состоянию;
– увидеть изменения;
– увидеть, кто последний менял что-то и вызвал проблему;
– кто и когда поставил задачу ;
– и многое другое.
Еще одна особенность системы контроля версии в том, что, если вы сломали что-то, то вы спокойно можете всё исправить откатом до прошлой версии.
Теперь, когда мы понимаем, как работает система контроля версий, мы можем рассмотреть более детально сам Git.
«Как и многие вещи в жизни, Git начинался с капелькой творческого хаоса и бурных споров» – написано в книге Pro Git. Его история тесно переплетена с разработкой ядра Linux. И да, создатель у них один и тот же – Линус Торвальдс.
Важно понимать, что ядро Linux – это крупный проект с открытым исходным кодом, куда были вовлечены сотни разработчиков. Большую часть времени разработки ядра Linux (1991–2002 гг.) изменения передавались между разработчиками в виде патчей и архивов. Однако, этот способ был довольно неудобным и требующим большого количества времени.
По этим причинам, в 2002 году проект ядра Linux начал использовать систему контроля версий – BitKeeper. Его автор – Ларри Маквой, являющийся разработчиком Linux, предоставил продукт по бесплатной лицензии. Другие программисты написали несколько разных утилит, и для одной из них Эндрю Триджелл произвёл реверс-инжиниринг формата передачи данных BitKeeper (про реверс-инжиниринг, поскольку это интересная тема, поговорим в другой статье).
Из-за этого случая, в 2005 году Маквой отозвал лицензию и бесплатное использование утилиты стало невозможным. Это сподвигло сообщество разработчиков ядра Linux, в частности Торвальдса, создать новую систему. Начальная разработка завершилась в кратчайшие сроки (с 3 по 7 апреля 2005 года). 16 июня того же года Linux был переведён на Git, а 25 июля Торвальдс отказался быть ведущим разработчиком. С того момента и до сегодняшнего дня поддержкой проекта Git занимается Хамано Дзюн, который с 2010 года является разработчиком в Google.
Git (что на английском сленге означает «мерзавец») довольно странное названия для проекта. Торвальдс так саркастически отозвался о таком выборе: «Я эгоистичный ублюдок, и поэтому называю все свои проекты в честь себя. Сначала Linux, теперь Git».
Цели, которые пытались достичь разработчики при работе на Git:
– скорость;
– простая архитектура;
– хорошая поддержка нелинейной разработки (тысячи параллельных веток);
– полная децентрализация;
– возможность эффективного управления большими проектами, такими как ядро Linux (скорость работы и разумное использование дискового пространства).
Кстати, важно отметить, что GitHub – не тоже самое, что и Git. GitHub – веб-приложение, которая занимается хостингом git-репозиториев. То есть, благодаря таким сервисам как GitHub, локальные git-репозитории можно загружать в сеть. Механизм схож с тем, как мы отправляем в облако свои изображения и видео.
В заключении можно сказать, что с момента своего появления в 2005 году, Git развился в простую в использовании систему, сохранив при этом все свои изначальные качества. Он невероятно быстр, эффективен в работе с большими проектами и имеет великолепную систему веток для нелинейной разработки.