42
Системы контроля версий Практикум 3 курс Осень 2015

Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

  • Upload
    others

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Системы контроля версий

Практикум 3 курс Осень 2015

Page 2: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

План занятия

• Общая информация о системах контроля версий(СКВ)

– Что такое СКВ и зачем они нужны

– Стратегии совместного использования файлов

– Типы СКВ и общие сведения о работе с СКВ

• Введение в работу с СКВ Git

Page 3: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Общая информация о системах контроля версий

Page 4: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Что такое система контроля версий

• Специальное программное обеспечение для совместной работы с постоянно изменяющейся информацией.

• Надстройка над файловой системой, которая позволяет хранить несколько версий одного и того же файла

Page 5: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Для чего нужны системы контроля версий

• Хранение полной истории изменений

• Описание причин всех производимых изменений

• Отмена изменений, если что-то было сделано не так

• Поиск причин и ответственного за появление ошибки в программе

• Совместная работа нескольких разработчиков над одним проектом

• Возможность вносить изменения, не мешая работы других разработчиков

Page 6: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Проблема совместного использования файлов

Page 7: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Lock-Modify-Unlock

Page 8: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Lock-Modify-Unlock

Page 9: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Классификация систем контроля версий по стратегии совместного использования файлов

Lock-Modify-Unlock (TFS, VSS, VAULT)

Copy-Modify-Merge (CVS, Git, Mercurial,

Bazaar)

Гибридные (Subversion, AcccuRev,

Perforse, ClearCase)

Page 10: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Централизованные системы контроля версий

• Единственное хранилище (репозиторий) для хранения всех файлов проекта

• Каждый пользователь копирует необходимые ему файлы из этого хранилища, изменяет и, затем, загружает измененные файлы обратно в хранилище

Page 11: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Распределенные системы контроля версий

• У каждого пользователя свое хранилище (возможно, не одно)

• Система обеспечивает возможность работы с любыми хранилищами (локальными и удаленными)

Page 12: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Классификация централизованных и распределенных систем контроля версий

• Централизованные системы контроля версий

– Subversion

– CVS

– TFS, Vault

– AccuRev

• Распределенные системы контроля версий

– Git

– Mercurial

– Bazaar

Page 13: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Основы работы с системой контроля версий Git

Page 14: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Особенности хранения файлов в системе контроля версий Git

Page 15: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Особенности хранения файлов в системе контроля версий Git

Page 16: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Особенности хранения файлов в системе контроля версий Git

Page 17: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Первоначальная настройка системы контроля версий Git

$ git config --global user.name "John Doe"

$ git config --global user.email [email protected]

$ git config --global core.editor emacs

$ git config –list

user.name=John Doe

[email protected]

color.status=auto

. . .

$ git config user.name

John Doe

Page 18: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Документация по системе контроля версий Git

$ git help <verb>

$ git <verb> --help

$ man git-<verb>

$ git help config

Page 19: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Создание хранилища (репозитория) в системе контроля версий Git

• Создание нового хранилища

• Дублирование существующего хранилища

$ git init

$ git add *.c

$ git add LISENCE

$ git commit –m "initial commit"

$ git clone http://mks1.cmc.msu.ru/miklesh/318-sandbox.git

Page 20: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Жизненный цикл файлов в системе контроля версий Git

$ git status

$ git status -s

$ git diff

$ cat .gitignore

$ git commit

$ git commit –m "Fix bug No.7"

$ git commit –a –m "Added feature"

$ git rm main.c

$ git mv test1.c test2.c

Page 21: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

$ git log

$ git log –p -2

$ git log --stat

$ git log --pretty\=format

$ git log –pretty=format:"%h - %an, %ar : %s"

$ git log –pretty=format:"%h %s" --graph

Просмотр истории изменений в системе контроля версий Git

• История commit-ов

• Ограничение числа выводимых коммитов и подробная информация об изменениях

• Форматирование истории commit-ов

Page 22: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

$ git commit --amend

$ git reset HEAD <file>

$ git checkout -- <file>

Отмена изменений в системе контроля версий Git

• Обновление commit-ов

• Удаление файлов из staging area

• Отмена текущих изменений

Page 23: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

• Просмотр, удаление и добавление удаленных репозиториев

• Синхронизация с удаленными репозиториями

$ git remote

$ git remote –v

$ git remote add [shortname] [url]

$ git fetch [remote-name]

$ git pull [remote-name]

$ git push [remote-name] [branch-name]

$ git remote show [remote-name]

Работа с удаленными хранилищами в системе контроля версий Git

Page 24: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

• Просмотр меток

• Создание меток

• Загрузка меток из удаленного хранилища

• Переход по меткам (checking out)

$ git tag

$ git tag –l ‘v11.8.5*’

$ git show v1.4

$ git tag –a v1.4 –m ‘my version 1.4’

$ git tag v1.4-lw

$ git tag –a v1.2 9fceb02

$ git push origin [tagname]

$ git push origin –tags

$ git remote show [remote-name]

$ git checkout –b [branchname] [tagname]

Создание меток в системе контроля версий Git

Page 25: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

Page 26: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

Page 27: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

Page 28: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

$git branch testing

Page 29: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

$git log -–oneline -–decorate

Page 30: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки ветками проекта в системе контроля версий Git

$git checkout testing

Page 31: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

$git commit –a –m ‘made a change’

Page 32: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

$git checkout master

Page 33: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Ветки проекта в системе контроля версий Git

$git commit –a –m ‘made other changes’

$git log -–oneline -–decorate -–graph -–all

Page 34: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git checkout –b iss53

Page 35: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git branch iss53

$git checkout iss53

Page 36: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$vim index.html

$git commit –a –m ‘added a new footer [issue 53]’

Page 37: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git checkout master

$git checkout –b hotfix

$vim index.html

$git commit –a –m ‘fixed the broken email address’

Page 38: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git checkout master

$git merge hotfix

Page 39: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git branch –d hotfix

$git checkout iss53

$vim index.html

$git commit –a –m ‘finished the new footer [issue 53]’

Page 40: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git checkout master

Page 41: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

Работа с ветками проекта в системе контроля версий Git

$git merge iss53

Page 42: Системы контроля версий - msu.ruДля чего нужны системы контроля версий •Хранение полной истории изменений

• Конфликты слияния

$ git merge iss53

$ git status

$ git mergetool

$ git status

$ git commit

Работа с ветками в системе контроля версий Git