The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Книга поможет быстро и легко изучить самый популярный в мире инструмент контроля версий Git. В ней использована уникальная методика Head First, выходящая за рамки синтаксиса и инструкций по решению конкретных задач, а эффектное визуальное оформление разработано с учетом того, как работает и наиболее продуктивно усваивает информацию мозг. Рассмотрены основы Git, свойства ветвления кода, слияние, коммиты, устройство репозитория Git и поиск в нем, отмена действий и исправление ошибок. Особое внимание уделено командной работе с Git, передовым методам взаимодействия и советам профессионалов по эффективной работе.

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by BHV.RU Publishing House, 2023-03-11 01:07:10

Head First. Git

Книга поможет быстро и легко изучить самый популярный в мире инструмент контроля версий Git. В ней использована уникальная методика Head First, выходящая за рамки синтаксиса и инструкций по решению конкретных задач, а эффектное визуальное оформление разработано с учетом того, как работает и наиболее продуктивно усваивает информацию мозг. Рассмотрены основы Git, свойства ветвления кода, слияние, коммиты, устройство репозитория Git и поиск в нем, отмена действий и исправление ошибок. Особое внимание уделено командной работе с Git, передовым методам взаимодействия и советам профессионалов по эффективной работе.

Keywords: Git

Head First Git :RXOGQ·WLWEHGUHDP\LIWKHUHZDV DERRNDERXWOHDUQLQJ*LWWKDWZDV PRUHIXQWKDQJHWWLQJDURRWFDQDO DQGPRUHUHYHDOLQJWKDQUHDPVRI GRFXPHQWDWLRQ",W·VSUREDEO\MXVWD IDQWDV\ Raju Gandhi Beijing Boston Farnham Sebastopol Tokyo


Отзывы о книге "Эта книга — просто жемчужина. Потрясающе ясное, веселое и увлекательное введение в очень мощный и сложный инструмент. Темп, объем и структура облегчают чтение, предоставляя читателям прочную основу для дальнейшего изучения Git". — Мэтт Кордиал, штатный инженер-программист, Experian Decision Analytics "Разработчики программного обеспечения любят использовать привычные инструменты, но это часто означает, что мы работаем с минимально необходимым запасом навыков. И хотя основы Git можно понять за несколько часов, на овладение нюансами, его мощью и глубиной могут уйти годы. Каждая страница этой книги таит в себе открытие или новые грани темы, которая казалась вам знакомой. Независимо от вашего опыта работы с Git, автор поможет вам лучше использовать этот бесценный инструмент". — Нейт Шутта, архитектор и разработчик в VMware, автор книг "Архитектурное мышление" и "Надежные микросервисы" "Контроль версий — это сложно. Объяснять контроль версий еще сложнее. Книга преобразует сухую, сложную техническую информацию в занимательную и игривую историю, которая делает обучение не только увлекательным, но и очень эффективным. Автор Раджу Ганди порадует ваши усталые нейроны удивительными аналогиями, персонажами и приключениями. Если вы впервые пользуетесь Git, эта книга будет тем источником, который вы захотите получить в первую очередь с помощью git checkout". — Даниэль Инохоса, независимый программист, спикер и инструктор EvolutionNext.com "Как жаль, что этой книги не был десять лет назад, когда я впервые начал широко использовать Git. Разговорный стиль книги, наряду с яркими аналогиями для общих понятий Git, сделают чтение увлекательным. Независимо от вашего уровня подготовки, вам понравится читать эту книгу, и вы узнаете о Git кое-что новое". — Нихар Шах, консультант по программному обеспечению


Эх, если бы существовала книга про Git, более увлекательная, чем расписание поездов, и более познавательная, чем куча документации? Наверное, так не бывает... Раджу Ганди Санкт-Петербург «БХВ-Петербург» 2023


УДК 004.4'23 ББК 32.973.26-018 Г19 Ганди Р. Г19 Head First. Git: Пер. с англ. — СПб.: БХВ-Петербург, 2023. — 464 с.: ил. ISBN 978-5-9775-1777-5 Книга поможет быстро и легко изучить самый популярный в мире инструмент контроля версий Git. В ней использована уникальная методика Head First, выходящая за рамки синтаксиса и инструкций по решению конкретных задач, а эффектное визуальное оформление разработано с учетом того, как работает и наиболее продуктивно усваивает информацию мозг. Рассмотрены основы Git, свойства ветвления кода, слияние, коммиты, устройство репозитория Git и поиск в нем, отмена действий и исправление ошибок. Особое внимание уделено командной работе с Git, передовым методам взаимодействия и советам профессионалов по эффективной работе. Для программистов УДК 004.4'23 ББК 32.973.26-018 Группа подготовки издания: Руководитель проекта Евгений Рыбаков Зав. редакцией Людмила Гауль Редактор Анна Кузьмина Компьютерная верстка Людмилы Гауль Корректор Светлана Крутоярова Оформление обложки Зои Канторович © 2023 BHV Authorized Russian translation of the English edition of Head First Git ISBN 9781492092513 © 2022 DefMacro Soft ware, LLC. Th is translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Авторизованный перевод с английского языка на русский издания Head First Git ISBN 9781492092513 © 2022 DefMacro Soft ware, LLC. Перевод опубликован и продается с разрешения компании-правообладателя O’Reilly Media, Inc. «БХВ-Петербург», 191036, Санкт-Петербург, Гончарная ул., 20. ISBN 978-1-492-09251-3 (англ.) © DefMacro Soft ware, LLC., 2022 ISBN 978-5-9775-1777-5 (рус.) © Перевод на русский язык, оформление. ООО «БХВ-Петербург», ООО «БХВ», 2023


Посвящается моей любимой маме (1945–2020) Мы помним о тебе.


Àâòîð ýòîé êíèãè Раджу Ганди Раджу Ганди (Raju Gandhi) является основателем DefMacro Soft ware, LLC. Он живет в Колумбусе, штат Огайо, вместе со своей замечательной женой Мишель, их сыновьями Мейсоном и Микой. С ними живут три пушистых члена их семьи — две собаки, Бадди и Скай, и кошка Принцесса Зара. Раджу — консультант, автор, преподаватель и регулярно приглашаемый докладчик на конференциях по всему миру. В качестве как разработчика программного обеспечения, так и наставника он верит в простоту. Его подход всегда состоит в том, чтобы понятно объяснить "почему", а не "как". Блог Раджу опубликован по адресу: https://www.looselytyped.com, а с самим автором можно связаться в Твиттере: @looselytyped. Он всегда рад новым друзьям. Его контактную информацию можно найти по адресу: https://www.rajugandhi.com.


Îãëàâëåíèå (êðàòêîå) Вступление. Как использовать эту книгу ............................................................................17 1. Знакомство с Git. Приступим к делу .............................................................................36 2. Ветвление кода. Свободный полет вашей мысли ...................................................84 3. Осмотритесь вокруг. Изучим ваш репозиторий Git ..........................................144 4. Отмена действий. Исправляем свои ошибки ........................................................185 5. Командная работа с Git — часть I. Удаленная работа .................................239 6. Совместная работа с Git — часть II. Команда, вперед! ...............................290 7. Поиск в репозитории Git. Git идет искать ............................................................370 8. Эффективная работа с Git. #Советы профессионалов ...................................414 Приложение: остатки. Пять важных тем, о которых мы не говорили ............455 Îãëàâëåíèå (ñ ïîÿñíåíèÿìè) Вступление Заставьте мозг принять Git. Сейчас вы пытаетесь чему-то научиться, в то время как ваш мозг делает вам одолжение, следя за тем, чтобы обучение не закрепилось. Ваш мозг думает: "Лучше оставить место для более важного, например, того, каких диких животных следует избегать и почему кататься голым на сноуборде — плохая идея". Так как же заставить свой мозг уверовать, что ваша жизнь зависит от знания Git? Кому адресована эта книга? .............................................................................................18 Я знаю, о чем вы думаете .................................................................................................19 Метапознание: мышление о мышлении .......................................................................21 Вот что МЫ сделали ..........................................................................................................22 Многое зависит от ВАС .....................................................................................................23 Вам нужно установить Git (macOS) ...............................................................................25 Вам нужно установить Git (Windows) ...........................................................................26 Вам нужно установить текстовый редактор (macOS) ..............................................28 Вам нужно установить текстовый редактор (Windows) ..........................................29 Вам понадобится учетная запись GitHub .....................................................................30 Немного об организации ваших файлов и проектов ...............................................32 Технические рецензенты ...................................................................................................33 Благодарности ......................................................................................................................34 Для тех, кто подумал, что благодарности закончились ...........................................35


