SlideShare a Scribd company logo
1 of 16
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
Итого

More Related Content

What's hot

Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиковSQALab
 
Git, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентомGit, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентомAlex Musayev
 
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Badoo Development
 
Организация эффективной разработки проектов на 1С-Битрикс
Организация эффективной разработки проектов на 1С-БитриксОрганизация эффективной разработки проектов на 1С-Битрикс
Организация эффективной разработки проектов на 1С-БитриксArticul Media
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
 
Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис ТрифоновCodeFest
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...it-people
 
Александр Кугушев «Roslyn: очевидные неочевидности»
Александр Кугушев «Roslyn: очевидные неочевидности»Александр Кугушев «Roslyn: очевидные неочевидности»
Александр Кугушев «Roslyn: очевидные неочевидности»SpbDotNet Community
 
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...Badoo Development
 
Релизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliveryРелизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliverySQALab
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETAndrew Gubskiy
 
Командная разработка как оружие против хаоса
Командная разработка как оружие против хаосаКомандная разработка как оружие против хаоса
Командная разработка как оружие против хаосаArticul Media
 
Фламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньФламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньDevDay
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере GitSCINO
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchVitebsk Miniq
 
Kotlin Native. Святослав Щербина, Senior Software Developer, Kotlin
Kotlin Native. Святослав Щербина, Senior Software Developer, KotlinKotlin Native. Святослав Щербина, Senior Software Developer, Kotlin
Kotlin Native. Святослав Щербина, Senior Software Developer, KotlinJetBrains Russia
 
Continuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проектеContinuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проектеSQALab
 

What's hot (20)

Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиков
 
Git, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентомGit, как инструмент управления веб-контентом
Git, как инструмент управления веб-контентом
 
Git presentation
Git presentationGit presentation
Git presentation
 
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
 
Git intro
Git introGit intro
Git intro
 
Организация эффективной разработки проектов на 1С-Битрикс
Организация эффективной разработки проектов на 1С-БитриксОрганизация эффективной разработки проектов на 1С-Битрикс
Организация эффективной разработки проектов на 1С-Битрикс
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
 
Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис Трифонов
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
 
Александр Кугушев «Roslyn: очевидные неочевидности»
Александр Кугушев «Roslyn: очевидные неочевидности»Александр Кугушев «Roslyn: очевидные неочевидности»
Александр Кугушев «Roslyn: очевидные неочевидности»
 
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
 
Релизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliveryРелизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous delivery
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NET
 
Командная разработка как оружие против хаоса
Командная разработка как оружие против хаосаКомандная разработка как оружие против хаоса
Командная разработка как оружие против хаоса
 
Фламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньФламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый день
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate Search
 
Kotlin Native. Святослав Щербина, Senior Software Developer, Kotlin
Kotlin Native. Святослав Щербина, Senior Software Developer, KotlinKotlin Native. Святослав Щербина, Senior Software Developer, Kotlin
Kotlin Native. Святослав Щербина, Senior Software Developer, Kotlin
 
Continuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проектеContinuous delivery в крупном интернет проекте
Continuous delivery в крупном интернет проекте
 

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

Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Sergey Chudakov
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с GitDressTester
 
Адаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сАдаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сAlexey Lustin
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с GitDenis Latushkin
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Egor Stremousov
 
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...ScrumTrek
 
Git (presentation)
Git (presentation)Git (presentation)
Git (presentation)Anton Ivanov
 
Git for beginners (NskConf)
Git for beginners (NskConf)Git for beginners (NskConf)
Git for beginners (NskConf)Slava Semushin
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков2ГИС Технологии
 
Git и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаGit и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаПупена Александр
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)Ilya V
 
Controlul versiunilor
Controlul versiunilor Controlul versiunilor
Controlul versiunilor Dmitrii Stoian
 
Новый дом для репозитория или история переезда на Git lab
Новый дом для репозитория или история переезда на Git labНовый дом для репозитория или история переезда на Git lab
Новый дом для репозитория или история переезда на Git labitconnect2016
 
AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...
AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...
AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...Ontico
 

Similar to GIT: что внутри, и как это работает? (20)

Giflow
GiflowGiflow
Giflow
 
GitFlow_MOEX
GitFlow_MOEXGitFlow_MOEX
GitFlow_MOEX
 
Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)
 
Git
GitGit
Git
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
 
Адаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сАдаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1с
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с Git
 
Git for you
Git for youGit for you
Git for you
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
 
Про Git
Про GitПро Git
Про Git
 
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
 
Git (presentation)
Git (presentation)Git (presentation)
Git (presentation)
 
Git basis
Git basisGit basis
Git basis
 
Git for beginners (NskConf)
Git for beginners (NskConf)Git for beginners (NskConf)
Git for beginners (NskConf)
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
 
Git и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаGit и GitHub для создания учебного контента
Git и GitHub для создания учебного контента
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)
 
Controlul versiunilor
Controlul versiunilor Controlul versiunilor
Controlul versiunilor
 
Новый дом для репозитория или история переезда на Git lab
Новый дом для репозитория или история переезда на Git labНовый дом для репозитория или история переезда на Git lab
Новый дом для репозитория или история переезда на Git lab
 
AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...
AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...
AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, ...
 

More from Tados

Дарелл Хафф «Как лгать при помощи статистики»
Дарелл Хафф «Как лгать при помощи статистики» Дарелл Хафф «Как лгать при помощи статистики»
Дарелл Хафф «Как лгать при помощи статистики» Tados
 
Дэвид Льюис «Нейромаркетинг в действии»
Дэвид Льюис «Нейромаркетинг в действии»Дэвид Льюис «Нейромаркетинг в действии»
Дэвид Льюис «Нейромаркетинг в действии»Tados
 
Экскурс в Domain-driven design
Экскурс в Domain-driven designЭкскурс в Domain-driven design
Экскурс в Domain-driven designTados
 
Docker в хозяйстве и быту
Docker в хозяйстве и бытуDocker в хозяйстве и быту
Docker в хозяйстве и бытуTados
 
О компании Tados: цифры и факты на 2017 год
О компании Tados: цифры и факты на 2017 годО компании Tados: цифры и факты на 2017 год
О компании Tados: цифры и факты на 2017 годTados
 
Чистый код: создание, анализ и рефакторинг
Чистый код: создание, анализ и рефакторингЧистый код: создание, анализ и рефакторинг
Чистый код: создание, анализ и рефакторингTados
 

More from Tados (6)

Дарелл Хафф «Как лгать при помощи статистики»
Дарелл Хафф «Как лгать при помощи статистики» Дарелл Хафф «Как лгать при помощи статистики»
Дарелл Хафф «Как лгать при помощи статистики»
 
Дэвид Льюис «Нейромаркетинг в действии»
Дэвид Льюис «Нейромаркетинг в действии»Дэвид Льюис «Нейромаркетинг в действии»
Дэвид Льюис «Нейромаркетинг в действии»
 
Экскурс в Domain-driven design
Экскурс в Domain-driven designЭкскурс в Domain-driven design
Экскурс в Domain-driven design
 
Docker в хозяйстве и быту
Docker в хозяйстве и бытуDocker в хозяйстве и быту
Docker в хозяйстве и быту
 
О компании Tados: цифры и факты на 2017 год
О компании Tados: цифры и факты на 2017 годО компании Tados: цифры и факты на 2017 год
О компании Tados: цифры и факты на 2017 год
 
Чистый код: создание, анализ и рефакторинг
Чистый код: создание, анализ и рефакторингЧистый код: создание, анализ и рефакторинг
Чистый код: создание, анализ и рефакторинг
 

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 and Commit = 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