SlideShare a Scribd company logo
1 of 29
Download to read offline
Привет, друзья!
Капустник —
самодеятельное, для узкого круга «своих», шуточное
представление, основанное на юморе и сатире.
© wikipedia.org
Системы контроля версий
Что у нас есть?
•

Много проектов (уже больше 300);

•

Разные языки программирования;

•

Разные версии продуктов;

•

Разные команды;

•

Много разработчиков (тех, которые вносят
изменения).
Чего мы хотим?

•

Хранить свой код в
едином хранилище;

•

… что еще?
FTP?
iweb01
А чего мы добиваемся?
•

Контроль изменений:
•
•

•

Откат;
Просмотр изменений между ревизиями.

Коллективная работа:
•

Слияние изменений;

•

Разрешение конфликтов.
VCS!
VCS (Version Control System)
— Система контроля версий

•

SVN;

•

GIT;

•

… и др.: (Mercurial, Bazaar, Darcs, CVS, …).
Плюшки?
•

Возможность одновременных изменений;

•

Механизм транзакций;

•

Дельта-кодирование;

•

Разветвление истории;

•

Различный подход к бинарным и текстовым
форматам.
SVN
•

Централизованная;

•

Ревизии для проекта в целом;

•

В каждой папке проекта —
служебные файлы (до 1.7);

•

Можно подтягивать изменения
для конкретной папки/файла.
SVN: История изменений
GIT
•

Децентрализованная:
•

отказоустойчивая;

•

всегда с собой.

•

Ревизии для проекта в целом;

•

Номер ревизии — SHA-1;

•

Служебные файлы только в
корне репозитория;

•

Нелогичный синтаксис
некоторых команд.
BLOB, tree, commit
•

BLOB — конкретная
версия файла;

•

Tree — совокупность
файлов в разных
директориях;

•

Commit — Tree +
meta.
Объекты в GIT: BLOB
$ echo 'version 1' > test.txt
$ git hash-object -w test.txt
83baae61804e65cc73a7201a7252750c76066a30

$ echo 'version 2' > test.txt
$ git hash-object -w test.txt
1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
Объекты в GIT: BLOB
$ find .git/objects -type f
.git/objects/1f/7a7a472abf3dd9643fd615f6da379c4acb3e3a
.git/objects/83/baae61804e65cc73a7201a7252750c76066a30

$ git cat-file -p 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
version 2
Объекты в GIT: Tree
$ git cat-file -p master^{tree}
100644 blob a906cb2a4a904a152e80877d4088654daad0c859

README

100644 blob 8f94139338f9404f26296befa88755fc2598c289

Rakefile

040000 tree 99f1a6d12cb4b6f19c8655fca46c3ecf317074e0

lib

$ git cat-file -p 99f1a6d12cb4b6f19c8655fca46c3ecf317074e0
100644 blob 47c6340d6459e05787f644c2447d2595f5d3a54b

simplegit.rb
Объекты в GIT: Commit
$ git update-index --add --cacheinfo 100644 
83baae61804e65cc73a7201a7252750c76066a30 test.txt
$ git write-tree
d8329fc1cc938780ffdd9f94e0d364e0ea74f579

$ git cat-file -p d8329fc1cc938780ffdd9f94e0d364e0ea74f579
100644 blob 83baae61804e65cc73a7201a7252750c76066a30

test.txt
Объекты в GIT: Commit
$ echo 'first commit' | git commit-tree d8329f
fdf4fc3344e67ab068f836878b6c4951e3b15f3d

$ git cat-file -p fdf4fc3
tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579
author Ivan Ivanov <i.ivanov@2gis.ru> 1243040974 -0700
committer Ivan Ivanov <i.ivanov@2gis.ru> 1243040974 -0700

first commit
Объекты в GIT: Commit
$ git log --stat fdf4fc
commit d8329fc1cc938780ffdd9f94e0d364e0ea74f579
Author: Ivan Ivanov <i.ivanov@2gis.ru>
Date:

