Спецкурс 2014, занятие 5 (часть 2). git, github и open source
DESCRIPTION
Занятие на спецкурсе в ОмГУ, 2014 год.TRANSCRIPT
Спецкурс ОмГУ-2014
Коллективная работа с кодом: git, Github и Open source.
Занятие 5 (часть 2)
Спецкурс ОмГУ-2014
VCS (Version Control System) – инструмент для работы с изменяющимися данными
Система контроля версий
Спецкурс ОмГУ-2014
Система контроля версий
Спецкурс ОмГУ-2014
Cистемы контроля версий
• Git• SVN (Subversion)• Mercurial• Bazaar
Спецкурс ОмГУ-2014
Единое место хранения истории
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Совместная работа в команде
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Доступ к любой версии проекта
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Откат неудачных изменений
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Просмотр истории
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Поиск багов и виновных ;)
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Удобные код-ревью
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Экспериментальные изменения
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Генерация отчётовАвтоматизирование тестирование
Continuous DeploymentИнтеграция с сервисами
Системы контроля версийЗачем?
Спецкурс ОмГУ-2014
Для разработчиковДля тестировщиков
Для дизайнерови даже для… заказчика:
Системы контроля версийДля кого?
Спецкурс ОмГУ-2014
Централизованные и распределенные VCS
Системы контроля версий
Спецкурс ОмГУ-2014
Как работают централизованные системы контроля версий
Спецкурс ОмГУ-2014
• Централизованный сервер – самое уязвимое место в системе
• Низкая скорость работы• Нет доступа к истории оффлайн• Плохо поддерживает ветвление
Недостатки (на примере SVN):
Спецкурс ОмГУ-2014
Как работают распределенные системы контроля версий
Спецкурс ОмГУ-2014
• У каждого – полная копия репозитория• Многие команды выполняются
локально, без запроса к серверу• Скорость работы• Работа с проектом оффлайн• Можно использовать несколько
удалённых репозиториев в одном проекте.
• Удобная работа с ветками
Преимущества распределённых систем контроля версий
Спецкурс ОмГУ-2014
Git
Git был разработан ЛинусомТорвальдсом для разработки кода ядра
Linux.
Спецкурс ОмГУ-2014
Основы Git.Хранение данных в SVN и Git.
Спецкурс ОмГУ-2014
Хранение данных в SVN и Git
Хранение данных в SVN: набор файлов и изменений, сделанных для каждого файла.
Спецкурс ОмГУ-2014
Хранение данных в SVN и Git
Хранение данных в Git: хранение слепков файловой системы (папки с проектом)
Спецкурс ОмГУ-2014
Базовые команды Gitgit clonegit addgit commitgit statusgit fetchgit pushgit pullgit checkoutgit branchgit loggit diff
Спецкурс ОмГУ-2014
Базовые команды Git
Копирование репозитория:
git clone [email protected]:rails/rails.git
Спецкурс ОмГУ-2014
Базовые команды Git
Текущее состояние вашей рабочей копии:
git status
Спецкурс ОмГУ-2014
Базовые команды Git
Добавить изменения в VCS:
git add lib/modules/my_new_file.rbgit add app/*git add .
Спецкурс ОмГУ-2014
git status
Спецкурс ОмГУ-2014
Базовые команды Git
User A: git commit –m ‘Add cool module #10’User A: git push
User B: git pullUser B: git log
Спецкурс ОмГУ-2014
Важно:
• Коммит сообщения – на английском• Конфликты в GIT – нормальная ситуация• Все изменения – локальны (до git push)• Почти все можно откатить обратно• Используйте git версии 2.0
Спецкурс ОмГУ-2014
Ветки (branches)
Спецкурс ОмГУ-2014
Ветки (branches)
git branchgit checkout develop
…doing some stuff…
git commitgit push
Спецкурс ОмГУ-2014
Ветки (branches)
git checkout mastergit merge develop
Спецкурс ОмГУ-2014
Ветки (branches)
Спецкурс ОмГУ-2014
Сервисы для хостинга git-репозиториев
Спецкурс ОмГУ-2014
Open source
Спецкурс ОмГУ-2014
Open source contributions by location
http://davidfischer.github.io/gdc2/#languages/All
Спецкурс ОмГУ-2014
Плюшки: GUI клиенты для Git
SourceTree (Mac OS X 10.6+, Windows 7+)
Спецкурс ОмГУ-2014
Плюшки: Интеграция с редактором
git blame по хоткею в редакторе:
Спецкурс ОмГУ-2014
• Есть большие репозитории библиотек, например apache.org
• Есть репозитории бинарников и документации, например maven.org
Open source и Java:
Спецкурс ОмГУ-2014
Что почитать?
• Pro Git Book
• Successful GIT Branching model
• Atomic Commits