SlideShare a Scribd company logo
Scino: DVCS на примере Git
Системы контроля версий
исходного кода
VCS & DVCS
Git и GitHub
Научно исследовательская лаборатория
Шкурко А.Н.
Предпосылки
• Частые изменения
• Команды разработки
• Версионность ПО
• Вероятность неправильных решений
• Необходимость «работы над ошибками»
Что обычно происходит без VCS?
Что обычно происходит без VCS?
Scino: DVCS на примере Git
Для чего это нужно?
• Архивация и восстановление
• Синхронизация работы команды
• Поиск «виновного»
• Хранение истории разработки
• Отмена изменений
• Альтернативные/экспериментальные реализации
Решение
• Хранилище файлов проекта с историей изменений
(репозиторий)
• Отслеживание автора изменений
• Возможность просмотра истории изменений и отката к
нужной версии
• Операции:
• Получить проект полностью из системы (checkout)
• Добавить свои изменения в систему (commit)
• Обновить текущую версию изменениями из проекта (update)
• Скопировать текущий проект в рамках VCS с созданием новой
ветки истории (branch)
• Перенести изменения из одной ветки истории в другую
(merge)
Клиент
VCS
Ветвление
Слияние
Конфликты
История развития
Централизованные системы
Централизованные системы
• Преимущества:
• все знают, кто и чем занимается в проекте;
• у администраторов есть чёткий контроль над тем, кто и что может делать,
• Недостатки:
• централизованный сервер является уязвимым местом всей системы:
• если сервер не работает, то разработчики не могут взаимодействовать, и никто
не может сохранить новой версии своей работы;
• если отсутствует подключение сети у разработчика, в это время он также не
может взаимодействовать с сервером;
• если же повреждается диск с центральной базой данных и нет резервной копии,
вы теряете абсолютно всё — всю историю проекта, разве что за исключением
нескольких рабочих версий, сохранившихся на рабочих машинах пользователей;
• скорость работы зависит от подключения к серверу.
Децентрализованные системы
Децентрализованные системы
• Преимущества:
• Так как каждый раз, когда клиент забирает свежую версию файлов, он создаёт
себе полную копию всех данных, то в случае сбоев на сервере, через который
шла работа, любой клиентский репозиторий может быть скопирован обратно на
сервер, чтобы восстановить базу данных.
• Возможность работать с несколькими удалёнными репозиториями, таким
образом, можно одновременно работать по-разному с разными группами
людей в рамках одного проекта. Так, водном проекте можно одновременно
вести несколько типов рабочих процессов, что невозможно в централизованных
системах.
• Недостатки:
• Сложнее в освоении;
• Иногда требуют дополнительных договоренностей.
Git
• распределённая система управления версиями файлов
• создан Линусом Торвальдсом для управления разработкой ядра
Linux, первая версия выпущена 7 апреля 2005
• программа является свободной и выпущена под лицензией GNU
GPL версии 2
• Git и Github – не одно и то же. Это проекты разных команд.
Локальные операции
Статусы файлов
Работа с Git
• git init - создание репозитория
• git add <filename> - добавить файл в индекс
• git commit -m "Comment" - отправить файл в репозиторий
(локальный)
git init
Создание файла
echo "file 1" > file1
git st
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be
committed)
#
# file1
nothing added to commit but untracked files present (use "git
add" to track)
Добавление
git add file1
$ git st
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: file1
#
Изменение
$ nano file1
$ git st
# On branch master
# Initial commit
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
# new file: file1
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in
working directory)
#
# modified: file1
#
Коммит
$ git add file1
$ git ci -m "Add file"
[master (root-commit) 4433db8] Add file
1 file changed, 1 insertion(+)
create mode 100644 file1
$ git st
# On branch master
nothing to commit (working directory clean)
git ci -a -m "Commit all changed tracked files"
Хранение коммита
Последовательность коммитов
Ветка master
Клонирование репозитория
git clone https://github.com/neyronius/gittest.git
Cloning into 'gittest'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 11 (delta 1), reused 10 (delta 0)
Unpacking objects: 100% (11/11), done.
git remote -v
origin https://github.com/neyronius/gittest.git (fetch)
origin https://github.com/neyronius/gittest.git (push)
Работа с удаленным репозиторием
$ nano file1
$ git ci -a -m "Commit"
[master c013d8d] Commit
1 file changed, 1 insertion(+), 1 deletion(-)
$ git push
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 262 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/neyronius/gittest.git
9baa1e7..c013d8d master -> master
Создание веток
$ git branch testing
$ git co testing
Switched to branch 'testing'
$ git branch
* testing
master
Хранение веток
HEAD
Слияние веток
$ nano file1
$ git ci -a -m "Branch change"
[issue d9685db] Branch change
1 file changed, 1 insertion(+), 1 deletion(-)
$ git co master
Switched to branch 'master'
$ git merge issue
Updating c013d8d..d9685db
Fast-forward
file1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Отправка ветки на сервер
git push origin issue
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 273 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/neyronius/gittest.git
* [new branch] issue -> issue
Организация разработки
• Инструментарий VCS дает дополнительные возможности по
организации процесса разработки
• Чем легче основные операции в системе, тем более сложный
процесс может быть реализован
• Цель создания процессов разработки – уменьшение количества
ошибок и потенциальных проблем
Github
Github
Github
Github
Github
Спасибо за внимание
Ваши вопросы?

