Git. Что внутри и как оно работает

Содержание

Слайд 2

Что такое GIT Система контроля версий, в основе которой наборы слепков; Локальное чудо;

Что такое GIT

Система контроля версий, в основе которой наборы слепков;
Локальное чудо;

Слайд 3

Коротко о главном Workflow Изменяем файлы => Добавляем их слепки в

Коротко о главном

Workflow
Изменяем файлы =>
Добавляем их слепки в список подготовленных

=>
Добавляем слепки в базу
Повторить с 1…
Слайд 4

Команды, без которых никуда Git help Git init Git clone Git

Команды, без которых никуда

Git help
Git init
Git clone
Git add
Git status
Git commit
Git diff
Git

log

Git checkout
Git remote
Git fetch
Git pull
Git push
Git branch
Git merge
Git rebase

Слайд 5

Git flow Ветви функциональностей (Feature branches) Ветви релизов (Release branches) Ветви исправлений (Hotfix branches)

Git flow

Ветви функциональностей (Feature branches)
Ветви релизов (Release branches)
Ветви исправлений (Hotfix branches)

Слайд 6

Фичи Могут порождаться от: develop Должны вливаться в: develop Используются для

Фичи

Могут порождаться от: develop
Должны вливаться в: develop
Используются для разработки новых функций,

которые должны появиться в текущем или будущем релизах
git flow feature start MYFEATURE
git flow feature finish MYFEATURE
Слайд 7

Релизы Могут порождаться от: develop Должны вливаться в: develop и master

Релизы

Могут порождаться от: develop
Должны вливаться в: develop и master
Используются для подготовки

к выпуску новых версий продукта
git flow release start RELEASE
git flow release finish RELEASE
Слайд 8

Хотфиксы Могут порождаться от: master Должны вливаться в: develop и master

Хотфиксы

Могут порождаться от: master
Должны вливаться в: develop и master
Порождаются необходимостью немедленно

исправить нежелательное поведение производственной версии продукта.
git flow hotfix start VERSION
git flow hotfix finish VERSION
Слайд 9

Заглянем внутрь Что происходит после git init? Объекты гита

Заглянем внутрь

Что происходит после git init?
Объекты гита

Слайд 10

Blob, Tree and Commit = Object

Blob, Tree and Commit = Object

Слайд 11

Object is ..? Header + Content, где Header = “object.Type content.Length\0”

Object is ..?

Header + Content, где Header = “object.Type content.Length\0”
SHA-1 для

контрольной суммы
Zlib для сжатия заголовка и контента
Слайд 12

Метка = Object Легковестная метка – просто ссылка на коммит; Аннотированная

Метка = Object

Легковестная метка – просто ссылка на коммит;
Аннотированная метка – ссылка

на специальный объект;
Слайд 13

Ссылки и HEAD Любая ветка – это ссылка; Ссылки – это

Ссылки и HEAD

Любая ветка – это ссылка;
Ссылки – это файлы, внутри

которых хэш от коммита, на который они указывают;
HEAD – это символическая ссылка;
HEAD указывает на другую ссылку;
Слайд 14

Pack-файлы Хэй-хэй, вот у нас много файлов, а память нерезиновая, братюнь!

Pack-файлы

Хэй-хэй, вот у нас много файлов, а память нерезиновая, братюнь!
Я исправил

одну строчку, а гит целый файл создал!
Pack-файл и Pack-индекс спешат к вам на помощь.
Чем-то похоже на то, как сейчас веб-разработчики работают со спрайтами;
Слайд 15

Тупые и умные протоколы HTTP GET GET GET GET GET GET

Тупые и умные протоколы

HTTP

GET GET GET GET GET GET GET
…….
Я усталь

SSH

send-pack receive-pack
fetch-pack
upload-pack