Гики и Git-ы. Почему Git так популярен

И надо ли вам его использовать?
05 июня 2017326451Илья Бубнов4774316

На свете существует огромное количество систем контроля версий. Некоторые из них имеют универсальное предназначение, некоторые — очевидную направленность.

Git — пожалуй, самая известная и популярная подобная система в области программирования. Она была разработана Линусом Торвальдсом для управления разработкой ядра Linux. Сегодня это один из самых значимых репозиториев, который используют Android, Swift, Drupal, jQuery и многие другие.

Впрочем, прежде чем понять этот феномен, следует начать с самого начала.

Как известно, при разработке программного обеспечения (как, впрочем, и многих других проектов, например, документации) возникают ситуации, когда необходимо иметь возможность откатить изменения или пойти одновременно несколькими путями развития. Часто это решается созданием отдельных каталогов с добавлением к имени даты или версии. Однако данный способ как лёгок, так и небезопасен, ведь вы запросто можете забыть более детальные сведения или просто случайно «затереть» ненужный файл. Тут в дело вступают локальные системы контроля версий (ЛСКВ), которые отображают лишь последнюю, а все остальные содержатся в БД с необходимыми пометками.

Аналогичным образом реализованы централизованные системы контроля версий (ЦСКВ) — несколько компьютеров получают доступ к копиям файлов, расположенных на сервере. После внесения изменений, файлы сохраняются на сервер с новой ревизией. Это значительно удобнее использования нескольких ЛСКВ, так как пользователи в системе могут без проблем работать над одним проектам и контролировать изменения друг друга. Однако есть существенный недостаток — сервер, как центральное звено всей является слабым местом. Ведь в случае его отключения, разработчики не могут полноценно взаимодействовать, а в случае уничтожения данных — вся проделанная работа обнуляется.

Распределённые системы контроля версий (РСКВ)такого недостатка лишены. Здесь вы получаете контроль не над копией, а над всем репозиторием. То есть в случае отключения или «смерти» сервера вы просто можете взять и скопировать рабочий проект со всеми ревизиями в другое место.

Именно такой системой является Git, но не единственной. Среди конкурентов значатся Mercurial, Bazaar и Darcs. Так чем же Git лучше?

Правда в том, что каждая из этих РСКВ имеет свои плюсы и минусы, а Git и Mercurial здесь что-то вроде Linux и Windows. Но с одной небольшой оговоркой. Git куда более мощный технический и функциональный проект, нежели его конкуренты. Вам действительно придётся потратить куда больше времени на его освоение, вы столкнётесь с некоторыми неприятностями в плане реализаций принципов РСКВ, но осознание того, что нет другой системы с таким широким функционалом, заставит вас продолжить работать с Git.

При этом, моё личное мнение, Git — точно не бесспорно лучшая система. Более того, в некотором роде это феномен. Половина возможностей, которые вы получаете с его использованием, вам просто не нужна до тех пор, пока вы не начнёте работать над одним проектом вместе с огромной командой. Начинать программировать в РСКВ с Git — тоже сомнительное удовольствие, когда есть тот же Mercurial, где порог входа куда ниже. А так как сначала ничего кроме создания ревизий вам и не нужно, то непонятно к чему устраивать себе сложную жизнь.

Но при этом вас не будет покидать ощущение, что все, во всяком случае все крутые программисты, работают с Git. Отчасти это связано с существованием такого славного ресурса, как GitHub, отчасти — с тем, что действительно большие качественные проекты разрабатывать при помощи Git проще. Именно отсюда у вас возникнет это странное желание пойти сложным путём.

Но есть в этом и плюс. Научившись работать с Git маловероятно, что вы в какой-то момент разочаруетесь.