Fri May 22 18:09:34 2009 -0700

first commit

test.txt |

1 +

1 files changed, 1 insertions(+), 0 deletions(-)
GIT: Garbage collector
$ git gc
Counting objects: 17, done.
Delta compression using 2 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (17/17), done.
Total 17 (delta 1), reused 10 (delta 0)
GIT: Фишки
•

Локальный и удаленный репозиторий;

•

Очистка мусора (pack-объекты);

•

Вместо полного имени ревизии можно указывать
короткое;

•

Продвинутая работа с ветками.
Операции в GIT
•

Fetch

•

Pull

•

Push

•

Stash

•

Rebase
Магия GIT: Rebase
$ git rebase -i HEAD~3
pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
# Rebase 710f0f8..a5f4a0d onto 710f0f8
# Commands:
#

p, pick = use commit

#

e, edit = use commit, but stop for amending

#

s, squash = use commit, but meld into previous commit
Редактирование коммитов
edit f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with
git commit --amend
Once you’re satisfied with your changes, run
git rebase --continue
Уплотнение коммитов
pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file

# This is a combination of 3 commits.
# The first commit's message is:
changed my name a bit
# This is the 2nd commit message:
updated README formatting and added blame
# This is the 3rd commit message:
added cat-file
Разбиение коммитов
pick f7f3f6d changed my name a bit
edit 310154e updated README formatting and added blame
pick a5f4a0d added cat-file

$ git reset HEAD^
$ git add README
$ git commit -m 'updated README formatting'
$ git add lib/simplegit.rb
$ git commit -m 'added blame'
$ git rebase --continue
Спасибо!

More Related Content

What's hot

Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON
 
Sphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатацияSphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатацияandreyborue
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
 
Internationalization and localization of the python applications with gettext...
Internationalization and localization of the python applications with gettext...Internationalization and localization of the python applications with gettext...
Internationalization and localization of the python applications with gettext...Volodymyr Hotsyk
 
Нагруженный поиск на Sphinx
Нагруженный поиск на SphinxНагруженный поиск на Sphinx
Нагруженный поиск на SphinxRoman Pavlushko
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORMBadoo Development
 
Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...
Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...
Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...Yandex
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 
Common Lisp как второй язык
Common Lisp как второй языкCommon Lisp как второй язык
Common Lisp как второй языкValeriy Zamarayev
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Tanya Denisyuk
 
Консольные приложения на Go
Консольные приложения на GoКонсольные приложения на Go
Консольные приложения на GoAndrey Smirnov
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Andrey Smirnov
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)Ontico
 

What's hot (20)

Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
 
Sphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатацияSphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатация
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
 
Internationalization and localization of the python applications with gettext...
Internationalization and localization of the python applications with gettext...Internationalization and localization of the python applications with gettext...
Internationalization and localization of the python applications with gettext...
 
Devconf15
Devconf15Devconf15
Devconf15
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Нагруженный поиск на Sphinx
Нагруженный поиск на SphinxНагруженный поиск на Sphinx
Нагруженный поиск на Sphinx
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
 
Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...
Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...
Дмитрий Жестилевский — Yet another threading framework: асинхронная разработк...
 
Bash scripting
 Bash scripting Bash scripting
Bash scripting
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
Common Lisp как второй язык
Common Lisp как второй языкCommon Lisp как второй язык
Common Lisp как второй язык
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
 
Консольные приложения на Go
Консольные приложения на GoКонсольные приложения на Go
Консольные приложения на Go
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
 

Viewers also liked

Tema 1 las drogas
Tema 1 las drogasTema 1 las drogas
Tema 1 las drogasEdyro
 
Question 2- Evaluation
Question 2- EvaluationQuestion 2- Evaluation
Question 2- EvaluationRosieC1997
 
DMT vacation AK-CA-NV
DMT vacation AK-CA-NVDMT vacation AK-CA-NV
DMT vacation AK-CA-NVsancongercap
 