8 Оглавление (с пояснениями) Зачем нам нужен контроль версий ................................................................................37 Разговор в офисе разработчиков ....................................................................................39 Освоим Git? ...........................................................................................................................40 Краткий обзор командной строки: как узнать, где вы находитесь, с помощью pwd ................................................................................42 Еще про командную строку: создание каталога при помощи mkdir ............................................................................................................43 Больше командной строки: список файлов с командой ls ....................................44 Почти закончили знакомство: смена каталога с командой cd ..............................45 Команде нужны аргументы ..............................................................................................46 Сотрите ненужное ..............................................................................................................48 Создайте свой первый репозиторий .............................................................................49 Как работает команда init ............................................................................................50 Расскажите Git о себе .......................................................................................................52 Как нам пригодится Git? ...................................................................................................53 Подключаем Git к работе ..................................................................................................54 Использование репозитория Git.....................................................................................56 Что означает слово "коммит"? ........................................................................................58 Смотри, прежде чем прыгать ..........................................................................................60 Три этапа Git ........................................................................................................................ 61 Git в командной строке ....................................................................................................63 Заглянем за кулисы Git ......................................................................................................64 Разные состояния файлов в репозитории Git ............................................................65 Индекс — это ваш "блокнот" ............................................................................................68 Компьютер, доложи обстановку!....................................................................................70 Вы создали историю версий! ...........................................................................................76 Приступим к делу 1 Çíàêîìñòâî ñ Git Нам нужен контроль версий! Каждый программный проект начинается с идеи, реализованной в исходном коде. Эти файлы — сердце наших приложений, поэтому следует относиться к ним с осторожностью. Мы должны быть уверены, что храним их в безопасности, сохраняем историю изменений и приписываем заслуги (или вину!) законным авторам. Мы также должны обеспечить комфортное сотрудничество между несколькими членами команды. Вдобавок нам нужно, чтобы все это было в одном инструменте, который всегда под рукой, но не мешает нам и срабатывает только в нужный момент. Существует ли такой волшебный инструмент? Наверное, вы догадываетесь, каков будет ответ. Конечно, это Git! Разработчики и организации по всему миру любят Git. Так что же делает Git таким популярным?


Оглавление (с пояснениями) 9 Свободный полет вашей мысли 2 Âåòâëåíèå êîäà Вы можете ходить и жевать резинку одновременно. Стародавние приверженцы Git скажут вам, откинувшись в шезлонге и потягивая крафтовый зеленый чай, что одним из самых больших преимуществ Git является легкость, с которой вы можете создавать ветки кода. Возможно, вам поручили создать новую опцию интерфейса, и пока вы над ней работаете, ваш менеджер просит вас исправить ошибку в производственной версии. Или, может быть, вы только что закончили вносить изменения в код, но внезапно пришло вдохновение, и вы придумали лучший способ реализации алгоритма. Ветки позволяют вам работать над несколькими, совершенно не связанными частями одной и той же кодовой базы в одно и то же время, независимо друг от друга. Давайте разберемся, как это устроено! Все начинается с электронной почты ............................................................................85 Обновление ресторанного меню ....................................................................................88 Сколько возможностей... глаза разбегаются! .............................................................. 91 Переключая дорожки .........................................................................................................92 Вернитесь к началу! ...........................................................................................................94 Визуализация веток ............................................................................................................96 Ветки, коммиты и файлы в них .....................................................................................97 Параллельная работа .......................................................................................................100 Что такое ветка на самом деле?......................................................................................102 Переключаем ветки или каталоги? .............................................................................104 Торт и глазурь, объединяйтесь! .....................................................................................107 Читайте #&$!@ инструкцию! ..........................................................................................109 Делать слияние не всегда легко! ....................................................................................112 Направление слияния имеет значение ......................................................................113 Еще немного про настройку Git ...................................................................................114 Эй, ты куда? .........................................................................................................................117 Это коммит слияния ........................................................................................................120 Нужно действовать очень осторожно! .......................................................................124 Я очень конфликтный! ....................................................................................................124 Очистка (слитых) веток ...................................................................................................130 Удаление обособленных веток.......................................................................................133 Типичный рабочий процесс ...........................................................................................134


10 Оглавление (с пояснениями) Изучим ваш репозиторий Git 3 Îñìîòðèòåñü âîêðóã Вы готовы копнуть глубже, Шерлок? Продолжая работать в Git, вы будете создавать ветки, делать коммиты и объединять свою работу в ветках интеграции. Каждый коммит — это шаг вперед, а история коммитов показывает, как вы туда попали. Время от времени вы будете оглядываться назад, чтобы увидеть, как вы оказались в текущем положении, или понять, как две ветки отошли друг от друга. Мы начнем эту главу с демонстрации того, как Git помогает визуализировать историю коммитов. Просмотр истории коммитов важен, но Git также помогает увидеть, как изменился ваш репозиторий. Напомним, что коммиты представляют собой изменения, а ветки отражают последовательность изменений. Как узнать, где именно произошло изменение — между коммитами, между ветвями или даже между вашим рабочим каталогом, индексом и базой данных объектов? Это другая тема данной главы. Вместе мы проделаем очень интересную детективную работу и разберемся, как устроен Git. Итак, давайте прокачаем навыки расследования! Бриджит ищет работу ......................................................................................................145 Коммитов недостаточно..................................................................................................147 Кто на свете всех милее, форматирован ровнее? .....................................................149 Как работает git log? ..................................................................................................153 Как заставить git log делать всю работу .............................................................154 В чем заключаются различия? ......................................................................................158 Визуализация различий .................................................................................................159 Визуализация различий: один файл за раз ...............................................................160 Визуализация различий: один ханк за раз ................................................................161 Делаем команду diff более наглядной .......................................................................162 Поиск поэтапных изменений .......................................................................................165 Различия между ветками ...............................................................................................168 Поиск различий в коммитах .........................................................................................174 Как diff работает с новыми файлами? .......................................................................175


Оглавление (с пояснениями) 11 Исправляем свои ошибки 4 Îòìåíà äåéñòâèé Вечеринка по случаю помолвки ...................................................................................186 Ошибка в планировании ...............................................................................................188 Отмена изменений в рабочем каталоге ......................................................................190 Отмена изменений в индексе ........................................................................................192 Удаление файлов из репозитория Git .........................................................................195 Коммит удаления .............................................................................................................196 Переименование и перемещение файлов .................................................................198 Редактирование сообщений коммитов ......................................................................199 Переименование веток ...................................................................................................202 Создаем альтернативный план ......................................................................................205 Роль и значение HEAD ......................................................................................................209 Обращение к коммитам через HEAD ..........................................................................211 Обход коммитов слияния ...............................................................................................212 Отмена коммитов .............................................................................................................214 Удаление коммитов командой reset .........................................................................215 Три разновидности команды reset ...........................................................................216 Другой способ отменить коммиты ..............................................................................221 Реверсная отмена коммитов ..........................................................................................222 И-и-и-и-и-и-и... все получилось! ..................................................................................225 Мы все делаем ошибки, верно? Люди совершают ошибки с незапамятных времен, и долгое время ошибки обходились нам довольно дорого (в эпоху перфокарт и пишущих машинок нам приходилось все переделывать). Причина очевидна — тогда у нас не было системы контроля версий. Но теперь она есть! Git предоставляет широкие возможности для легкого и безболезненного исправления ошибок. Если вы случайно добавили файл в индекс, допустили опечатку в сообщении коммита или сделали неправильный коммит, Git раскрывает перед вами множество рычагов и кнопок, которыми можно воспользоваться, чтобы никто никогда не узнал о вашем... кхм... промахе. Прочитав эту главу, вы точно будете знать, что делать — независимо от того какую ошибку вы допустили. Итак, давайте сделаем несколько ошибок и научимся их исправлять.


12 Оглавление (с пояснениями) Удаленная работа 5 Êîìàíäíàÿ ðàáîòà ñ Git - ÷àñòü I Работа в одиночестве может быстро надоесть. В этой книге вы многое узнали о том, как устроен Git и как работать с его репозиториями. Вместе с вами мы использовали репозитории, которые инициализировали локально с помощью команды git init. Мы проделали большую работу — создали ветки, объединили их и использовали утилиты Git, такие как команды git log и git diff, чтобы отследить развитие репозитория. Но большинство проектов не такие. Мы часто работаем в командах с друзьями или коллегами. Git предлагает очень мощную модель совместной работы, в которой мы все можем делиться своими достижениями, используя общий репозиторий. Все начинается с того, что наш репозиторий становится публичным, что делает историю коммитов проекта "общей". В общедоступном репозитории вы можете делать все, чему научились до сих пор, точно так же, как раньше (за некоторыми исключениями). Вы можете создавать ветки и коммиты и добавлять их в историю коммитов наравне с коллегами или друзьями. Так устроена командная работа в Git. Но прежде чем мы перейдем к командной работе, давайте вместе разберемся, как работают публичные репозитории. Вперед, друзья! Клонирование репозитория Git ....................................................................................240 На старт, внимание, клон! ..............................................................................................244 Что происходит при клонировании? ...........................................................................248 Распределенная система контроля версий ................................................................250 Выгрузка обновлений ......................................................................................................254 Смотрите, куда выгружаете! ..........................................................................................259 Не фотографировать: публичные и частные коммиты ..........................................261 Стандартная рабочая процедура: ветки ....................................................................263 Слияние веток: вариант 1 (локальные слияния) .....................................................265 Выгрузка локальных веток ............................................................................................269 Слияние веток: вариант 2 (pull request) ...........................................................273 Создание запроса на слияние .......................................................................................280 Pull requests или merge requests? ................................................................278 Выполнение запросов на слияние ................................................................................280 Что дальше? .........................................................................................................................282


