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-проектов в Яндексе
PPTX
Git presentation
PDF
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
ODP
Teach your dockers to use CRanes
PDF
Docker: from understanding to production
PDF
Gitify - швейцарский нож для MODX-воина
PPTX
Стажировка 2014, занятие 4. Git, Github и Open source.
PDF
Телепортация MODX - MODX Meetup Minsk
Непрерывная интеграция Python-проектов в Яндексе
Git presentation
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Teach your dockers to use CRanes
Docker: from understanding to production
Gitify - швейцарский нож для MODX-воина
Стажировка 2014, занятие 4. Git, Github и Open source.
Телепортация MODX - MODX Meetup Minsk

What's hot (20)

PDF
Development and deployment freedom - MODX Meetup Minsk
PDF
Кратчайшее введение в docker по-русски
PPTX
Git for you
ODP
Git basis
PPTX
Что такое Docker
PDF
Docker for JS people
PDF
Python Development process in Yandex
PDF
Обзор Linux Control Groups
ODP
Системы управления версиями (VCS). Знакомство с Git.
ODP
Введение в Docker
PPTX
базовые принципы работы с Git
ODP
Docker : что это, зачем, и как им пользоваться
PDF
Docker - счастье для хомячка или ника?
PPTX
Python tools for web development (Python meetup Almaty #ALAPY)
PDF
Docker. Основы
PPTX
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
PPTX
Controlul versiunilor
PDF
Основы работы с Git
PPT
Docker - быстро, просто, наглядно
PDF
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
Development and deployment freedom - MODX Meetup Minsk
Кратчайшее введение в docker по-русски
Git for you
Git basis
Что такое Docker
Docker for JS people
Python Development process in Yandex
Обзор Linux Control Groups
Системы управления версиями (VCS). Знакомство с Git.
Введение в Docker
базовые принципы работы с Git
Docker : что это, зачем, и как им пользоваться
Docker - счастье для хомячка или ника?
Python tools for web development (Python meetup Almaty #ALAPY)
Docker. Основы
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
Controlul versiunilor
Основы работы с Git
Docker - быстро, просто, наглядно
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
Ad

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

PPT
Системы контроля версий
PDF
Software engineering seminars: git
PDF
Системы контроля версий
PPT
что такое Git и как с ним бороться
PPT
Как удержать проект от анархии с помощью Git
PPT
Как удержать проект от анархии с помощью Git
PPTX
системы контроля версий
PDF
GIT Slides (25.03.2015)
PDF
Git (presentation)
PDF
Приручаем Git
PDF
Git для начинающих
PDF
Денис Чистяков: Системы контроля версий
PDF
DevHub 3 - CVS
ODP
Chebit.Git
ODP
Git для продолжающих
PDF
Сергей Сергеев - Системы контроля версий
PPT
Системы управления версиями (VCS). Знакомство с Git.
ODP
Распределенные системы контоля версия на примере git
Системы контроля версий
Software engineering seminars: git
Системы контроля версий
что такое Git и как с ним бороться
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
системы контроля версий
GIT Slides (25.03.2015)
Git (presentation)
Приручаем Git
Git для начинающих
Денис Чистяков: Системы контроля версий
DevHub 3 - CVS
Chebit.Git
Git для продолжающих
Сергей Сергеев - Системы контроля версий
Системы управления версиями (VCS). Знакомство с Git.
Распределенные системы контоля версия на примере git
Ad

More from SCINO (19)

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

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 дает дополнительные возможности по организации процесса разработки • Чем легче основные операции в системе, тем более сложный процесс может быть реализован • Цель создания процессов разработки – уменьшение количества ошибок и потенциальных проблем