Lepra (1) robson 8 a
Lepra (1) robson 8 aLepra (1) robson 8 a
Lepra (1) robson 8 ateresakashino
 
Tema 3 civilizaciones
Tema 3 civilizacionesTema 3 civilizaciones
Tema 3 civilizacionesEdyro
 
Карточный клиент в онлайне Finline
Карточный клиент в онлайне Finline  Карточный клиент в онлайне Finline
Карточный клиент в онлайне Finline Finline
 
Desayuno coloquio Randstad
Desayuno coloquio RandstadDesayuno coloquio Randstad
Desayuno coloquio RandstadOscar Alcoberro
 
Disclosable tax avoidance schemes
Disclosable tax avoidance schemesDisclosable tax avoidance schemes
Disclosable tax avoidance schemesKeyconsulting UK
 
Tax return for trustees of registered pension schemes
Tax return for trustees of registered pension schemesTax return for trustees of registered pension schemes
Tax return for trustees of registered pension schemesKeyconsulting UK
 
Tema 4 educacion sexual
Tema 4 educacion sexualTema 4 educacion sexual
Tema 4 educacion sexualEdyro
 
Tema 2 civilizaciones
Tema 2 civilizacionesTema 2 civilizaciones
Tema 2 civilizacionesEdyro
 
Tema 3 salud preventiva
Tema 3 salud preventivaTema 3 salud preventiva
Tema 3 salud preventivaEdyro
 
Smau Napoli 2013 Quirino Picone
Smau Napoli 2013 Quirino PiconeSmau Napoli 2013 Quirino Picone
Smau Napoli 2013 Quirino PiconeSMAU
 
Codeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginnerCodeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginneraminbd
 
Tema 2 etapas nutricionales
Tema 2 etapas nutricionalesTema 2 etapas nutricionales
Tema 2 etapas nutricionalesEdyro
 
Официални празници в Република България - ЧО, 3 клас, Булвест
Официални празници в Република България - ЧО, 3 клас, БулвестОфициални празници в Република България - ЧО, 3 клас, Булвест
Официални празници в Република България - ЧО, 3 клас, БулвестVeska Petrova
 
Técnicas de aprendizaje aplicada a temas basicos de medicina
Técnicas de aprendizaje aplicada a temas basicos de medicinaTécnicas de aprendizaje aplicada a temas basicos de medicina
Técnicas de aprendizaje aplicada a temas basicos de medicinaAdrian JM
 

Viewers also liked (20)

Tema 1 las drogas
Tema 1 las drogasTema 1 las drogas
Tema 1 las drogas
 
Question 2- Evaluation
Question 2- EvaluationQuestion 2- Evaluation
Question 2- Evaluation
 
Sa reasonable excuse
Sa reasonable excuseSa reasonable excuse
Sa reasonable excuse
 
DMT vacation AK-CA-NV
DMT vacation AK-CA-NVDMT vacation AK-CA-NV
DMT vacation AK-CA-NV
 
Lepra (1) robson 8 a
Lepra (1) robson 8 aLepra (1) robson 8 a
Lepra (1) robson 8 a
 
Tema 3 civilizaciones
Tema 3 civilizacionesTema 3 civilizaciones
Tema 3 civilizaciones
 
Карточный клиент в онлайне Finline
Карточный клиент в онлайне Finline  Карточный клиент в онлайне Finline
Карточный клиент в онлайне Finline
 
Desayuno coloquio Randstad
Desayuno coloquio RandstadDesayuno coloquio Randstad
Desayuno coloquio Randstad
 
Disclosable tax avoidance schemes
Disclosable tax avoidance schemesDisclosable tax avoidance schemes
Disclosable tax avoidance schemes
 
Tax return for trustees of registered pension schemes
Tax return for trustees of registered pension schemesTax return for trustees of registered pension schemes
Tax return for trustees of registered pension schemes
 
Tema 4 educacion sexual
Tema 4 educacion sexualTema 4 educacion sexual
Tema 4 educacion sexual
 