Оглавление (с пояснениями) 13 Команда, вперед! 6 Ñîâìåñòíàÿ ðàáîòà ñ Git - ÷àñòü II Параллельная работа ............................................................................................292 Параллельная работа... в Гитландии ..................................................................293 Совместная работа в стиле Git ...........................................................................295 Работа двух коллег на GitHub .............................................................................296 Как "догнать" изменения .......................................................................................304 Как "догнать" изменения (git pull) .............................................................306 Ваши посредники — ветки слежения ..............................................................310 Первая причина использовать ветки слежения ............................................311 Отправка в удаленный репозиторий: итог .....................................................319 Получение веток слежения ..................................................................................320 Вторая причина использовать ветки слежения: получение всех обновлений с удаленного репозитория .............................321 Совместная работа ................................................................................................325 Совместная работа: подведем итог ....................................................................329 Третья причина использовать ветки слежения: не забыть отправить ветки в репозиторий .....................................................330 Четвертая причина использовать ветки слежения: подготовка к выгрузке в репозиторий .............................................................332 git pull = git fetch + git merge! .........................................................337 Используйте git fetch + git merge. Избегайте git pull ...............338 Идеальный сценарий .............................................................................................341 Типичный рабочий процесс: начало .................................................................342 Типичный рабочий процесс: подготовка к слиянию ...................................343 Типичный рабочий процесс: локальное слияние или pullrequest? ...344 Наглядная схема рабочего процесса .................................................................346 Удаление рабочих веток ........................................................................................349 Готовы собрать команду? Git — фантастический инструмент для совместной работы, и у меня возникла блестящая идея научить вас всему этому — читая эту главу, вы объединитесь с кем-то еще! Вы будете опираться на сведения, полученные в предыдущей главе. Вы знаете, что работа с распределенной системой, такой как Git, включает в себя множество компонентов. Итак, что же Git предлагает нам для упрощения этой задачи и что вам нужно помнить, когда вы начинаете совместную работу с коллегами? Существуют ли какие-то специальные функции, облегчающие совместную работу? Сейчас вы об этом узнаете. На старт. Внимание. Клон! Скажи: "Команда, вперед!" Команда, вперед! Поехали!


14 Оглавление (с пояснениями) Выходим на новый уровень ...........................................................................................371 Изучение истории коммитов ........................................................................................373 Использование git blame ..........................................................................................375 git blame и менеджер репозиториев Git ...............................................................376 Поиск в репозитории Git ................................................................................................378 Поиск в репозитории Git с командой grep .................................................................. 379 Параметры команды git grep ....................................................................................380 Комбинация флагов команды git grep .................................................................381 Что не умеет делать git blame ..................................................................................383 Если копнуть поглубже логи (-S) ...............................................................................384 git log -S или blame? ...............................................................................................385 Использование флага -p c git log ..........................................................................386 Еще один флаг глубокого поиска с git log (-G)...................................................389 Окрошка из флагов Git ....................................................................................................392 Просмотр коммитов .........................................................................................................395 Отвязка указателя HEAD ................................................................................................396 История о потерянном указателе .................................................................................397 Поиск коммитов с командой git bisect ..............................................................401 Использование git bisect ........................................................................................402 Завершение git bisect ...............................................................................................404 Git идет искать! 7 Ïîèñê â ðåïîçèòîðèè Git Ваш проект и его история коммитов неизбежно будут расти. Время от времени вам придется искать в ваших файлах определенный фрагмент текста. Возможно, вы захотите узнать, кто изменил файл, когда он был изменен, а также выяснить, какой коммит его изменил. Git охотно поможет вам в этом. А еще есть ваша история коммитов. Каждый коммит представляет собой изменение. Git позволяет вам искать не только каждый экземпляр фрагмента текста в вашем проекте, но и время его добавления (или удаления). Это облегчает поиск нужных сообщений коммитов. В довершение всего, иногда нужно найти коммит, который привел к ошибке или опечатке. Git предлагает специальную команду, которая позволяет вам быстро сосредоточиться на этом коммите. Чего же мы ждем? Давайте попробуем найти что-нибудь в репозиториях Git!


Оглавление (с пояснениями) 15 #Советы профессионалов 8 Ýôôåêòèâíàÿ ðàáîòà ñ Git Конфигурирование Git ...................................................................................................415 Файл глобальных настроек .gitconfi g ...................................................................416 Конфигурация Git для конкретного проекта ...........................................................419 Просмотр конфигурации Git .........................................................................................421 Псевдонимы Git как личные пути ...............................................................................423 Настройка поведения псевдонимов Git .....................................................................424 Как заставить Git игнорировать некоторые файлы ...............................................427 Действие файла .gitignore ......................................................................................428 Управление файлом .gitignore ...............................................................................429 Пример файла .gitignore .........................................................................................431 Коммит раньше, коммит чаще .....................................................................................433 Пишите осмысленные сообщения коммитов ..........................................................435 Анатомия хорошего сообщения коммита .................................................................436 Анатомия хорошего сообщения коммита: заголовки ...........................................437 Анатомия хорошего сообщения коммита: тело ......................................................439 Слишком сложно? ............................................................................................................440 Используйте понятные имена веток ...........................................................................442 Работа с графическим интерфейсом ..........................................................................444 До сих пор в этой книге вы учились использовать Git. Но вы также можете подчинить Git своей воле. Именно поэтому так важно изучить детали его настройки. Вы уже начали настраивать Git в предыдущих главах, а в этой главе мы рассмотрим гораздо больше настроек, облегчающих вашу жизнь. Вы научитесь также определять ярлыки: долой многословные команды Git! Вы можете значительно упростить взаимодействие с Git. Я покажу, как заставить Git игнорировать определенные типы файлов, чтобы вы случайно не добавили их в коммит. Вы освоите продуманные способы написания сообщений коммитов и узнаете, как я люблю называть свои ветки. И в заключение мы рассмотрим, как графический пользовательский интерфейс Git может сыграть важную роль в вашем рабочем процессе. #поехали #недождусь


16 Оглавление (с пояснениями) Пять важных тем, о которых мы не говорили Ïðèëîæåíèå: îñòàòêè Мы рассмотрели много разных тем, и вы почти закончили читать эту книгу. Мне будет вас не хватать, но прежде чем мы расстанемся, было бы неправильно отправить вас в мир без дополнительной подготовки. Git предлагает множество функций, и я не смог бы уместить их все в одной книге. Поэтому я приберег несколько действительно интересных описаний для этого приложения. #1 Теги (запомни меня навсегда) .................................................................................456 #2 Команда cherry-pick (копирование коммитов) .........................................457 #3 Тайники (псевдокоммиты) .......................................................................................458 #4 Команда reflog (reference log) ....................................................................460 #5 Команда rebase (альтернатива merge) ............................................................461 Мы не прощаемся! ............................................................................................................464


Вступление Êàê èñïîëüçîâàòü ýòó êíèãó В этом разделе я отвечаю на интригующий вопрос: "Так зачем же они поместили ЭТО в книгу по Git?" Я поверить не могу, что они пишут такое в книге про Git!


18 Как использовать эту книгу Êîìó àäðåñîâàíà ýòà êíèãà? Êîìó ëó÷øå îòêàçàòüñÿ îò ýòîé êíèãè? Если вы можете ответить "да" хотя бы на один из двух вопросов: Если вы можете ответить "да" хотя бы на один вопрос: ... то эта книга для вас. ... тогда эта книга не для вас. [Примечание от маркетолога издательства: эта книга для каждого, у кого есть банковская карта] n Хотите научиться работать с самой популярной в мире системой контроля версий? o Сухим, унылым академическим лекциям вы предпочитаете оживленную беседу за обедом? n Вы абсолютный новичок в компьютерах? (Вам не нужно быть продвинутым программистом, но вы должны знать про папки и файлы, уметь открывать приложения и использовать простой текстовый редактор.) o Вы опытный знаток систем контроля версий, которому понадобилось техническое руководство? p Вы боитесь попробовать что-то новое? Вы предпочли бы обойтись без всех этих веток и корневых каталогов? Вы считаете, что техническая книга не может быть хорошей, если в ней используются забавные примеры?


