Рассказ про Git
По-моему, в «Прагматичных программистах» было написана фраза, которую я часто люблю повторять: «Программист должен в совершенстве владеть двумя инструментами — текстовым редактором и системой контроля версий». Программист работает с текстом, особенно программист, который пишет на высокоуровневом языке, таком как Ruby. Зачастую можно не вдаваться в подробности того, что происходит внутри, хотя иногда, конечно, надо. Так вот, текст надо уметь изменять, а потом этими изменениями как-то обмениваться со своими коллегами.
Про текстовый редактор я рассказывал немного раньше, а сегодня я хочу рассказать про систему контроля версий git. Пересказывать огромный объем материала, который лежит в сети, мне совершенно не хочется, но я дам ссылки с комментариями на самые лучшие тексты.
Есть две отличные бесплатные книги:
В обоих из них материал подается немного по-разному, но есть две главные части — как пользоваться git, и как он устроен изнутри. После того, как я узнал о внутреннем устройстве git, я понял, что другие системы контроля версий должны умереть, и перевел мою тогдашнюю компанию с svn на git.
Я не противник других распределенных систем контроля версий, таких как Mercurial и Bazaar. Но Mercurial, хотя содержит в себе те же самые концепции, имеет гораздо более бедные возможности, нежели git. Про Darcs, хоть он и написан на мистическом языке Haskell, вообще говорить не хочется, настолько он неразвит.
У Pro Git есть отличный блог, из которого я тоже почерпнул много чего интересного.
На русском языке есть переведенная книга «Волшебство Git» (pdf лежит здесь). У этой книги одно большое достоинство — она на русском языке, но изложение и перевод мне не очень понравились.
Очень хорошо про внутренности Git написано у пользователя ЖЖ los_t, именно с его текстов началась моя безудержная любовь к Git.
После прочтения книг, статей, и, конечно, многодневной практики, сразу перестают возникать многие вопросы, если почти не все. К тому же, как только вы поймете, как устроены внутри комиты, что такое дерево Меркла (оно же хеш-дерево), ваш внутренний мир очень сильно обогатится. Программист — он, как самурай, должен в совершенстве владеть мечом, то есть Git-ом, и постоянно оттачивать свое мастерство.
PS Я как-то выступил в Минске на конференции с докладом про Git. Доклад так себе, но если вам проще смотреть, чем читать, можете это сделать.