Tema 2 civilizaciones
Tema 2 civilizacionesTema 2 civilizaciones
Tema 2 civilizaciones
 
Tema 3 salud preventiva
Tema 3 salud preventivaTema 3 salud preventiva
Tema 3 salud preventiva
 
Smau Napoli 2013 Quirino Picone
Smau Napoli 2013 Quirino PiconeSmau Napoli 2013 Quirino Picone
Smau Napoli 2013 Quirino Picone
 
Codeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginnerCodeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginner
 
Tema 2 etapas nutricionales
Tema 2 etapas nutricionalesTema 2 etapas nutricionales
Tema 2 etapas nutricionales
 
Hukum hooke
Hukum hookeHukum hooke
Hukum hooke
 
Официални празници в Република България - ЧО, 3 клас, Булвест
Официални празници в Република България - ЧО, 3 клас, БулвестОфициални празници в Република България - ЧО, 3 клас, Булвест
Официални празници в Република България - ЧО, 3 клас, Булвест
 
Técnicas de aprendizaje aplicada a temas basicos de medicina
Técnicas de aprendizaje aplicada a temas basicos de medicinaTécnicas de aprendizaje aplicada a temas basicos de medicina
Técnicas de aprendizaje aplicada a temas basicos de medicina
 
062 hebreos
062 hebreos062 hebreos
062 hebreos
 

Similar to iweb01

Git для начинающих
Git для начинающихGit для начинающих
Git для начинающихVadim Drobinin
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере GitSCINO
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitIvan Evtukhovich
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...it-people
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним боротьсяВладимир Кожаев
 
Git - Вадим Валуев
Git - Вадим ВалуевGit - Вадим Валуев
Git - Вадим ВалуевDrupalCamp MSK
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с GitDressTester
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Yandex
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Dmytro Olaresko
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)Ilya V
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаКонстантин Никифоров
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Ontico
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.DrupalForumZP2012
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Egor Stremousov
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git phpdevby
 

Similar to iweb01 (20)

Git for you
Git for youGit for you
Git for you
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающих
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
 
Git presentation
Git presentationGit presentation
Git presentation
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере git
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
 
Git - Вадим Валуев
Git - Вадим ВалуевGit - Вадим Валуев
Git - Вадим Валуев
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"
 
Git intro
Git introGit intro
Git intro
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
 
Git
GitGit
Git
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 

