scino: dvcs на примере git
TRANSCRIPT
![Page 1: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/1.jpg)
![Page 2: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/2.jpg)
Системы контроля версий исходного кода
VCS & DVCSGit и GitHub
Научно исследовательская лаборатория
Шкурко А.Н.
![Page 3: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/3.jpg)
Предпосылки
• Частые изменения
• Команды разработки
• Версионность ПО
• Вероятность неправильных решений
• Необходимость «работы над ошибками»
![Page 4: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/4.jpg)
Что обычно происходит без VCS?
![Page 5: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/5.jpg)
Что обычно происходит без VCS?
![Page 6: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/6.jpg)
![Page 7: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/7.jpg)
Для чего это нужно?
• Архивация и восстановление
• Синхронизация работы команды
• Поиск «виновного»
• Хранение истории разработки
• Отмена изменений
• Альтернативные/экспериментальные реализации
![Page 8: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/8.jpg)
Решение
• Хранилище файлов проекта с историей изменений (репозиторий)
• Отслеживание автора изменений• Возможность просмотра истории изменений и отката к
нужной версии• Операции:
• Получить проект полностью из системы (checkout)• Добавить свои изменения в систему (commit)• Обновить текущую версию изменениями из проекта (update)• Скопировать текущий проект в рамках VCS с созданием новой
ветки истории (branch)• Перенести изменения из одной ветки истории в другую
(merge)
Клиент
VCS
![Page 9: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/9.jpg)
Ветвление
![Page 10: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/10.jpg)
Слияние
![Page 11: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/11.jpg)
Конфликты
![Page 12: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/12.jpg)
История развития
![Page 13: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/13.jpg)
Централизованные системы
![Page 14: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/14.jpg)
Централизованные системы
• Преимущества:• все знают, кто и чем занимается в проекте;• у администраторов есть чёткий контроль над тем, кто и что может делать,
• Недостатки:• централизованный сервер является уязвимым местом всей системы:• если сервер не работает, то разработчики не могут взаимодействовать, и никто
не может сохранить новой версии своей работы;• если отсутствует подключение сети у разработчика, в это время он также не
может взаимодействовать с сервером;• если же повреждается диск с центральной базой данных и нет резервной копии,
вы теряете абсолютно всё — всю историю проекта, разве что за исключением нескольких рабочих версий, сохранившихся на рабочих машинах пользователей;
• скорость работы зависит от подключения к серверу.
![Page 15: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/15.jpg)
Децентрализованные системы
![Page 16: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/16.jpg)
Децентрализованные системы
• Преимущества:• Так как каждый раз, когда клиент забирает свежую версию файлов, он создаёт
себе полную копию всех данных, то в случае сбоев на сервере, через который шла работа, любой клиентский репозиторий может быть скопирован обратно на сервер, чтобы восстановить базу данных.
• Возможность работать с несколькими удалёнными репозиториями, таким образом, можно одновременно работать по-разному с разными группами людей в рамках одного проекта. Так, водном проекте можно одновременно вести несколько типов рабочих процессов, что невозможно в централизованных системах.
• Недостатки:• Сложнее в освоении;• Иногда требуют дополнительных договоренностей.
![Page 17: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/17.jpg)
Git
• распределённая система управления версиями файлов
• создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005
• программа является свободной и выпущена под лицензией GNU GPL версии 2
• Git и Github – не одно и то же. Это проекты разных команд.
![Page 18: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/18.jpg)
Локальные операции
![Page 19: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/19.jpg)
Статусы файлов
![Page 20: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/20.jpg)
Работа с Git
• git init - создание репозитория
• git add <filename> - добавить файл в индекс
• git commit -m "Comment" - отправить файл в репозиторий(локальный)
![Page 21: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/21.jpg)
git init
![Page 22: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/22.jpg)
Создание файла
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)
![Page 23: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/23.jpg)
Добавление
git add file1
$ git st
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: file1
#
![Page 24: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/24.jpg)
Изменение
$ 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
#
![Page 25: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/25.jpg)
Коммит
$ 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"
![Page 26: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/26.jpg)
Хранение коммита
![Page 27: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/27.jpg)
Последовательность коммитов
![Page 28: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/28.jpg)
Ветка master
![Page 29: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/29.jpg)
Клонирование репозитория
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)
![Page 30: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/30.jpg)
Работа с удаленным репозиторием
$ 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
![Page 31: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/31.jpg)
Создание веток
$ git branch testing
$ git co testing
Switched to branch 'testing'
$ git branch
* testing
master
![Page 32: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/32.jpg)
Хранение веток
![Page 33: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/33.jpg)
HEAD
![Page 34: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/34.jpg)
Слияние веток
$ 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(-)
![Page 35: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/35.jpg)
Отправка ветки на сервер
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
![Page 36: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/36.jpg)
Организация разработки
• Инструментарий VCS дает дополнительные возможности по организации процесса разработки
• Чем легче основные операции в системе, тем более сложный процесс может быть реализован
• Цель создания процессов разработки – уменьшение количества ошибок и потенциальных проблем
![Page 37: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/37.jpg)
Github
![Page 38: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/38.jpg)
Github
![Page 39: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/39.jpg)
Github
![Page 40: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/40.jpg)
Github
![Page 41: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/41.jpg)
Github
![Page 42: Scino: DVCS на примере Git](https://reader034.vdocuments.pub/reader034/viewer/2022051016/55a6c7e01a28ab581d8b4585/html5/thumbnails/42.jpg)
Спасибо за внимание
Ваши вопросы?