ebook img

Pro Git (Русский) PDF

2012·4 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Pro Git (Русский)

Pro Git ScottChacon* 2012-08-31 *ThisisthePDFfilefortheProGitbookcontents. ItislicensedundertheCreativeCommonsAttribution- Non Commercial-Share Alike 3.0 license. I hope you enjoy it, I hope it helps you learn Git, and I hope you’llsupportApressandmebypurchasingaprintcopyofthebookatAmazon: http://tinyurl.com/ amazonprogit Содержание 1 Введение 1 1.1 Обуправленииверсиями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Локальныесистемыуправленияверсиями . . . . . . . . . . . . . . . . . 1 1.1.2 Централизованныесистемыуправленияверсиями . . . . . . . . . . . . . 2 1.1.3 Распределённыесистемыконтроляверсий . . . . . . . . . . . . . . . . . 3 1.2 КраткаяисторияGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 ОсновыGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 Слепкивместопатчей. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.2 Почтивсеоперации—локальные . . . . . . . . . . . . . . . . . . . . . . 5 1.3.3 Gitследитзацелостностьюданных . . . . . . . . . . . . . . . . . . . . . 6 1.3.4 ЧащевсегоданныевGitтолькодобавляются. . . . . . . . . . . . . . . . 6 1.3.5 Трисостояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 УстановкаGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.1 Установкаизисходников . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.2 УстановкавLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.3 УстановканаMac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.4 УстановкавWindows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5 ПервоначальнаянастройкаGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Имяпользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.2 Выборредактора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.3 Утилитасравнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.4 Проверканастроек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6 Какполучитьпомощь? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.7 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 ОсновыGit 13 2.1 СозданиерепозиторияGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 Созданиерепозиториявсуществующемкаталоге . . . . . . . . . . . . . 13 2.1.2 Клонированиесуществующегорепозитория . . . . . . . . . . . . . . . . 14 2.2 Записьизмененийврепозиторий . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.1 Определениесостоянияфайлов . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.2 Отслеживаниеновыхфайлов. . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2.3 Индексацияизмененныхфайлов . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.4 Игнорированиефайлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.5 Просмотриндексированныхинеиндексированныхизменений . . . . . . 19 2.2.6 Фиксацияизменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 iii 2.2.7 Игнорированиеиндексации . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.8 Удалениефайлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.9 Перемещениефайлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3 Просмотристориикоммитов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3.1 Ограничениевыводакомандыlog . . . . . . . . . . . . . . . . . . . . . . 30 2.3.2 Использованиеграфическогоинтерфейсадлявизуализацииистории . . 31 2.4 Отменаизменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.1 Изменениепоследнегокоммита . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.2 Отменаиндексациифайла . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.3 Отменаизмененийфайла . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5 Работасудалённымирепозиторями . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.1 Отображениеудалённыхрепозиториев . . . . . . . . . . . . . . . . . . . 34 2.5.2 Добавлениеудалённыхрепозиториев . . . . . . . . . . . . . . . . . . . . 35 2.5.3 FetchиPull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5.4 Push . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.5 Инспекцияудалённогорепозитория . . . . . . . . . . . . . . . . . . . . . 37 2.5.6 Удалениеипереименованиеудалённыхрепозиториев . . . . . . . . . . . 38 2.6 Работасметками. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6.1 Просмотрметок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6.2 Созданиеметок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6.3 Аннотированныеметки . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6.4 Подписанныеметки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.6.5 Легковесныеметки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.6.6 Верификацияметок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.6.7 Выставлениеметокпозже . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.6.8 Обменметками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.7 Полезныесоветы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.7.1 Автоматическоедополнение . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.7.2 ПсевдонимывGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.8 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3 ВетвлениевGit 47 3.1 Чтотакоеветка? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.2 Основыветвленияислияния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2.1 Основыветвления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2.2 Основыслияния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.2.3 Основыконфликтовприслиянии . . . . . . . . . . . . . . . . . . . . . . 57 3.3 Управлениеветками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.4 Приемыработысветками. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.4.1 Долгоживущиеветки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.4.2 Тематическиеветки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.5 Удалённыеветки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.5.1 Отправкаизменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.5.2 Отслеживаниеветок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.5.3 Удалениеветокнаудалённомсервере . . . . . . . . . . . . . . . . . . . . 68 3.6 Перемещение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 iv 3.6.1 Основыперемещения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.6.2 Болееинтересныеперемещения . . . . . . . . . . . . . . . . . . . . . . . 70 3.6.3 Возможныерискиперемещения . . . . . . . . . . . . . . . . . . . . . . . 73 3.7 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4 Gitнасервере 77 4.1 Протоколы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.1.1 Локальныйпротокол . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Преимущества . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Недостатки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.1.2 ПротоколSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Достоинства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Недостатки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.1.3 Git-протокол . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Достоинства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Недостатки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.1.4 ПротоколHTTP/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Достоинства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Недостатки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.2 УстановкаGitнасервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.2.1 Размещение«голого»репозиториянасервере . . . . . . . . . . . . . . . 82 4.2.2 Малыеустановки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 SSHдоступ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.3 СозданиеоткрытогоSSH-ключа . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.4 Настраиваемсервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.5 Открытыйдоступ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.6 GitWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.7 Gitosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.8 Gitolite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.8.1 Установка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.8.2 Изменениепараметровустановки . . . . . . . . . . . . . . . . . . . . . . 97 4.8.3 Конфигурационныйфайлиправилаконтролядоступа . . . . . . . . . . 97 4.8.4 Продвинутыйконтрольдоступасзапрещающимиправилами . . . . . . 98 4.8.5 Ограничениеpush-ейнаосновеизменённыхфайлов . . . . . . . . . . . 99 4.8.6 Персональныеветки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.8.7 «Шаблонные»репозитории . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.8.8 Другиефункции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.9 Git-демон . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.10 Git-хостинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.10.1 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.10.2 Настройкаучётнойзаписи . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.10.3 Созданиеновогорепозитория . . . . . . . . . . . . . . . . . . . . . . . . 105 4.10.4 ИмпортизSubversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.10.5 Добавлениеучастников . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.10.6 Вашпроект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.10.7 Ответвленияпроектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 v 4.10.8 ЗаключениеоGitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.11 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5 РаспределённыйGit 111 5.1 Распределённыерабочиепроцессы . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.1.1 Централизованныйрабочийпроцесс . . . . . . . . . . . . . . . . . . . . 111 5.1.2 Рабочийпроцесссменеджеромпоинтеграции . . . . . . . . . . . . . . . 112 5.1.3 Рабочийпроцесссдиктаторомиегопомощниками . . . . . . . . . . . . 113 5.2 Содействиепроекту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.2.1 Рекомендациипосозданиюкоммитов . . . . . . . . . . . . . . . . . . . . 115 5.2.2 Отдельнаямаленькаякоманда . . . . . . . . . . . . . . . . . . . . . . . . 117 5.2.3 Отдельнаякомандасменеджером . . . . . . . . . . . . . . . . . . . . . . 122 5.2.4 Небольшойоткрытыйпроект . . . . . . . . . . . . . . . . . . . . . . . . 126 5.2.5 Большойоткрытыйпроект . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.2.6 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 5.3 Сопровождениепроекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 5.3.1 Работастематическимиветками . . . . . . . . . . . . . . . . . . . . . . 133 5.3.2 Применениепатчей,отправленныхпопочте . . . . . . . . . . . . . . . . 134 Применениепатчейспомощьюкомандыapply . . . . . . . . . . . 134 Применениепатчейспомощьюкомандыam . . . . . . . . . . . . 135 5.3.3 Проверкаудалённыхветок . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.3.4 Определениевносимыхизменений . . . . . . . . . . . . . . . . . . . . . 138 5.3.5 Интегрированиечужихнаработок . . . . . . . . . . . . . . . . . . . . . . 140 Процессыслияния . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Рабочиепроцессыскрупнымислияниями . . . . . . . . . . . . . 142 Рабочиепроцессысперемещениямииотборомлучшего . . . . . 143 5.3.6 Отметкарелизов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 5.3.7 Генерацияномерасборки . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 5.3.8 Подготовкарелиза. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 5.3.9 Командаshortlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 5.4 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 6 ИнструментыGit 149 6.1 Выборревизии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 6.1.1 Одиночныеревизии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 6.1.2 СокращенныйSHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 6.1.3 НебольшоезамечаниеоSHA-1 . . . . . . . . . . . . . . . . . . . . . . . 150 6.1.4 Ссылкинаветки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 6.1.5 RefLog-сокращения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 6.1.6 Ссылкинапредков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.1.7 Диапазонкоммитов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Дветочки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Множествовершин . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Триточки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.2 Интерактивноеиндексирование . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 6.2.1 Добавлениеиудалениефайловизиндекса . . . . . . . . . . . . . . . . . 157 vi 6.2.2 Индексированиепочастям . . . . . . . . . . . . . . . . . . . . . . . . . . 159 6.3 Прятанье . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 6.3.1 Прятаньесвоихтрудов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 6.3.2 Откатпримененияспрятанныхизменений . . . . . . . . . . . . . . . . . 163 6.3.3 Созданиеветкиизспрятанныхизменений . . . . . . . . . . . . . . . . . 164 6.4 Перезаписьистории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 6.4.1 Изменениепоследнегокоммита . . . . . . . . . . . . . . . . . . . . . . . 164 6.4.2 Изменениесообщенийнесколькихкоммитов . . . . . . . . . . . . . . . . 165 6.4.3 Переупорядочениекоммитов . . . . . . . . . . . . . . . . . . . . . . . . . 167 6.4.4 Уплотнениекоммитов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 6.4.5 Разбиениекоммита . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 6.4.6 Крайнеесредство: filter-branch . . . . . . . . . . . . . . . . . . . . . . . . 169 Удалениефайлаизовсехкоммитов . . . . . . . . . . . . . . . . . 170 Сделатьподкаталогновымкорнем . . . . . . . . . . . . . . . . . 170 Глобальноеименениеe-mailадреса . . . . . . . . . . . . . . . . . 170 6.5 ОтладкаспомощьюGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.5.1 Аннотацияфайла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.5.2 Бинарныйпоиск . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 6.6 Подмодули . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 6.6.1 Началоиспользованияподмодулей . . . . . . . . . . . . . . . . . . . . . 175 6.6.2 Клонированиепроектасподмодулями . . . . . . . . . . . . . . . . . . . 177 6.6.3 Суперпроекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 6.6.4 Проблемысподмодулями . . . . . . . . . . . . . . . . . . . . . . . . . . 179 6.7 Слияниеподдеревьев . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 6.8 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 7 НастройкаGit 185 7.1 КонфигурированиеGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 7.1.1 Основныенастройкиклиента . . . . . . . . . . . . . . . . . . . . . . . . 186 core.editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 commit.template . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 core.pager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 user.signingkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 core.excludesfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 help.autocorrect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 7.1.2 ЦветавGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 color.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 color.*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 7.1.3 Внешниеутилитыmergeиdiff . . . . . . . . . . . . . . . . . . . . . . . . 189 7.1.4 Форматированиеипробельныесимволы . . . . . . . . . . . . . . . . . . 192 core.autocrlf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 core.whitespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 7.1.5 Настройкасервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 receive.fsckObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 receive.denyNonFastForwards . . . . . . . . . . . . . . . . . . . . . 194 receive.denyDeletes . . . . . . . . . . . . . . . . . . . . . . . . . . 194 vii 7.2 Git-атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 7.2.1 Бинарныефайлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Определениебинарныхфайлов . . . . . . . . . . . . . . . . . . . 195 Получениедельтыдлябинарныхфайлов . . . . . . . . . . . . . . 196 ДокументыMSWord . . . . . . . . . . . . . . . . . . . . . . . . . 196 ТекстовыефайлывформатеOpenDocument . . . . . . . . . . . . 197 Изображения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.2.2 Развёртываниеключа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 7.2.3 Экспортрепозитория . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 export-ignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 export-subst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 7.2.4 Стратегиислияния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 7.3 ПерехватчикивGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 7.3.1 Установкаперехватчика . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 7.3.2 Перехватчикинасторонеклиента . . . . . . . . . . . . . . . . . . . . . . 204 Перехватчикидляработыскоммитами . . . . . . . . . . . . . . . 204 Перехватчикидляработысe-mail . . . . . . . . . . . . . . . . . . 205 Другиеклиентскиеперехватчики . . . . . . . . . . . . . . . . . . 205 7.3.3 Перехватчикинасторонесервера . . . . . . . . . . . . . . . . . . . . . . 206 pre-receiveиpost-receive . . . . . . . . . . . . . . . . . . . . . . . 206 update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 7.4 ПримернавязыванияполитикиспомощьюGit . . . . . . . . . . . . . . . . . . . 207 7.4.1 Перехватчикнасторонесервера . . . . . . . . . . . . . . . . . . . . . . . 207 Установкаособогоформатасообщенийкоммитов . . . . . . . . . 207 Настройкасистемыконтролядоступадляпользователей . . . . . 209 Разрешениетолькообновлений-перемоток . . . . . . . . . . . . . 211 7.4.2 Перехватчикинасторонеклиента . . . . . . . . . . . . . . . . . . . . . . 213 7.5 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 8 Gitидругиесистемыуправленияверсиями 219 8.1 GitиSubversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 8.1.1 gitsvn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 8.1.2 Настройка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 8.1.3 Приступимкработе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 8.1.4 КоммитвSubversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 8.1.5 Получениеновыхизменений . . . . . . . . . . . . . . . . . . . . . . . . . 224 8.1.6 ПроблемысветвлениемвGit . . . . . . . . . . . . . . . . . . . . . . . . 226 8.1.7 ВетвлениевSubversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 СозданиеновойветкивSVN . . . . . . . . . . . . . . . . . . . . . 227 8.1.8 Переключениеактивныхветок . . . . . . . . . . . . . . . . . . . . . . . . 227 8.1.9 КомандыSubversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 ПросмотристориивстилеSVN . . . . . . . . . . . . . . . . . . . 228 SVN-Аннотации . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 ИнформацияоSVN-сервере . . . . . . . . . . . . . . . . . . . . . 229 Игнорированиетого,чтоигнорируетSubversion . . . . . . . . . . 229 8.1.10 ЗаключениепоGit-Svn . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 viii 8.2 МиграциянаGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.2.1 Импортирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.2.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.2.3 Perforce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 8.2.4 Собственнаяутилитадляимпорта . . . . . . . . . . . . . . . . . . . . . . 234 8.3 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 9 Gitизнутри 241 9.1 Сантехникаифарфор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.2 ОбъектывGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 9.2.1 Объекты-деревья . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 9.2.2 Объекты-коммиты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 9.2.3 Хранениеобъектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 9.3 СсылкивGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 9.3.1 HEAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.3.2 Метки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.3.3 Ссылкинаудалённыеветки . . . . . . . . . . . . . . . . . . . . . . . . . 254 9.4 Pack-файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.5 Спецификацииссылок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 9.5.1 Спецификацииссылокдлякомандыpush . . . . . . . . . . . . . . . . . . 260 9.5.2 Удалениессылок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 9.6 Протоколыпередачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 9.6.1 Тупойпротокол . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 9.6.2 Умныйпротокол . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Загрузкаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Скачиваниеданных . . . . . . . . . . . . . . . . . . . . . . . . . . 264 9.7 Обслуживаниеивосстановлениеданных . . . . . . . . . . . . . . . . . . . . . . 265 9.7.1 Обслуживание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 9.7.2 Восстановлениеданных . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 9.7.3 Удалениеобъектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 9.8 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 ix

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.