iweb01

  • 2. Капустник — самодеятельное, для узкого круга «своих», шуточное представление, основанное на юморе и сатире. © wikipedia.org
  • 4. Что у нас есть? • Много проектов (уже больше 300); • Разные языки программирования; • Разные версии продуктов; • Разные команды; • Много разработчиков (тех, которые вносят изменения).
  • 5. Чего мы хотим? • Хранить свой код в едином хранилище; • … что еще?
  • 8. А чего мы добиваемся? • Контроль изменений: • • • Откат; Просмотр изменений между ревизиями. Коллективная работа: • Слияние изменений; • Разрешение конфликтов.
  • 10. VCS (Version Control System) — Система контроля версий • SVN; • GIT; • … и др.: (Mercurial, Bazaar, Darcs, CVS, …).
  • 11. Плюшки? • Возможность одновременных изменений; • Механизм транзакций; • Дельта-кодирование; • Разветвление истории; • Различный подход к бинарным и текстовым форматам.
  • 12. SVN • Централизованная; • Ревизии для проекта в целом; • В каждой папке проекта — служебные файлы (до 1.7); • Можно подтягивать изменения для конкретной папки/файла.
  • 14. GIT • Децентрализованная: • отказоустойчивая; • всегда с собой. • Ревизии для проекта в целом; • Номер ревизии — SHA-1; • Служебные файлы только в корне репозитория; • Нелогичный синтаксис некоторых команд.
  • 15. BLOB, tree, commit • BLOB — конкретная версия файла; • Tree — совокупность файлов в разных директориях; • Commit — Tree + meta.
  • 16. Объекты в GIT: BLOB $ echo 'version 1' > test.txt $ git hash-object -w test.txt 83baae61804e65cc73a7201a7252750c76066a30 $ echo 'version 2' > test.txt $ git hash-object -w test.txt 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
  • 17. Объекты в GIT: BLOB $ find .git/objects -type f .git/objects/1f/7a7a472abf3dd9643fd615f6da379c4acb3e3a .git/objects/83/baae61804e65cc73a7201a7252750c76066a30 $ git cat-file -p 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a version 2
  • 18. Объекты в GIT: Tree $ git cat-file -p master^{tree} 100644 blob a906cb2a4a904a152e80877d4088654daad0c859 README 100644 blob 8f94139338f9404f26296befa88755fc2598c289 Rakefile 040000 tree 99f1a6d12cb4b6f19c8655fca46c3ecf317074e0 lib $ git cat-file -p 99f1a6d12cb4b6f19c8655fca46c3ecf317074e0 100644 blob 47c6340d6459e05787f644c2447d2595f5d3a54b simplegit.rb
  • 19. Объекты в GIT: Commit $ git update-index --add --cacheinfo 100644 83baae61804e65cc73a7201a7252750c76066a30 test.txt $ git write-tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579 $ git cat-file -p d8329fc1cc938780ffdd9f94e0d364e0ea74f579 100644 blob 83baae61804e65cc73a7201a7252750c76066a30 test.txt
  • 20. Объекты в GIT: Commit $ echo 'first commit' | git commit-tree d8329f fdf4fc3344e67ab068f836878b6c4951e3b15f3d $ git cat-file -p fdf4fc3 tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579 author Ivan Ivanov <i.ivanov@2gis.ru> 1243040974 -0700 committer Ivan Ivanov <i.ivanov@2gis.ru> 1243040974 -0700 first commit
  • 21. Объекты в GIT: Commit $ git log --stat fdf4fc commit d8329fc1cc938780ffdd9f94e0d364e0ea74f579 Author: Ivan Ivanov <i.ivanov@2gis.ru> Date: Fri May 22 18:09:34 2009 -0700 first commit test.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
  • 22. GIT: Garbage collector $ git gc Counting objects: 17, done. Delta compression using 2 threads. Compressing objects: 100% (13/13), done. Writing objects: 100% (17/17), done. Total 17 (delta 1), reused 10 (delta 0)
  • 23. GIT: Фишки • Локальный и удаленный репозиторий; • Очистка мусора (pack-объекты); • Вместо полного имени ревизии можно указывать короткое; • Продвинутая работа с ветками.
  • 25. Магия GIT: Rebase $ git rebase -i HEAD~3 pick f7f3f6d changed my name a bit pick 310154e updated README formatting and added blame pick a5f4a0d added cat-file # Rebase 710f0f8..a5f4a0d onto 710f0f8 # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit
  • 26. Редактирование коммитов edit f7f3f6d changed my name a bit pick 310154e updated README formatting and added blame pick a5f4a0d added cat-file $ git rebase -i HEAD~3 Stopped at 7482e0d... updated the gemspec to hopefully work better You can amend the commit now, with git commit --amend Once you’re satisfied with your changes, run git rebase --continue
  • 27. Уплотнение коммитов pick f7f3f6d changed my name a bit squash 310154e updated README formatting and added blame squash a5f4a0d added cat-file # This is a combination of 3 commits. # The first commit's message is: changed my name a bit # This is the 2nd commit message: updated README formatting and added blame # This is the 3rd commit message: added cat-file
  • 28. Разбиение коммитов pick f7f3f6d changed my name a bit edit 310154e updated README formatting and added blame pick a5f4a0d added cat-file $ git reset HEAD^ $ git add README $ git commit -m 'updated README formatting' $ git add lib/simplegit.rb $ git commit -m 'added blame' $ git rebase --continue