- •Предисловие
- •Благодарности
- •Лицензия
- •Базовые операции
- •Сохранение состояния
- •Добавление, удаление, переименование
- •Расширенная отмена/Восстановление
- •Возвраты
- •Создание списка изменений
- •Скачивание файлов
- •На острие ножа
- •Публичный доступ
- •Что я наделал?
- •Упражнение
- •Все о клонировании
- •Синхронизация компьютеров
- •Классический контроль исходного кода
- •Создание форка проекта
- •Окончательные бэкапы
- •Многозадачность со скоростью света
- •Другие системы контроля версий
- •Чудеса ветвления
- •Кнопка босса
- •Грязная работа
- •Быстрые исправления
- •Бесперебойный рабочий процесс
- •Собрать все в кучу
- •Управление Ветками
- •Временные Ветки
- •Работайте как вам нравится
- •Уроки истории
- •Оставаясь корректным
- •Локальные изменения сохраняются
- •Переписывая историю
- •Создавая Историю
- •Когда же все пошло не так?
- •Из-за кого все пошло наперекосяк?
- •Личный опыт
- •Групповая работа в Git
- •Git через SSH, HTTP
- •Git через что угодно
- •Патчи: Общее применения
- •К сожалению, мы переехали
- •Удаленные Ветки
- •Несколько Удаленных Веток
- •Мои Настройки
- •Гроссмейстерство Git
- •Релизы исходников
- •Сохранение изменений
- •Слишком большой коммит
- •Этапные изменения
- •Не теряй HEAD
- •Охота за HEAD'ами
- •Git как основа
- •Опасные трюки
- •Улучшаем свой публичный образ
- •Раскрываем тайны
- •Невидимость
- •Целостность
- •Интеллект
- •Индексация
- •Голые репозитории
- •Происхождение Git
- •База данных объектов
- •Blobs
- •Деревья
- •Коммиты
- •Неотличимо от магии
- •Недостатки Git
- •Недостатки SHA1
- •Microsoft Windows
- •Несвязанные файлы
- •Кто и что редактировал ?
- •История файлов
- •Начальное Клонирование
- •Изменчивые Проекты
- •Глобальный счетчик
- •Пустые подкаталоги
- •Первоначальный коммит
- •Приложение А: Перевод этого руководства
Магия Git
32 / 41
Глава 8
Раскрываем тайны
Мы заглянем под капот и объясним, как Git творит свои чудеса. Я опущу некоторые детали. Для более подробного изучения описаний обратитесь к Руководству пользователя.
8.1 Невидимость
Как Git может быть таким ненавязчивым? Помимо коммитов время от времени и слияния, вы можете работать так, как будто вы не знали, что контроль версий существует. То есть, пока вам это не нужно, вы его не замечаете, и вот, когда он понадобился вы рады, что Git наблюдал за вами все это время.
Другие системы контроля версий, не позволят вам забыть о них. Права доступа к файлам может быть только для чтения, пока вы явно не укажите серверу, какие файлы вы хотите изменить. Центральный сервер может отслеживать кто извлекал какой код и когда. Когда сеть падает вы можете от этого пострадать. Разработчики постоянно борются с виртуальной волокитой и бюрократизмом.
Секрет заключается в каталоге .git в вашей рабочей директории. Git хранит историю вашего проекта здесь. Из-за имени, начинающегося с точки каталог не отображается в выводе команды ls. Кроме комманд git push и git pull все остальные операции контроля версий работают в этом каталоге.
Вы имеете полный контроль над судьбой ваших файлов потому что Gitу не важно, что вы делаете с ними. Git можно легко восстановить сохраненное в .git состояние в любое время.
8.2 Целостность
Большинство людей ассоциируют с криптографией поддержание информации в секрете, но другой не менее важной задачей является поддержание информации в сохранности. Правильное использование криптографических хеш-функций может предотвратить случайные или злонамеренные повреждения данных.
SHA1 хэш может рассматриваться как уникальный 160-битный идентификационный номер для каждой строки байт, с которой вы сталкиваетесь в вашей жизни. На самом деле гораздо больше: каждая строка байтов, которую любой человек когда-нибудь использует в течение многих жизней.
Так как SHA1 хэш сам является последовательностью байтов, мы можем получить хэш строки байтов, содержащей другие хэши. Это простое наблюдение на удивление полезно: смотрите hash