42

Scino: DVCS на примере Git

  • Upload
    scino

  • View
    231

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Scino: DVCS на примере Git
Page 2: Scino: DVCS на примере Git

Системы контроля версий исходного кода

VCS & DVCSGit и GitHub

Научно исследовательская лаборатория

Шкурко А.Н.

Page 3: Scino: DVCS на примере Git

Предпосылки

• Частые изменения

• Команды разработки

• Версионность ПО

• Вероятность неправильных решений

• Необходимость «работы над ошибками»

Page 4: Scino: DVCS на примере Git

Что обычно происходит без VCS?

Page 5: Scino: DVCS на примере Git

Что обычно происходит без VCS?

Page 6: Scino: DVCS на примере Git
Page 7: Scino: DVCS на примере Git

Для чего это нужно?

• Архивация и восстановление

• Синхронизация работы команды

• Поиск «виновного»

• Хранение истории разработки

• Отмена изменений

• Альтернативные/экспериментальные реализации

Page 8: Scino: DVCS на примере Git

Решение

• Хранилище файлов проекта с историей изменений (репозиторий)

• Отслеживание автора изменений• Возможность просмотра истории изменений и отката к

нужной версии• Операции:

• Получить проект полностью из системы (checkout)• Добавить свои изменения в систему (commit)• Обновить текущую версию изменениями из проекта (update)• Скопировать текущий проект в рамках VCS с созданием новой

ветки истории (branch)• Перенести изменения из одной ветки истории в другую

(merge)

Клиент

VCS

Page 9: Scino: DVCS на примере Git

Ветвление

Page 10: Scino: DVCS на примере Git

Слияние

Page 11: Scino: DVCS на примере Git

Конфликты

Page 12: Scino: DVCS на примере Git

История развития

Page 13: Scino: DVCS на примере Git

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

Page 14: Scino: DVCS на примере Git

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

• Преимущества:• все знают, кто и чем занимается в проекте;• у администраторов есть чёткий контроль над тем, кто и что может делать,

• Недостатки:• централизованный сервер является уязвимым местом всей системы:• если сервер не работает, то разработчики не могут взаимодействовать, и никто

не может сохранить новой версии своей работы;• если отсутствует подключение сети у разработчика, в это время он также не

может взаимодействовать с сервером;• если же повреждается диск с центральной базой данных и нет резервной копии,

вы теряете абсолютно всё — всю историю проекта, разве что за исключением нескольких рабочих версий, сохранившихся на рабочих машинах пользователей;

• скорость работы зависит от подключения к серверу.

Page 15: Scino: DVCS на примере Git

Децентрализованные системы

Page 16: Scino: DVCS на примере Git

Децентрализованные системы

• Преимущества:• Так как каждый раз, когда клиент забирает свежую версию файлов, он создаёт

себе полную копию всех данных, то в случае сбоев на сервере, через который шла работа, любой клиентский репозиторий может быть скопирован обратно на сервер, чтобы восстановить базу данных.

• Возможность работать с несколькими удалёнными репозиториями, таким образом, можно одновременно работать по-разному с разными группами людей в рамках одного проекта. Так, водном проекте можно одновременно вести несколько типов рабочих процессов, что невозможно в централизованных системах.

• Недостатки:• Сложнее в освоении;• Иногда требуют дополнительных договоренностей.

Page 17: Scino: DVCS на примере Git

Git

• распределённая система управления версиями файлов

• создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005

• программа является свободной и выпущена под лицензией GNU GPL версии 2

• Git и Github – не одно и то же. Это проекты разных команд.

Page 18: Scino: DVCS на примере Git

Локальные операции

Page 19: Scino: DVCS на примере Git

Статусы файлов

Page 20: Scino: DVCS на примере Git

Работа с Git

• git init - создание репозитория

• git add <filename> - добавить файл в индекс

• git commit -m "Comment" - отправить файл в репозиторий(локальный)

Page 21: Scino: DVCS на примере Git

git init

Page 22: Scino: DVCS на примере Git

Создание файла

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

Добавление

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

Изменение

$ 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

Коммит

$ 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

Хранение коммита

Page 27: Scino: DVCS на примере Git

Последовательность коммитов

Page 28: Scino: DVCS на примере Git

Ветка master

Page 29: Scino: DVCS на примере Git

Клонирование репозитория

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

Работа с удаленным репозиторием

$ 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

Создание веток

$ git branch testing

$ git co testing

Switched to branch 'testing'

$ git branch

* testing

master

Page 32: Scino: DVCS на примере Git

Хранение веток

Page 33: Scino: DVCS на примере Git

HEAD

Page 34: Scino: DVCS на примере Git

Слияние веток

$ 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

Отправка ветки на сервер

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

Организация разработки

• Инструментарий VCS дает дополнительные возможности по организации процесса разработки

• Чем легче основные операции в системе, тем более сложный процесс может быть реализован

• Цель создания процессов разработки – уменьшение количества ошибок и потенциальных проблем

Page 37: Scino: DVCS на примере Git

Github

Page 38: Scino: DVCS на примере Git

Github

Page 39: Scino: DVCS на примере Git

Github

Page 40: Scino: DVCS на примере Git

Github

Page 41: Scino: DVCS на примере Git

Github

Page 42: Scino: DVCS на примере Git

Спасибо за внимание

Ваши вопросы?