More Related Content

PDF
Непрерывная интеграция Python-проектов в Яндексе
Andrey Kazarinov
 
PPTX
Git presentation
Alexandr Babenko
 
PDF
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Badoo Development
 
ODP
Teach your dockers to use CRanes
Pavel Emelyanov
 
PDF
Docker: from understanding to production
Anton Turetsky
 
PDF
Gitify - швейцарский нож для MODX-воина
MODX Беларусь
 
PPTX
Стажировка 2014, занятие 4. Git, Github и Open source.
7bits
 
PDF
Телепортация MODX - MODX Meetup Minsk
MODX Беларусь
 
Непрерывная интеграция Python-проектов в Яндексе
Andrey Kazarinov
 
Git presentation
Alexandr Babenko
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Badoo Development
 
Teach your dockers to use CRanes
Pavel Emelyanov
 
Docker: from understanding to production
Anton Turetsky
 
Gitify - швейцарский нож для MODX-воина
MODX Беларусь
 
Стажировка 2014, занятие 4. Git, Github и Open source.
7bits
 
Телепортация MODX - MODX Meetup Minsk
MODX Беларусь
 

What's hot (20)

PDF
Development and deployment freedom - MODX Meetup Minsk
MODX Беларусь
 
PDF
Кратчайшее введение в docker по-русски
OSLL
 
PPTX
Git for you
Pavel Alexeev
 
ODP
Git basis
Artem Shymko
 
PPTX
Что такое Docker
Pavel Klimiankou
 
PDF
Docker for JS people
Alex Chistyakov
 
PDF
Python Development process in Yandex
aviatakz
 
PDF
Обзор Linux Control Groups
OSLL
 
ODP
Системы управления версиями (VCS). Знакомство с Git.
Dmytro Olaresko
 
ODP
Введение в Docker
Andrey Markelov
 
PPTX
базовые принципы работы с Git
DressTester
 
ODP
Docker : что это, зачем, и как им пользоваться
Сергей Ладыгин
 
PDF
Docker - счастье для хомячка или ника?
Ruslan Sharipov
 
