Технические заметки одного Евтуховича

Рассказ о серых трудовых буднях инженера программных систем

Рассказ про Git

| Комментарии

По-моему, в «Прагматичных программистах» было написана фраза, которую я часто люблю повторять: «Программист должен в совершенстве владеть двумя инструментами — текстовым редактором и системой контроля версий». Программист работает с текстом, особенно программист, который пишет на высокоуровневом языке, таком как Ruby. Зачастую можно не вдаваться в подробности того, что происходит внутри, хотя иногда, конечно, надо. Так вот, текст надо уметь изменять, а потом этими изменениями как-то обмениваться со своими коллегами.

Про текстовый редактор я рассказывал немного раньше, а сегодня я хочу рассказать про систему контроля версий git. Пересказывать огромный объем материала, который лежит в сети, мне совершенно не хочется, но я дам ссылки с комментариями на самые лучшие тексты.

Есть две отличные бесплатные книги:

В обоих из них материал подается немного по-разному, но есть две главные части — как пользоваться git, и как он устроен изнутри. После того, как я узнал о внутреннем устройстве git, я понял, что другие системы контроля версий должны умереть, и перевел мою тогдашнюю компанию с svn на git.

Я не противник других распределенных систем контроля версий, таких как Mercurial и Bazaar. Но Mercurial, хотя содержит в себе те же самые концепции, имеет гораздо более бедные возможности, нежели git. Про Darcs, хоть он и написан на мистическом языке Haskell, вообще говорить не хочется, настолько он неразвит.

У Pro Git есть отличный блог, из которого я тоже почерпнул много чего интересного.

На русском языке есть переведенная книга «Волшебство Git» (pdf лежит здесь). У этой книги одно большое достоинство — она на русском языке, но изложение и перевод мне не очень понравились.

Очень хорошо про внутренности Git написано у пользователя ЖЖ los_t, именно с его текстов началась моя безудержная любовь к Git.

После прочтения книг, статей, и, конечно, многодневной практики, сразу перестают возникать многие вопросы, если почти не все. К тому же, как только вы поймете, как устроены внутри комиты, что такое дерево Меркла (оно же хеш-дерево), ваш внутренний мир очень сильно обогатится. Программист — он, как самурай, должен в совершенстве владеть мечом, то есть Git-ом, и постоянно оттачивать свое мастерство.

PS Я как-то выступил в Минске на конференции с докладом про Git. Доклад так себе, но если вам проще смотреть, чем читать, можете это сделать.

git

Комментарии