Книга написана Джоном Лолигером(Jon Loeliger), в соавторстве с Мэтью Маккалоу(Matthew McCullough) в 2012 году. Признаться честно, до прочтения данной книги я не слышал ни про первого, ни про второго. Выбор же мой пал не сей труд в силу того, что при поиске хоть какой-нибудь книги по git(а было это несколько лет назад) я был обескуражен крайне скудным выбором, не говоря уже о том, чтобы кто-то посоветовал что-либо стоящее. Это вполне естественно, ведь git еще довольно молодая система контроля версий. Из того скудного списка книг, что мне удалось найти по git, я выбрал именно эту, т.к. отношусь с определённым пиететом к издательству O'Reilly и для меня книга выпущенная в этом издательстве имеет приоритет, при прочих равных.
Книга написана довольно простым и понятным языком. Повествование идёт довольно плавно, без сухой академичности. Текст обильно приправлен различными примерами и иллюстрациями того или иного процесса взаимодействия с git. Книга пытается покрыть материал с самых азов git, как то: что такое git? как его установить? как сделать первые шаги?, до продвинутого использования оного. Насколько удачно покрытие? На мой взгляд, человек никогда не видевший git, должен начать использовать его довольно уверенно после прочтения данного текста. И это при том, что книга весьма умеренного объема: всего 417 страниц, из которых 62 посвящены установке и настройке git, а также работе с github(если вы не можете разобраться как работать с github без книги, что вы забыли в программировании?)
После прочтения данной книги у вас не должно остаться(если и останутся, то крайне мало) вопросов о том, как же устроен git и что происходит при выполнении той или иной команды. Авторы не стесняются лезть в самое “пекло” приводя читателю разбор того, как работает та или иная команда. Конечно, никто не лезет непосредственно в код,- вместо этого авторы рассказывают как та или иная высокоуровневая команда раскладывается на несколько простых, возможно, внутренних. Я бы выделил в этом ключи описание того, как работает git commit и git pull. Конечно, разбор команд не детален, но, тем не менее, позволяет получить вполне сносное впечатление, как git работает под капотом.
Текст раскрывает перед нами святая святых любого git-репозитория – папку .git. Что в ней содержится? Почему? Как это использовать? Всё это вы узнаете из этой книги. Открывая тайны .git вы познакомитесь с тем, что же из себя представляет commit в git и как он хранится. Я думаю, что многие оценят простоту и элегантность git, особенно по сравнению с такими монстрами как svn.
Книга довольно неплохо раскрывает процесс слияния(merge), который является краеугольным камнем процесса разработки любого проекта. Если вы всё ещё боитесь слияний(вспоминая опыт с svn), то рекомендую ознакомиться с тем как работает слияние в git – после этого у вас не должно остаться страхов. Кроме слияния, раскрывается также и перебазирование(rebase): приводится его сравнение со слиянием. Довольно много места в книге уделено изменению истории репозитория: рассказывает как это делать, приводятся примеры когда это стоит делать, а когда нет. Авторы не вдаются в нравоучения и советы, они просто приводят набор фактов и дают читателю самостоятельно решить, как ему относится к истории репозитория. И это делает им честь – дело автора показать возможности, а не лезть с советами по использованию. На мой взгляд, авторы прекрасно справились с задачей донесения материала до читателя.
В целом, у меня сложилось вполне благоприятное впечатление от данной книги, хотя 5-ку я бы ей и не поставил. По моему мнению, книгу можно было бы сделать больше, добавив больше внутренних деталей раскрывающих git, а не добавляя туда руководство по работе с github. Но при всём при этом, книга всё равно заслуживает прочтения. Особенно теми, кто работает с git и не совсем понимает, что же происходит, когда он выполняет ту или иную команду. Учитывая мой опыт работы с различными командами: многие люди не знают устройства git и, как следствие, работают с ним как с неким магическим устройством, боясь отступить от стандартного набора команд; это порождает проблемы, иногда почти фатальные. Безусловно, эту книгу стоит прочитать, в первую очередь, именно таким людям. Кроме того, если вы просто интересуетесь системами контроля версий, то книга тоже заслуживает внимания – возможно вы оцените простоту git и влюбитесь в него, наконец осознав почему он так популярен.
Не являясь экспертом в git, но используя его на протяжении последних 4 лет я могу с уверенностью сказать, что данная книга покрывает все возможности, которые предоставляет git. Какие-то возможности описаны лучше, какие-то хуже, но, в целом, описано всё – дальше можно уже шерстить официальную справку. Именно поэтому, я бы рекомендовал эту книгу к прочтению любому, кто до сих пор не на “ты” с git.