Вступление 19 Ваш мозг считает, что ЭТО не стоит сохранять. Отлично. Еще 490 унылых, сухих, скучных страниц. "И это называют серьезной книгой про Git?" "Что за нелепые иллюстрации?" "Что я могу изучить с таким учебником?" Ваш мозг жаждет новизны. Он всегда ищет, сканирует, ждет чего-то необычного. Это помогает вам чувствовать себя живым. Что делает ваш мозг со всеми рутинными, обычными, повседневными вещами? Он изо всех сил старается оградить от них настоящую работу мозга — запоминать важные вещи. Мозг не беспокоится о сохранении скучных вещей; они никогда не проходят через "фильтр важности". Как ваш мозг узнает, что важно? Предположим, вы вышли на прогулку, и впереди мелькнул тигр. Что происходит внутри вашей головы и как отзывается на угрозу ваше тело? Возбуждение нейронов. Выброс адреналина. Химическая стимуляция. Так мозг принимает решение о важности происходящего... Это очень важно! Запомните это! Представьте, что вы сидите дома или в библиотеке. Там тепло, безопасно и не водятся тигры. Вы занимаетесь. Готовитесь к экзамену. Или пытаетесь изучить какуюнибудь сложную техническую тему, на которую, по мнению вашего босса, уйдет неделя, ну максимум 10 дней. Но есть одна проблема. Ваш мозг пытается сделать вам большое одолжение. Он пытается убедить вас, что этот явно неважный контент зря расходует скудные ресурсы. Ресурсы, которые лучше потратить на действительно важные вещи. Например, на тигров. Или на размышления, почему не нужно было выкладывать фотографии с вечеринки на своей странице в Facebook. И нет простого способа сказать своему мозгу: "Эй, мозг, большое тебе спасибо, но какой бы скучной ни была эта книга и как бы мало я сейчас не волновался по шкале эмоций Рихтера, я действительно хочу, чтобы ты делал эту скучную работу". ß çíàþ, î ÷åì âû äóìàåòå ß çíàþ, î ÷åì äóìàåò âàø ìîçã Ваш мозг думает, что ЭТО важнее всего сейчас.


20 Как использовать эту книгу Я считаю читателя этой книги своим учеником Так что же нужно, чтобы чему-то научиться? Сначала Вы должны что-то понять, а потом убедиться, что Вы это не забыли. Но моя задача не в том, чтобы вбивать Вам в голову факты. Согласно последним исследованиям в области когнитивистики, нейробиологии и педагогической психологии, обучение требует гораздо больше, чем чтение текста на странице. Я знаю, что заставляет Ваш мозг включиться. Вот основные принципы успешного обучения: Визуализируйте знания. Изображения гораздо лучше запоминаются, чем слова, и делают обучение намного более эффективным (запоминание до 89%). Они также делают концепции более понятными. Достаточно поместить слова внутри или рядом с изображением, к которому они относятся, а не внизу или на другой странице, и учащиеся в два раза чаще решают задачи, связанные с содержанием. Используйте разговорный и индивидуальный стиль. В недавних исследованиях учащиеся справлялись с тестами после обучения на 40% лучше, если автор обращался непосредственно к читателю, используя разговорный стиль от первого лица, а не формальный тон. Рассказывайте истории вместо того, чтобы читать лекции. Используйте непринужденный язык. Не относитесь к себе слишком серьезно. На что бы вы обратили больше внимания: на веселую вечеринку или на лекцию? Заставьте ученика вникать глубже. Если он не напрягает свои нейроны изо всех сил, в его голове ничего особенного не происходит. Читатель должен быть мотивирован, вовлечен, любопытен и вдохновлен на решение проблем, извлечение выводов и получение новых знаний. А для этого нужны задачи, упражнения и наводящие на размышления вопросы, а также действия, которые задействуют обе половины мозга и несколько органов чувств. Привлекайте и удерживайте внимание читателя. У всех нас был опыт "Я действительно хочу научиться этому, но засыпаю после первой страницы". Ваш мозг обращает внимание на необычные, интересные, странные, привлекательные, неожиданные вещи. Изучение новой сложной технической темы не должно быть скучным. Ваш мозг будет учиться намного быстрее, если вы бодры. Вызывайте эмоции. Известно, что способность человека запоминать что-либо во многом зависит от его эмоционального состояния. Вы запоминаете то, что вас взволновало. Вы помните, что чувствовали при этом. Нет, я не имею в виду душераздирающие истории о ребенке и собаке. Я говорю о таких эмоциях, как удивление, любопытство, веселье и чувство победы. Они возникают, когда вы решаете головоломку, осваиваете то, что все остальные считают сложным, или понимаете, что знаете нечто такое, чего не знает Великий Всезнайка Боб из инженерного отдела.


Вступление 21 Ìåòàïîçíàíèå: ìûøëåíèå î ìûøëåíèè Если вы действительно хотите учиться и желаете делать это быстрее и глубже, обратите внимание на то, как вы обращаете внимание на что-либо. Подумайте о том, как вы думаете. Узнайте, как вы учитесь. Большинство из нас не посещали курсы по метапознанию или теории обучения, когда росли. От нас ожидали, что мы будем учиться, но нас редко учили учиться. Я предполагаю, что если вы держите эту книгу в руках, вы действительно хотите научиться использовать Git. И вы, вероятно, не рассчитываете тратить на это много времени. Если вы хотите использовать то, что прочитали в этой книге, вам нужно запомнить то, что вы прочитали. А для этого вы должны это понять. Чтобы извлечь максимальную пользу из этой книги или любой книги или учебного опыта, возьмите на себя ответственность за свой мозг. Ваш мозг на этом контенте. Хитрость заключается в том, чтобы заставить ваш мозг воспринимать новый материал, который вы изучаете, как действительно важный, имеющий решающее значение для вашего благополучия, важный, как тигр. В противном случае вас ждет постоянная битва, и ваш мозг сделает все возможное, чтобы новый контент не прилипал к вам. Так как же заставить свой мозг относиться к Git как к голодному тигру? Есть медленный, утомительный способ или более быстрый и эффективный. Медленный способ заключается в простом повторении. Вы, очевидно, знаете, что способны выучить и запомнить даже самые скучные темы, если будете постоянно вбивать одно и то же в свой мозг. При достаточном количестве повторений ваш мозг говорит: "Это не кажется важным, но они продолжают смотреть на одно и то же снова и снова, так что я полагаю, что так и должно быть". Более быстрый способ — делать что-либо, что повышает мозговую активность, особенно различные виды мозговой активности. Умозаключения на предыдущей странице — большая часть решения, и все они, как было доказано, помогают вашему мозгу работать в вашу пользу. Например, исследования показывают, что размещение слов внутри изображений, которые они описывают (а не где-то еще на странице, например в подписи или в основном тексте), заставляет ваш мозг понять, как соотносятся слова и изображения, и это вызывает возбуждение большего количества нейронов. Больше нейронов активируется, значит, больше шансов для вашего мозга понять: это то, на что стоит обратить внимание и, возможно, записать. Разговорный стиль помогает, потому что люди, как правило, больше концентрируются, когда понимают, что они находятся в диалоге, поскольку ожидается, что они будут следовать за ним и поддерживать его. Удивительно, что ваш мозг не обязательно заботится о том, что "диалог" происходит между вами и книгой! С другой стороны, если стиль письма формальный и сухой, ваш мозг воспринимает его так же, как если бы вы присутствовали на лекции в аудитории, полной пассивных слушателей. Нет необходимости бодрствовать. Но картинки и разговорный стиль — это только начало… Интересно, как обмануть свой мозг, чтобы запомнить эти карты...