PPTX
Python tools for web development (Python meetup Almaty #ALAPY)
aviatakz
 
PDF
Docker. Основы
Ivan Miniailenko
 
PPTX
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
Андрей Кухаренко
 
PPTX
Controlul versiunilor
Dmitrii Stoian
 
PDF
Основы работы с Git
Denis Latushkin
 
PPT
Docker - быстро, просто, наглядно
FallenKain
 
PDF
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TKConf
 
Development and deployment freedom - MODX Meetup Minsk
MODX Беларусь
 
Кратчайшее введение в docker по-русски
OSLL
 
Git for you
Pavel Alexeev
 
Git basis
Artem Shymko
 
Что такое Docker
Pavel Klimiankou
 
Docker for JS people
Alex Chistyakov
 
Python Development process in Yandex
aviatakz
 
Обзор Linux Control Groups
OSLL
 
Системы управления версиями (VCS). Знакомство с Git.
Dmytro Olaresko
 
Введение в Docker
Andrey Markelov
 
базовые принципы работы с Git
DressTester
 
Docker : что это, зачем, и как им пользоваться
Сергей Ладыгин
 
Docker - счастье для хомячка или ника?
Ruslan Sharipov
 
Python tools for web development (Python meetup Almaty #ALAPY)
aviatakz
 
Docker. Основы
Ivan Miniailenko
 
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
Андрей Кухаренко
 
Controlul versiunilor
Dmitrii Stoian
 
Основы работы с Git
Denis Latushkin
 
Docker - быстро, просто, наглядно
FallenKain
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TKConf
 
Ad

Similar to Scino: DVCS на примере Git (20)

PPT
Системы контроля версий
Unguryan Vitaliy
 
PDF
Software engineering seminars: git
Semen Martynov
 
PDF
Системы контроля версий
Denis Chistyakov
 
PPT
что такое Git и как с ним бороться
Владимир Кожаев
 
PPT
Как удержать проект от анархии с помощью Git
phpdevby
 
PPT
Как удержать проект от анархии с помощью Git
phpdevby
 
PPTX
системы контроля версий
DressTester
 
PDF
GIT Slides (25.03.2015)
Ilya V
 
PDF
Git (presentation)
Anton Ivanov
 
PDF
Приручаем Git
2ГИС Технологии
 
PDF
Git для начинающих
Vadim Drobinin
 
PDF
Денис Чистяков: Системы контроля версий
Yandex
 
PDF
DevHub 3 - CVS
Magento Dev
 
ODP
Chebit.Git
Dmitry Maksimov
 
ODP
Git для продолжающих
Ivan Evtukhovich
 
PDF
Сергей Сергеев - Системы контроля версий
Yandex
 
PPT
Системы управления версиями (VCS). Знакомство с Git.
DrupalForumZP2012
 
ODP
Распределенные системы контоля версия на примере git
Ivan Evtukhovich
 
Системы контроля версий
Unguryan Vitaliy
 
Software engineering seminars: git
Semen Martynov
 
Системы контроля версий
Denis Chistyakov
 
что такое Git и как с ним бороться
Владимир Кожаев
 
Как удержать проект от анархии с помощью Git
phpdevby
 
Как удержать проект от анархии с помощью Git
phpdevby
 
системы контроля версий
DressTester
 
GIT Slides (25.03.2015)
Ilya V
 
Git (presentation)
Anton Ivanov
 
Приручаем Git
2ГИС Технологии
 
Git для начинающих
Vadim Drobinin
 
Денис Чистяков: Системы контроля версий
Yandex
 
DevHub 3 - CVS
Magento Dev
 
Chebit.Git
Dmitry Maksimov
 
Git для продолжающих
Ivan Evtukhovich
 
Сергей Сергеев - Системы контроля версий
Yandex
 
Системы управления версиями (VCS). Знакомство с Git.
DrupalForumZP2012
 
Распределенные системы контоля версия на примере git
Ivan Evtukhovich
 
Ad

More from SCINO (19)

PDF
SCINO. Android для начинающих. Занятие 10
SCINO
 
PDF
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
SCINO
 
PDF
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
SCINO
 
PDF
SCINO.Школа IT-менеджмента. Занятие 3.
SCINO
 
PDF
Scino. Android для начинающих. Занятие 9
SCINO
 
PDF
SCINO. Android для начинающих. Занятие 7
SCINO
 
PDF
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
SCINO
 
PDF
Scino. Android для начинающих. Занятие 6
SCINO
 
PDF
Scino.Школа IT-менеджмента. Управление внутренними проектами
SCINO
 
PPTX
Scino. Android для начинающих. Занятие 5
SCINO
 
PDF
SCINO. Android для начинающих. Занятие 4
SCINO
 
PDF
Scino. android для начинающих. занятие 3
SCINO
 
PDF
Android для начинающих. занятие 2
SCINO
 
PDF
Android для начинающих. занятие 1
SCINO
 
PDF
Разработка мобильных приложений под iOS
SCINO
 
PPT
Курс по разработке игр с использованием технологии Unity. Занятие 1.
SCINO
 
PDF
SCINO: Summer practice. GameDev.
SCINO
 
PDF
Scino: Developing for Windows Phone [part-1]
SCINO
 
PDF
Scino: Front-end [part-1]
SCINO
 
SCINO. Android для начинающих. Занятие 10
SCINO
 
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
SCINO
 
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
SCINO
 
SCINO.Школа IT-менеджмента. Занятие 3.
SCINO
 
Scino. Android для начинающих. Занятие 9
SCINO
 
SCINO. Android для начинающих. Занятие 7
SCINO
 
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
SCINO
 
Scino. Android для начинающих. Занятие 6
SCINO
 
Scino.Школа IT-менеджмента. Управление внутренними проектами
SCINO
 
Scino. Android для начинающих. Занятие 5
SCINO
 
SCINO. Android для начинающих. Занятие 4
SCINO
 
Scino. android для начинающих. занятие 3
SCINO
 
Android для начинающих. занятие 2
SCINO
 
Android для начинающих. занятие 1
SCINO
 
Разработка мобильных приложений под iOS
SCINO
 
Курс по разработке игр с использованием технологии Unity. Занятие 1.
SCINO
 
SCINO: Summer practice. GameDev.
SCINO
 
Scino: Developing for Windows Phone [part-1]
SCINO
 
Scino: Front-end [part-1]
SCINO
 

Scino: DVCS на примере Git

  • 2. Системы контроля версий исходного кода VCS & DVCS Git и GitHub Научно исследовательская лаборатория Шкурко А.Н.
  • 3. Предпосылки • Частые изменения • Команды разработки • Версионность ПО • Вероятность неправильных решений • Необходимость «работы над ошибками»
  • 7. Для чего это нужно? • Архивация и восстановление • Синхронизация работы команды • Поиск «виновного» • Хранение истории разработки • Отмена изменений • Альтернативные/экспериментальные реализации
  • 8. Решение • Хранилище файлов проекта с историей изменений (репозиторий) • Отслеживание автора изменений • Возможность просмотра истории изменений и отката к нужной версии • Операции: • Получить проект полностью из системы (checkout) • Добавить свои изменения в систему (commit) • Обновить текущую версию изменениями из проекта (update) • Скопировать текущий проект в рамках VCS с созданием новой ветки истории (branch) • Перенести изменения из одной ветки истории в другую (merge) Клиент VCS
  • 14. Централизованные системы • Преимущества: • все знают, кто и чем занимается в проекте; • у администраторов есть чёткий контроль над тем, кто и что может делать, • Недостатки: • централизованный сервер является уязвимым местом всей системы: • если сервер не работает, то разработчики не могут взаимодействовать, и никто не может сохранить новой версии своей работы; • если отсутствует подключение сети у разработчика, в это время он также не может взаимодействовать с сервером; • если же повреждается диск с центральной базой данных и нет резервной копии, вы теряете абсолютно всё — всю историю проекта, разве что за исключением нескольких рабочих версий, сохранившихся на рабочих машинах пользователей; • скорость работы зависит от подключения к серверу.
  • 16. Децентрализованные системы • Преимущества: • Так как каждый раз, когда клиент забирает свежую версию файлов, он создаёт себе полную копию всех данных, то в случае сбоев на сервере, через который шла работа, любой клиентский репозиторий может быть скопирован обратно на сервер, чтобы восстановить базу данных. • Возможность работать с несколькими удалёнными репозиториями, таким образом, можно одновременно работать по-разному с разными группами людей в рамках одного проекта. Так, водном проекте можно одновременно вести несколько типов рабочих процессов, что невозможно в централизованных системах. • Недостатки: • Сложнее в освоении; • Иногда требуют дополнительных договоренностей.
  • 17. Git • распределённая система управления версиями файлов • создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 • программа является свободной и выпущена под лицензией GNU GPL версии 2 • Git и Github – не одно и то же. Это проекты разных команд.
  • 20. Работа с Git • git init - создание репозитория • git add <filename> - добавить файл в индекс • git commit -m "Comment" - отправить файл в репозиторий (локальный)
  • 22. Создание файла echo "file 1" > file1 git st # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # file1 nothing added to commit but untracked files present (use "git add" to track)
  • 23. Добавление git add file1 $ git st # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: file1 #
  • 24. Изменение $ nano file1 $ git st # On branch master # Initial commit # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # new file: file1 # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: file1 #
  • 25. Коммит $ git add file1 $ git ci -m "Add file" [master (root-commit) 4433db8] Add file 1 file changed, 1 insertion(+) create mode 100644 file1 $ git st # On branch master nothing to commit (working directory clean) git ci -a -m "Commit all changed tracked files"
  • 29. Клонирование репозитория git clone https://github.com/neyronius/gittest.git Cloning into 'gittest'... remote: Counting objects: 11, done. remote: Compressing objects: 100% (5/5), done. remote: Total 11 (delta 1), reused 10 (delta 0) Unpacking objects: 100% (11/11), done. git remote -v origin https://github.com/neyronius/gittest.git (fetch) origin https://github.com/neyronius/gittest.git (push)
  • 30. Работа с удаленным репозиторием $ nano file1 $ git ci -a -m "Commit" [master c013d8d] Commit 1 file changed, 1 insertion(+), 1 deletion(-) $ git push Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 262 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To https://github.com/neyronius/gittest.git 9baa1e7..c013d8d master -> master
  • 31. Создание веток $ git branch testing $ git co testing Switched to branch 'testing' $ git branch * testing master
  • 33. HEAD
  • 34. Слияние веток $ nano file1 $ git ci -a -m "Branch change" [issue d9685db] Branch change 1 file changed, 1 insertion(+), 1 deletion(-) $ git co master Switched to branch 'master' $ git merge issue Updating c013d8d..d9685db Fast-forward file1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
  • 35. Отправка ветки на сервер git push origin issue Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 273 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To https://github.com/neyronius/gittest.git * [new branch] issue -> issue
  • 36. Организация разработки • Инструментарий VCS дает дополнительные возможности по организации процесса разработки • Чем легче основные операции в системе, тем более сложный процесс может быть реализован • Цель создания процессов разработки – уменьшение количества ошибок и потенциальных проблем