GIT
Что внутри и как оно работает?
Что такое GIT
• Система контроля версий, в основе которой наборы слепков;
• Локальное чудо;
Коротко о главном
• Workflow
1. Изменяем файлы =>
2. Добавляем их слепки в список подготовленных =>
3. Добавляем слепки в базу
4. Повторить с 1…
Команды, без которых никуда
• 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
Git flow
• Ветви функциональностей (Feature branches)
• Ветви релизов (Release branches)
• Ветви исправлений (Hotfix branches)
Фичи
• Могут порождаться от: develop
• Должны вливаться в: develop
• Используются для разработки новых функций, которые должны
появиться в текущем или будущем релизах
git flow feature start MYFEATURE
git flow feature finish MYFEATURE
Релизы
• Могут порождаться от: develop
• Должны вливаться в: develop и master
• Используются для подготовки к выпуску новых версий продукта
git flow release start RELEASE
git flow release finish RELEASE
Хотфиксы
• Могут порождаться от: master
• Должны вливаться в: develop и master
• Порождаются необходимостью немедленно исправить
нежелательное поведение производственной версии продукта.
git flow hotfix start VERSION
git flow hotfix finish VERSION
Заглянем внутрь
• Что происходит после git init?
• Объекты гита
Blob, Tree and Commit = Object
Object is ..?
• Header + Content, где Header = “object.Type content.Length0”
• SHA-1 для контрольной суммы
• Zlib для сжатия заголовка и контента
Метка = Object
• Легковестная метка – просто ссылка на коммит;
• Аннотированная метка – ссылка на специальный объект;
Ссылки и HEAD
• Любая ветка – это ссылка;
• Ссылки – это файлы, внутри которых хэш от коммита, на который
они указывают;
• HEAD – это символическая ссылка;
• HEAD указывает на другую ссылку;
Pack-файлы
• Хэй-хэй, вот у нас много файлов, а память нерезиновая, братюнь!
• Я исправил одну строчку, а гит целый файл создал!
• Pack-файл и Pack-индекс спешат к вам на помощь.
Чем-то похоже на то, как сейчас веб-разработчики работают со
спрайтами;
Тупые и умные протоколы
HTTP
• GET
GET
GET
GET
GET
GET
GET
…….
Я усталь
SSH
• send-pack
receive-pack
• fetch-pack
upload-pack
Итого

GIT: что внутри, и как это работает?

  • 1.
    GIT Что внутри икак оно работает?
  • 2.
    Что такое GIT •Система контроля версий, в основе которой наборы слепков; • Локальное чудо;
  • 3.
    Коротко о главном •Workflow 1. Изменяем файлы => 2. Добавляем их слепки в список подготовленных => 3. Добавляем слепки в базу 4. Повторить с 1…
  • 4.
    Команды, без которыхникуда • 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)
  • 6.
    Фичи • Могут порождатьсяот: develop • Должны вливаться в: develop • Используются для разработки новых функций, которые должны появиться в текущем или будущем релизах git flow feature start MYFEATURE git flow feature finish MYFEATURE
  • 7.
    Релизы • Могут порождатьсяот: develop • Должны вливаться в: develop и master • Используются для подготовки к выпуску новых версий продукта git flow release start RELEASE git flow release finish RELEASE
  • 8.
    Хотфиксы • Могут порождатьсяот: master • Должны вливаться в: develop и master • Порождаются необходимостью немедленно исправить нежелательное поведение производственной версии продукта. git flow hotfix start VERSION git flow hotfix finish VERSION
  • 9.
    Заглянем внутрь • Чтопроисходит после git init? • Объекты гита
  • 10.
    Blob, Tree andCommit = Object
  • 11.
    Object is ..? •Header + Content, где Header = “object.Type content.Length0” • SHA-1 для контрольной суммы • Zlib для сжатия заголовка и контента
  • 12.
    Метка = Object •Легковестная метка – просто ссылка на коммит; • Аннотированная метка – ссылка на специальный объект;
  • 13.
    Ссылки и HEAD •Любая ветка – это ссылка; • Ссылки – это файлы, внутри которых хэш от коммита, на который они указывают; • HEAD – это символическая ссылка; • HEAD указывает на другую ссылку;
  • 14.
    Pack-файлы • Хэй-хэй, воту нас много файлов, а память нерезиновая, братюнь! • Я исправил одну строчку, а гит целый файл создал! • Pack-файл и Pack-индекс спешат к вам на помощь. Чем-то похоже на то, как сейчас веб-разработчики работают со спрайтами;
  • 15.
    Тупые и умныепротоколы HTTP • GET GET GET GET GET GET GET ……. Я усталь SSH • send-pack receive-pack • fetch-pack upload-pack
  • 16.