22 Как использовать эту книгу Âîò ÷òî ÌÛ ñäåëàëè Мы использовали визуальные эффекты, потому что ваш мозг настроен на них, а не на текст. Что касается вашего мозга, визуальное изображение действительно стоит тысячи слов. Зная, что текст и визуальные эффекты работают вместе, мы встроили текст в визуальные эффекты, потому что ваш мозг работает более эффективно, когда текст находится внутри того, на что он ссылается, а не в подписи или скрыт где-то в абзаце. Мы использовали избыточность, говоря одно и то же по-разному, донося информацию с помощью разных художественных приемов и воздействуя на разные чувства, чтобы повысить вероятность того, что контент будет закодирован более чем в одной области вашего мозга. Мы использовали концепции и визуальные образы неожиданным образом, потому что ваш мозг настроен на новизну, и мы использовали визуальные эффекты и идеи, по крайней мере, с некоторым эмоциональным содержанием, потому что ваш мозг настроен на то, чтобы обратить внимание на биохимию эмоций. То, что заставляет вас чувствовать, с большей вероятностью запомнится, даже если это чувство не более чем легкое чувство юмора, удивление или интерес. Мы использовали персонализированный разговорный стиль, потому что ваш мозг настроен на то, чтобы уделять больше внимания, когда он считает, будто вы разговариваете, чем если он думает, что вы пассивно слушаете презентацию. Ваш мозг делает это, даже когда вы читаете. Мы включили десятки видов деятельности, потому что ваш мозг настроен на то, чтобы учиться и запоминать больше, когда вы что-то делаете, чем когда вы читаете. И мы сделали упражнения сложными, но выполнимыми, потому что такой подход предпочитают большинство людей. Мы использовали несколько стилей обучения, потому что вы можете предпочесть пошаговые процедуры, в то время как кто-то желает сначала понять общую картину, а кто-то просто хочет увидеть пример. Но независимо от ваших собственных предпочтений в обучении, каждый выиграет от просмотра одного и того же контента, представленного разными способами. Мы включаем контент для обоих полушарий вашего мозга, потому что чем больше ваш мозг вы задействуете, тем больше вероятность, что вы будете учиться и запоминать, и тем дольше вы сможете оставаться сосредоточенным. Поскольку работа одной стороны мозга часто означает предоставление другой стороне возможности отдохнуть, вы можете более продуктивно учиться в течение более длительного периода времени. И мы включили истории и упражнения, которые представляют более одной точки зрения, потому что ваш мозг настроен на более глубокое обучение, когда он вынужден давать оценки и суждения. Мы включили задачи с упражнениями и задали вопросы, на которые не всегда есть прямой ответ, потому что ваш мозг настроен учиться и запоминать, когда он должен работать над чем-то. Подумайте об этом — вы не можете привести свое тело в форму, просто наблюдая за людьми в тренажерном зале. Но мы сделали все возможное, чтобы убедиться, что, усердно работая, вы поступаете правильно. Вы не тратите один лишний дендрит на обработку трудного для понимания примера или разбор сложного, жаргонного или слишком краткого текста. Мы использовали образы людей. В историях, примерах, изображениях, потому что, ну, потому что вы человек. И ваш мозг больше внимания уделяет людям, а не неодушевленным предметам.


Вступление 23 Итак, я сделал свою часть работы. Остальное зависит от вас. Эти советы являются отправной точкой; прислушайтесь к своему мозгу и выясните, что работает для вас, а что — нет. Попробуйте новые подходы. Вырежьте это и наклейте на холодильник. Ìíîãîå çàâèñèò îò ÂÀÑ n Чем больше вы понимаете, тем меньше вам приходится запоминать. Не спешите читать. Остановитесь и подумайте. Когда книга задает вам вопрос, не переходите сразу к ответу. Представьте, что кто-то действительно задает вопрос. Чем глубже вы заставляете свой мозг думать, тем больше у вас шансов учиться и запоминать. o Решайте задачи. Делайте записи. Если вы сразу заглядываете в ответы, это выглядит так, будто кто-то за вас подтягивается на турнике. Делайте записи. Существует множество доказательств того, что физическая моторика во время обучения может улучшить процесс обуче ния. p Читайте раздел "Вопрос — ответ". Эти разделы — важная часть базового материала. Не пропускайте их и вдумчиво изучайте! q Пусть это будет последняя сложная вещь, которую вы читаете перед сном. Часть обучения (особенно перенос в долговременную память) происходит после того, как вы отложите книгу. Вашему мозгу нужно время, чтобы сделать больше обработки. Если вы введете чтото новое в течение этого времени обработки, часть того, что вы только что узнали, будет потеряна. r Поговори об этом. Вслух. Речь активирует другую часть мозга. Если вы пытаетесь что-то понять или повысить свои шансы вспомнить это позже, произнесите это вслух. А еще лучше попробуйте объяснить это кому-нибудь вслух. Вы будете учиться быстрее и, возможно, обнаружите идеи, о существовании которых не подозревали, когда читали об этом. s Пейте много воды. Ваш мозг лучше всего работает в приятной ванне с жидкостью. Обезвоживание (которое может произойти еще до того, как вы почувствуете жажду) снижает когнитивную функцию. t Прислушивайтесь к своему мозгу. Обратите внимание, не перегружается ли ваш мозг. Если вы обнаружите, что начинаете скользить по поверхности или забываете то, что только что прочитали, пришло время сделать перерыв. Как только вы пройдете определенную точку, вы не будете учиться быстрее, пытаясь впихнуть больше, и лишь навредите процессу. u Прочувствуйте чтение. Ваш мозг должен знать, что это важно. Присоединяйтесь к историям. Придумайте свои собственные подписи к фотографиям. Постонать из-за неудачной шутки все же лучше, чем вообще ничего не чувствовать. v Занимайтесь ежедневно. Есть только один способ научиться правильно использовать Git: использовать его каждый день. В этой книге вы будете много использовать Git, как и любой другой навык, и единственный способ овладеть им — это практиковаться. Мы собираемся обеспечить вам много практики: в каждой главе есть упражнения с постановкой перед вами задачи, которую нужно решить. Не пропускайте их просто так — большая часть обучения происходит, когда вы решаете упражнения. Мы приложили решение к каждому упражнению — не бойтесь взглянуть на решение, если вы застряли! (Легко зацепиться за что-то маленькое.) Однако постарайтесь решить проблему, прежде чем читать решение. И обязательно заставьте его работать, прежде чем перейдете к следующей части книги.


24 Как использовать эту книгу Îáðàòèòå âíèìàíèå Это учебное пособие, а не справочник. Мы намеренно убрали все, что может помешать изучению того, над чем мы работаем в данный момент. И вам нужно начать с самого начала, потому что книга делает предположения о том, что вы уже видели и узнали. Всё разобрать, а затем построить заново. Мы фанаты дразнить. Это дает нам возможность сосредоточиться моментально на одном аспекте Git. Мы используем много изображений для объяснения, что делает Git, когда вы выполняете какую-либо операцию. Мы позаботимся о том, чтобы у вас было глубокое понимание каждого аспекта и уверенность в том, что вы знаете, когда и как их использовать. Только тогда мы начинаем собирать кирпичики вместе, чтобы объяснять более сложные идеи в Git. Мы не обещаем охватить все. Мы используем подход 80/20. Предполагаем, что если вы собираетесь получить докторскую степень по Git, эта книга не будет вашим единственным источником. Так что обо всем не говорим. Только то, что вы действительно будете использовать, и что вам поможет взяться за дело. Упражнения НЕ являются дополнительным материалом. Упражнения и задачи являются частью основного содержания книги. Некоторые из них предназначены для улучшения памяти, другие — для понимания, а третьи помогут вам применить то, что вы узнали. Не пропускайте упражнения. Они дают вам возможность взглянуть с практической стороны на термины и понятия, которые вы изучаете. Избыточность является преднамеренной и важной. Одно явное отличие книги Head First заключается в том, что мы хотим, чтобы вы действительно ее поняли. И мы рассчитываем, что, дочитав книгу до конца, вы вспомните, что узнали. В большинстве справочников не ставится задача запоминания и припоминания, но эта книга нацелена на обучение, поэтому вы увидите, что одни и те же понятия встречаются несколько раз. Примеры максимально общие и правдоподобные. Большинство руководств по Git предназначены специально для разработчиков, и примеры обычно включают код. Мы не знаем, к какой категории читателей относитесь именно вы. Мы намеренно сделали примеры в этой книге общими, но интересными, увлекательными и откровенно забавными. Мы уверены, что вы сможете познакомиться с ними и научиться использовать Git независимо от того, какую работу вы выполняете.


Вступление 25 Наконец, мы хотим, чтобы вы узнали о Git; мы не собираемся учить вас печатать. Для упрощения задачи мы разместили все файлы примеров в Интернете, чтобы вы могли просто загрузить их. Вы найдете инструкции по адресу: https://i-love-git.com. У упражнений "Сила разума" нет ответов. Для некоторых упражнений нет правильного ответа, а для других часть опыта обучения заключается в том, чтобы вы сами решали, верны ли ваши ответы и когда именно. В отдельных упражнениях "Сила разума" вы найдете подсказки, которые укажут вам правильное направление. Не на все упражнения "Тест-драйв" есть ответы. Для некоторых упражнений мы просто просим вас следовать набору инструкций. Увас будет возможность проверить, действительно ли то, что вы сделали, сработало, но, в отличие от других упражнений, здесь нет правильных ответов. Âàì íóæíî óñòàíîâèòü Git (macÎS) Скорее всего, на вашем компьютере не установлен Git, а если и установлен, то его версия могла устареть. На момент написания книги актуальной версией Git была 2.34. Хотя не обязательно устанавливать самую последнюю и лучшую версию Git, необходимо, чтобы вы установили версию 2.23 или более позднюю. Вот как это делается. Для macOS откройте ваш браузер и введите адрес: https://git-scm.com На этой странице вы должны увидеть ссылки для скачивания под macOS. Если их не видно, загляните в раздел Downloads (Загрузки) на странице. 1. Нажмите на кнопку Download. 2. На этой странице перечислены несколько способов установки Git. Вы можете использовать менеджер пакетов, например Homebrew, или скачать установщик. 3. Если вы решите использовать установщик, загрузите его. Затем откройте установочный пакет в папке загрузок и следуйте инструкциям по установке. Обратите внимание, что для установки Git вам потребуются права администратора — если вы и раньше устанавливали приложения В , проблем не будет. противном случае обратитесь к администратору.


