Стажировка-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
Базовые команды GitGit initgit clonegit addgit commitgit statusgit pushgit pullgit checkoutgit branchgit loggit diff
Стажировка-2015
Базовые команды Git
Копирование репозитория:
git clone [email protected]:rails/rails.git
Стажировка-2015
Базовые команды Git
Текущее состояние вашей рабочей копии:
git status
Стажировка-2015
Базовые команды Git
Добавить изменения в VCS:
git add lib/modules/my_new_file.rbgit add folder_namegit add .
Стажировка-2015
git status
Стажировка-2015
Базовые команды Git
User A: git commit –m ‘Add cool module #10’User A: git push
User B: git pullUser B: git log
Стажировка-2015
Важно:
• Коммит сообщения – на английском• Все изменения локальны (до git push)• Почти всё можно откатить обратно• Используйте git версии 2.0 и выше• Конфликты в git – нормальная ситуация
Стажировка-2015
Ветки (branches)
Стажировка-2015
Ветки (branches)
git branchgit checkout develop
…doing some stuff…
git commitgit push
Стажировка-2015
Ветки (branches)
git checkout mastergit merge develop
Стажировка-2015
Ветки (branches)
Стажировка-2015
Сервисы для хостинга git-репозиториев
Стажировка-2015
Что почитать?
• Pro Git Book
• Successful GIT Branching model
• Atomic Commits