Стажировка-2015
Коллективная работа с кодом
Системы контроля версий
Стажировка-2015
VCS (Version Control System) – инструмент
для работы с изменяющимися данными
Система контроля версий
Стажировка-2015
Система контроля версий
Стажировка-2015
Cистемы контроля версий
• SVN (Subversion)
• Git
• Mercurial
Стажировка-2015
Единое место хранения кода и истории
Системы контроля версий
Зачем?
Стажировка-2015
Совместная работа в команде
Системы контроля версий
Зачем?
Стажировка-2015
Доступ к любой версии проекта
Системы контроля версий
Зачем?
Стажировка-2015
Откат неудачных изменений
Экспериментальные изменения
Системы контроля версий
Зачем?
Стажировка-2015
Просмотр истории
Системы контроля версий
Зачем?
Стажировка-2015
Поиск виновных:
git blame
Системы контроля версий
Зачем?
Стажировка-2015
Удобно проводить код-ревью
Системы контроля версий
Зачем?
Стажировка-2015
Генерация отчётов
Автоматизирование тестирование
Continuous Deployment
Интеграция с сервисами
Системы контроля версий
Зачем?
Стажировка-2015
Централизованные и
распределенные VCS
Системы контроля версий
Стажировка-2015
Как работают централизованные
системы контроля версий
Стажировка-2015
• Централизованный сервер – самое
уязвимое место в системе
• Низкая скорость работы
• Нет доступа к истории оффлайн
• Плохо поддерживает ветвление
Недостатки (на примере SVN):
Стажировка-2015
Как работают распределенные
системы контроля версий
Стажировка-2015
• У каждого – полная копия репозитория
• Многие команды выполняются
локально, без запроса к серверу
• Скорость работы
• Работа с проектом оффлайн
• Можно использовать несколько
удалённых репозиториев в одном
проекте.
• Удобная работа с ветками
Преимущества распределённых
систем контроля версий
Стажировка-2015
Базовые команды Git
Git init
git clone
git add
git commit
git status
git push
git pull
git checkout
git branch
git log
git diff
Стажировка-2015
Базовые команды Git
Копирование репозитория:
git clone git@github.com:rails/rails.git
Стажировка-2015
Базовые команды Git
Текущее состояние вашей рабочей копии:
git status
Стажировка-2015
Базовые команды Git
Добавить изменения в VCS:
git add lib/modules/my_new_file.rb
git add folder_name
git add .
Стажировка-2015
git status
Стажировка-2015
Базовые команды Git
User A: git commit –m ‘Add cool module #10’
User A: git push
User B: git pull
User B: git log
Стажировка-2015
Важно:
• Коммит сообщения – на английском
• Все изменения локальны (до git push)
• Почти всё можно откатить обратно
• Используйте git версии 2.0 и выше
• Конфликты в git – нормальная ситуация
Стажировка-2015
Ветки (branches)
Стажировка-2015
Ветки (branches)
git branch
git checkout develop
…doing some stuff…
git commit
git push
Стажировка-2015
Ветки (branches)
git checkout master
git merge develop
Стажировка-2015
Ветки (branches)
Стажировка-2015
Сервисы для хостинга git-
репозиториев
Стажировка-2015
Что почитать?
• Pro Git Book
• Successful GIT Branching model
• Atomic Commits

Стажировка-2015. Разработка. Занятие 4. Системы контроля версий