26 Как использовать эту книгу Ïðîâåðêà óñòàíîâêè ïðè ïîìîùè òåðìèíàëà Операционная система macOS поставляется со встроенным терминалом. Вы можете использовать терминал и убедиться, что ваша установка Git прошла успешно, а, учитывая, что вы будете часто использовать терминал в этой книге, заодно потренируетесь работать с ним. Вы найдете Terminal.app в папке Applications > Utilities. Когда вы запустите терминал, вас встретит подсказка командной строки. Введите команду git version, и вы должны увидеть что-то вроде этого: Вы также можете использовать Spotlight для поиска терминала. В зависимости от того, когда вы читаете эту книгу, у вас может быть другая версия. Если Git отвечает номером версии, установка прошла успешно. У вас вывод может отличаться в зависимости от того, как был настроен терминал. Вы можете выбрать пункт меню Terminal > Quit Terminal (Терминал > Выйти из терминала), чтобы выйти из приложения. Не волнуйтесь, если вы никогда раньше не работали с терминалом. В главе 1 есть целый раздел, который поможет вам быстро освоить нужные команды. Âàì íóæíî óñòàíîâèòü Git (Windows) Для Windows откройте ваш браузер и введите адрес: https://git-scm.com 1. Нажмите кнопку Download. 2. Выберите сохранение либо запуск исполняемого файла. В первом случае вручную запустите программу установки после ее загрузки. 3. На вашем экране появится окно установщика. Я рекомендую придерживаться значений по умолчанию.


Вступление 27 4. В окне Select Components (Выбрать компоненты), убедитесь, что отмечены флажки Windows Explorer Integration (Интеграция с проводником Windows), Git Bash Here и Git GUI Here. Обратите внимание, что для установки Git вам потребуются права администратора — если вы и раньше устанавливали приложения, проблем не будет. В противном случае обратитесь к администратору. Ïðîâåðêà óñòàíîâêè ñ ïîìîùüþ Git Bash В ходе установки Git в Windows вы также установили приложение под названием Git Bash. На протяжении всей этой книги вы будете использовать Git Bash в качестве интерфейса командной строки для Git, так что давайте попрактикуемся. Нажмите в Windows кнопку Пуск, и вы увидите Git Bash в списке пунктов меню раздела Git. Щелкните по нему, и вас встретит окно терминала с подсказкой. Введите команду git version, и вы должны увидеть что-то вроде этого: Примечание для пользователей Linux: За вас я не беспокоюсь. Давайте будем реалистами - вы и так знаете, что делать. Просто возьмите подходящий дистрибутив с https://git-scm.com. В дальнейшем, когда я говорю "терминал" или "командная строка", это сигнал для запуска приложения Git Bash. Не беспокойтесь, на случай, если вы новичок в использовании терминала, я включил в главу 1 целый раздел, чтобы вы могли быстрее освоиться.


28 Как использовать эту книгу Âàì íóæíî óñòàíîâèòü òåêñòîâûé ðåäàêòîð (macÎS) Да, я знаю, что мы с вами едва знакомы, но я могу немного помечтать, не так ли? Большинство упражнений в этой книге связаны с использованием текстового редактора. Если у вас уже есть любимый редактор, можете смело пропустить этот раздел. С другой стороны, если у вас нет текстового редактора или вы достаточно доверяете мне, чтобы прислушаться к моему совету, я рекомендую использовать Visual Studio Code. Это бесплатный текстовый редактор с открытым исходным кодом от Microsoft . Мне он очень нравится, потому что он поставляется с хорошими настройками по умолчанию. Это означает, что вы можете начать использовать его немедленно, и он удачно интегрируется с Git. Для macOS с помощью браузера перейдите по адресу: https://code.visualstudio.com Вы должны увидеть кнопку загрузки установщика: 1. Нажмите кнопку Download для скачивания zip-архива Visual Studio Code в папку Downloads (Загрузки). 2. Дважды щелкните загруженный zip-файл, чтобы извлечь файл приложения. Перетащите файл приложения в папку Applications (Приложения). 3. Запустите Visual Studio Code, дважды щелкнув по значку файла приложения в папке Applications. 4. Нажмите комбинацию клавиш <Cmd>+<Shift >+<P>, чтобы увидеть "палитру команд" Visual Studio Code. Введите shell command (команда оболочки) и выберите параметр Shell Command: Install 'code' command in PATH (добавить команду 'code' в переменную PATH): Это "палитра команд" Visual Studio Code. Вот и все! С этого момента и впредь, каждый раз, когда я прошу вас запустить текстовый редактор или отредактировать файл, вы будете обращаться к Visual Studio Code. Рекомендую поместить ярлык редактора в Dock для быстрого запуска.


Вступление 29 Âàì íóæíî óñòàíîâèòü òåêñòîâûé ðåäàêòîð (Windows) Windows поставляется с приложением Блокнот в качестве текстового редактора по умолчанию. У него есть некоторые особенности, которых лучше избегать, поэтому я настоятельно не рекомендую его использовать. Если вы еще не нашли замену, советую установить Visual Studio Code от Microsoft . Visual Studio Code — это текстовый редактор с широким набором функций, который может служить отличной заменой Блокноту и другим средствам редактирования текста. Для Windows с помощью браузера перейдите по адресу: https://code.visualstudio.com Вы должны увидеть кнопку для скачивания установщика под Windows. 1. Нажмите кнопку Download для скачивания Visual Studio Code. 2. Двойным щелчком запустите исполняемый файл в папке загрузок. Рекомендую принять все значения по умолчанию. В окне Select Additional Tasks (Выбрать дополнительные задачи) обязательно отметьте флажки Register Code as an editor for supported fi le types (Зарегистрировать код как редактор для поддерживаемых типов файлов) и Add to PATH (requires shell restart) (Добавить в PATH [требуется перезапуск оболочки]). Обязательно ознакомьтесь с другими опциями, предлагаемыми на этом экране. Они могут упростить открытие файлов с помощью Visual Studio Code. Вот и все! Каждый раз, когда я прошу вас отредактировать файл с помощью текстового редактора, вы будете обращаться к Visual Studio Code. Забудьте про Блокнот!


30 Как использовать эту книгу Âàì ïîíàäîáèòñÿ ó÷åòíàÿ çàïèñü GitHub Если у вас еще нет учетной записи GitHub, давайте создадим ее. Если у вас уже есть рабочая учетная запись на GitHub, рекомендую создать личную учетную запись только для этой книги. (Это не обязательно, так что действуйте по своему усмотрению.) Чтобы создать учетную запись на GitHub, запустите браузер и перейдите на сайт: https://github.com 1. Рядом с кнопкой Sign up for GitHub (Зарегистрироваться на GitHub) расположено поле ввода, в котором необходимо указать адрес электронной почты. 2. Пройдитесь по пунктам мастера регистрации, указав имя пользователя и надежный пароль. 3. Вы можете выбрать опцию Free (Бесплатно). (Вы можете изменить этот выбор позже, если захотите.) Уже почти все настроено! Осталось несколько шагов, обещаю! Ïîëó÷åíèå òîêåíà ïåðñîíàëüíîãî äîñòóïà GitHub требует, чтобы вы установили специальный токен, если вы когда-нибудь захотите аутентифицировать себя с помощью командной строки. Вы будете это делать, начиная с главы 5, так что заодно сейчас получим и токен. 1. Войдите на github.com, используя свое имя пользователя и пароль. Нажмите на значок своего профиля в правом верхнем углу, чтобы открыть меню. Выберите пункт Settings (Настройки). 2. На следующем экране найдите Developer settings (Настройки разработчика) в меню слева. 3. Далее щелкните по пункту Personal access tokens (Токены личного доступа). Вы перейдете к экрану создания токена, который будет служить ключом доступа через терминал. 4. Вы должны увидеть кнопку Generate new token (Создать новый токен) в правом верхнем углу. Нажмите ее. Меню вашего профиля на GitHub Вот она!


Вступление 31 5. Затем вам необходимо ввести примечание в поле Note (Примечание), которое служит напоминанием о том, почему вы создали этот токен. Я назвал свой токен headfi rst-git. Срок действия токена я выбрал равным 90 дням. Наконец, обязательно установите флажок repo, чтобы дать этому токену полный контроль над частными репозиториями. 6. GitHub покажет вам последний экран с токеном. Скопируйте этот токен доступа и сохраните его в безопасном месте — он дает вам (и кому угодно) доступ к вашей учетной записи GitHub. Относитесь к нему бережно. Если вы потеряете токен, вам придется удалить его и повторить все это упражнение заново. Если чтение книги займет у вас больше 90 дней (а я уверен, что этого не произойдет), вам придется повторить это упражнение. Заметка Срок действия Обязательно выберите эту опцию. Скопируйте токен и сохраните в надежном месте, например, в менеджере паролей. Относитесь к этому токену доступа так же, как к любому другому паролю. А если вы его потеряете, просто вернитесь сюда, нажмите кнопку Delete (Удалить) и повторите упражнение.


32 Как использовать эту книгу Íåìíîãî îá îðãàíèçàöèè âàøèõ ôàéëîâ è ïðîåêòîâ На протяжении всей этой книги вы будете работать над примерами различных проектов. Я рекомендую организовать ваш код по главам. Предполагаю создавать одну папку для каждой главы, например: Я создал каталог верхнего уровня с именем headfirstgit-samples для размещения всех проектов этой книги. И папки для каждой главы с именами chapter01, chapter02 и т. д. На протяжении всей книги я буду подсказывать вам, как называть ваши папки и файлы. Зайдите также на сайт https://i-love-git.com Там вы найдете инструкции по загрузке всех файлов (упорядоченных по главам), которые вам понадобятся. Советую вам заранее скачать их и держать под рукой. Не  стесняйтесь копировать их, когда вам нужно — они существуют только для того, чтобы избавить вас от набора текста. Прошу вас аккуратно следовать всем инструкциям в упражнениях и вводить все команды, которые встретите в книге. Это поможет вам развить мышечную память для работы с Git и закрепить команды в памяти. Обратите внимание, что для некоторых упражнений я предоставляю несколько версий одного и того же файла. В этих случаях я добавляю номер версии в конце — например, FAQ-1.md, FAQ-2.md и т. д. В каждом упражнении я буду давать вам подробные инструкции о том, как использовать эти файлы, но решил указать на этот нюанс заранее.


Вступление 33 Òåõíè÷åñêèå ðåöåíçåíòû Позвольте представить мою команду! Даниэль Инохоса Мэтт Кордиал Нейт Шутта Мэтт Форсайт Нихар Шах Венкат Субраманиам Мне посчастливилось собрать мощную команду для рецензирования этой книги, включая старших разработчиков, архитекторов программного обеспечения, известных ораторов и плодовитых авторов книг. Эти эксперты прочитали каждую главу, выполнили упражнения, исправили мои ошибки и предоставили подробные комментарии к каждой странице этой книги. Они также выступали в качестве моих наставников, помогая мне работать с идеями, аналогиями и изложением — и даже советуя, как должна быть организована эта книга. Каждый рецензент внес огромный вклад в эту книгу и значительно улучшил ее качество. Я глубоко ценю бесчисленные часы, которые они потратили на изуче ние рукописи, и остаюсь в долгу перед ними. Спасибо! Хотя я старался, чтобы в этой книге не было ошибок и упущений, я готов первым признать, что это почти недостижимая цель. Просто знайте, что все без исключения упущения — мои и только мои.


34 Как использовать эту книгу Áëàãîäàðíîñòè Написание книги часто считают трудом одного человека. Но я не живу на необитаемом острове. Я стараюсь воплощать ценности, переданные мне моей семьей, учителями и наставниками. Моя работа опирается на плечи гигантов — мастеров прошлого и настоящего, которые работали и продолжают работать не покладая рук, чтобы сделать мир лучше. На обложке вы видите мое имя, но большая заслуга в создании книги принадлежит этим людям. Мой редактор: Моя самая большая благодарность адресована редактору книги Саре Грей (Sara Grey). Она перечитывала каждую главу несколько раз, выполняла все упражнения, корректировала курс, когда я слишком углублялся в дебри, и помогла мне вовремя закончить эту книгу. Если вы обнаружите, что у вас текут слюнки при виде аппетитного меню в этой книге или наворачиваются на глаза слезы при чтении стихов, что ж, заслуга по праву принадлежит Саре. Она сыграла важную роль в развитии этой книги от замысла до выпуска. Я искренне счастлив, что у меня есть такой редактор, как Сара. Команда издательства O᾿Reilly: Большое спасибо всей команде O᾿Reilly Media, включая Кристен Браун за то, что наша книга заслуживает публикации, и Шэрон Трипп за острый и проницательный взгляд при редактировании. И если вы, как и я, постоянно пользуетесь предметным указателем, вам следует поблагодарить Тома Динса. Я хотел бы поблагодарить Мелиссу Даффилд за поддержку (и терпение) на протяжении всего этого процесса и Райана Шоу за то, что он поддержал проект моей книги. Большое спасибо команде онлайн-курсов O᾿Reilly, особенно Джону Девинсу и Ясмине Греко, за то, что они предоставили мне платформу для обучения тысяч разработчиков по всему миру навыкам работы с Git. Спасибо команде раннего выпуска, которая выложила необработанные и неотредактированные главы для аудитории на платформе O᾿Reilly, чтобы читатели могли просмотреть их в том виде, в каком они были написаны. Это дало многим нашим читателям возможность сообщить об ошибках и оставить отзывы, которые сделали эту книгу намного лучше. Наконец, было бы упущением не упомянуть Элизабет Робсон и Эрика Фримена. Они нашли время, чтобы просмотреть мою работу и убедиться, что она соответствует видению, которое представляет собой серия Head First, не говоря уже о том, что дали несколько действительно полезных советов по InDesign — спасибо! Великолепная Сара Грей


Вступление 35 Äëÿ òåõ, êòî ïîäóìàë, ÷òî áëàãîäàðíîñòè çàêîí÷èëèñü* Отдельное спасибо вам: Джей Циммерман, директор сети конференций No Fluff Just Stuff (NFJS). Спасибо, что дали мне шанс десять лет назад. Благодаря вам я получил возможность выступать на конференциях в Соединенных Штатах и по всему миру, а также встречаться с выдающимися и успешными людьми, которые и по сей день продолжают меня вдохновлять. Публичные выступления также дали мне возможность преподавать и говорить о Git, а мои регулярные взаимодействия с умной и талантливой аудиторией помогли отточить материалы, которые легли в основу этой книги. Венкат Субраманиам, всемирно известный оратор, учитель, консультант, плодовитый автор со сверхъестественной способностью превращать трудные вещи в развлечение, друг и наставник — вы меня вдохновляете. Я понимаю, что могу лишь мечтать стать таким же. Марк Ричардс, коллега по O᾿Reilly, всемирно известный архитектор и оратор, замечательный человек — вы невольно привели в движение механизм создания этой книги. Мэтью Маккалоу и Тим Берглунд, которые давным-давно написали книгу Mastering Git (https://www.oreilly.com/library/view/mccullough-andberglund/ 9781449304737) и открыли мне глаза на элегантность Git. Вы всегда будете моими кумирами. Бесчисленное количество людей, которые вносят свой вклад в Git, и те, кто обогащает экосистему вокруг Git, публикуя подробные статьи в блогах, создавая информативные видеоролики и отвечая на вопросы о Stack Overfl ow, — я впечатлен вашей работой и надеюсь, что эта книга станет ценным дополнением к вашим потрясающим усилиям. Спасибо. Моя вечно терпеливая, гораздо лучшая половина, Мишель, которая взяла на себя все дела, чтобы я мог сосредоточиться на этой книге. Некоторые примеры в этой книге рождены ее творческим умом. Я тебя люблю. Моя семья и мои сестры, которые (несмотря на их пылкое отрицание) сделали меня таким, какой я есть. И, наконец, вы, читатели. Ваше внимание — дефицитный ресурс, и я очень ценю время, которое вы потратите на эту книгу. Приятного обучения. А теперь вперед, осваивать Git! * Здесь так много благодарностей, потому что я проверяю теорию, что каждый, кого упомянули в книге, купит хотя бы один экземпляр, а возможно, и больше — для родственников и друзей. Если вы хотите получить благодарность в моей следующей книге и у вас большая семья, напишите мне. Я заметил, что музыканты уже сложили инструменты, поэтому пора завершить представление.


Приступим 1. Çíàêîìñòâî ñ Git к делу Ну что, готовы начать? Нам нужен контроль версий! Каждый программный проект начинается с идеи, реализованной в исходном коде. Эти файлы — сердце наших приложений, поэтому следует относиться к ним с осторожностью. Мы должны быть уверены, что храним их в безопасности, сохраняем историю изменений и приписываем заслуги (или вину!) законным авторам. Мы также должны обеспечить комфортное сотрудничество между несколькими членами команды. Вдобавок нам нужно, чтобы все это было в одном инструменте, который всегда под рукой, но не мешает нам и срабатывает только в нужный момент. Существует ли такой волшебный инструмент? Наверное, вы догадываетесь, каков будет ответ. Конечно, это Git! Разработчики и организации по всему миру любят Git. Так что же делает Git таким популярным?


Что такое контроль версий? 37 Çà÷åì íàì íóæåí êîíòðîëü âåðñèé Возможно, вы играли в видеоигры, для прохождения которых требуется больше одного подхода. По мере прохождения игры вы выигрываете и проигрываете несколько сражений и можете приобрести оружие или создать армию. Время от времени вы пытаетесь выполнить определенное задание более одного раза. Многие игры позволяют сохранять ваши достижения. Допустим, вы только что сразили огненного дракона, и теперь по сюжету игры вам предстоит пробиться к огромной сокровищнице. Вы решаете на всякий случай сохранить своего персонажа, а затем продолжить приключение. Вы создаете "моментальный снимок"игры в ее нынешнем виде. Хорошая новость заключается в том, что теперь, даже если вас внезапно настигнет безвременная кончина, когда на вас нападут гадкие ящерицы, плюющиеся кислотой, вам не придется возвращаться к самому началу. Вместо этого вы просто загружаете снимок игры и повторяете попытку. Огненный дракон остался позади! Контроль версий позволяет вам делать то же самое с вашей работой — он дает вам возможность сохранить достижения. Вы можете немного поработать, сохранить проект и продолжить работу. Такой "моментальный снимок" — это способ записи набора изменений, поэтому, даже если вы внесли изменения в кучу файлов в своем проекте, все они сохранятся в одном снимке. Это означает, что если вы допустили ошибку или, возможно, вас не устраивает текущее решение, вы можете просто вернуться к своему предыдущему снимку. С другой стороны, если вы довольны, вы просто создаете еще один снимок и продолжаете стучать по клавиатуре. И это еще не все. Система контроля версий, такая как Git, позволяет вам легко работать вместе с коллегами над одним и тем же набором файлов, не наступая друг другу на пятки. Мы подробнее остановимся на этом в последующих главах, а пока вам достаточно просто знать о такой возможности. Git — это ваш банк памяти, система безопасности и платформа для совместной работы, объединенные в одном инструменте! Понимание принципа контроля версий и Git, в частности, — понимание того, на что он способен и как влияет на рабочие процессы, — сделает вашу работу по-настоящему продуктивной. До знакомства с Git я утопала в беспорядке. А теперь взгляните на меня!


38 Знакомство с Git Поздравляем! Ваша компания только что получила контракт на создание "ГавЛав" — первого в мире приложения для знакомств среди пушистых друзей человека. Тем не менее конкуренты не дремлют даже в мире собак, и у нас не так много времени, чтобы тратить его впустую! Так трудно листать страницы лапой. Ну почему никто не придумает приложение знакомств для собак? Эх... ООО "Доктор Мопс" г. Громколайск, ул. Коротких Хвостов, 12 Техническое задание Поздравляем, вы победили в конкурсе на разработку лучшего в мире приложения для собачьих знакомств "ГавЛав". Это приложение позволит вашему пушистому другу расширить круг общения, найти друзей, а может быть, и спутника жизни! Используя самые последние достижения в области машинного обучения и интуитивно понятный интерфейс, специально разработанный с учетом потребностей вашей собаки, мы постараемся стать лидером отрасли в короткие сроки. Мы считаем, что правильно рассчитали время для выхода на рынок, но понимаем, что конкуренция высока. Кроме того, это первая попытка сделать что-то подобное, значит, мы должны проверять любые идеи. Мы ожидаем, что будем тесно сотрудничать с вами и вашими разработчиками по мере того, как мы приближаемся к нашему первому релизу. Мы с нетерпением ждем наброски дизайна и альфа-версию приложения. Искренне Ваш, Директор Джонни Гавус


Знакомство с Git 39 Ðàçãîâîð â îôèñå ðàçðàáîò÷èêîâ Мардж: Нам стоит использовать систему контроля версий. Сангита: Я слышала о такой системе, но никогда не пользовалась. Вряд ли сейчас подходящее время, чтобы изучать что-то новое. Мардж: Начать работу с Git — проще некуда. Нужно лишь создать репозиторий Git, только и всего. Сангита: Что-что нужно создать? Мардж: Репозиторий — это особая папка, которой управляет Git. Тебе ведь нужно будет где-то разместить все файлы нового проекта, так? Сангита: Мне нравится хранить все рабочие файлы проекта в одной главной папке. Так их проще найти. Мардж: Отлично! Когда создашь папку, используй Git, чтобы указать, что именно в ней будет репозиторий. Это очень просто. Сангита: И зачем это нужно? Мадж: Всякий раз, когда ты создаешь новый проект, который будет находиться под контролем Git, тебе нужно запустить команду Git, чтобы подготовить папку к работе. Представь, что тебе нужно завести двигатель автомобиля перед тем, как поехать. Сангита: Хм-м-м... Ну ладно... Мардж: Достаточно одной команды, и твоя папка готова к работе с Git. Это так же просто, как повернуть ключ зажигания и завести мотор. Сангита: Да, звучит неплохо! Мардж: Позови меня, если тебе что-то понадобится. Я буду поблизости на всякий случай. Сангита Раньше мы не создавали такие приложения. Придется учиться и нанимать новых разработчиков. Как мне с этим справиться?


Пять важных тем, о которых мы не говорили ïðèëîæåíèå: îñòàòêè Мы рассмотрели много разных тем, и вы почти закончили читать эту книгу. Мне будет вас не хватать, но прежде чем мы расстанемся, было бы неправильно отправить вас в мир без дополнительной подготовки. Git предлагает множество функций, и я не смог бы уместить их все в одной книге. Поэтому я приберег несколько действительно интересных описаний для этого приложения. Oго! Тортик!


456 команда tag #1 Òåãè (çàïîìíè ìåíÿ íàâñåãäà) Вы знаете, что ветки Git — это просто именованная ссылка на коммит. Когда вы делаете новый коммит, Git перемещает указатель на новый идентификатор коммита в этой ветке. Теги, как и ветки, также являются ссылками на коммиты, за исключением того, что после создания они никогда не перемещаются. Теги очень полезны, если вы хотите пометить коммит, чтобы потом легко его найти и  получить. Я использую теги для записи ориентиров в истории проекта. Например, вы можете пометить коммит, который содержит определенную версию программного обеспечения, или коммит, исправляющий особенно неприятную ошибку. Для создания тега Git предлагает команду git tag: git tag Команда tag. v1.0.0 Укажите имя тега. По умолчанию команда tag использует текущий идентификатор (тот, на который указывает HEAD). Однако вы можете указать конкретный идентификатор коммита после имени тега. git tag v2.0.0 Укажите ID коммита для тега. 049896f Имена тегов подчиняются тем же правилам, что и имена ветвей. В них нельзя использовать пробелы (вместо них мне нравится записывать дефисы), но они могут содержать косую черту и точки. Чтобы вывести список всех тегов в вашем репозитории, нужно добавить к команде git tag флаг -l (строчная буква "L", сокращение от --list). Теги, как и ветки, являются частью вашей истории коммитов, и вы можете поделиться ими с коллегами через удаленный репозиторий. Команды fetch и push поддерживают флаг --tags. Наличие этого флага гарантирует, что история коммитов для всех, кто работает с общим репозиторием, точно отражает все теги, которые являются частью вашей истории коммитов. Один важный момент — старайтесь не называть тег тем же именем, что и ветку. Подобно тому, как я советовал помещать ваши инициалы в названия веток, рекомендую использовать соответствующие префиксы для имен тегов. Мне нравится использовать букву "v" для обозначения номеров версий. Команда git pull поддерживает флаг --tags. Тег, как и ветка, является именованной ссылкой на коммит. Пока у вас есть тег, указывающий на коммит, он всегда будет доступен, даже если на него не указывает ветка или дочерний коммит. Крутому кодеру


464 приложение: остатки Не знали об этом сайте? У нас есть обновления, интересные ссылки, посты и многое другое! Ìû íå ïðîùàåìñÿ! Скорее переходите на сайт https://i-love-git.com


Click to View FlipBook Version