Slide 1

Slide 1 text

24 сентября 2021 [email protected] Олисеенко Валерий Дмитриевич Ассистент кафедры информатики Контроль версий. Введение в GitHub.

Slide 2

Slide 2 text

2/44 2/44 Описание проблемы Пример последовательной работы Пример параллельной работы Наглядно про проблемы тут …

Slide 3

Slide 3 text

3/44 3/44 Локальная система контроля версий Источник: http://git-scm.com/book/ru/v2/Введение-О-системе-контроля-версий

Slide 4

Slide 4 text

4/44 4/44 Централизованная системы контроля версий Источник: http://git-scm.com/book/ru/v2/Введение-О-системе-контроля-версий

Slide 5

Slide 5 text

5/44 5/44 Распределенная система контроля версий Источник: http://git-scm.com/book/ru/v2/Введение-О-системе-контроля-версий

Slide 6

Slide 6 text

6/44 6/44 История систем контроля версий Источник: https://habr.com/ru/post/478752/

Slide 7

Slide 7 text

7/44 7/44 Введение в GIT Система git разработана Линусом Торвальдсом в 2005 году Имеет: • Высокую скорость • Простую архитектуру • Хорошую поддержка нелинейной разработки • Полную децентрализацию • Возможность управления большими проектами git for windows

Slide 8

Slide 8 text

8/44 8/44 Хранение файлов в Git (1/2) Источник: http://git-scm.com/book/ru/v2/Введение-Что-такое-Git%3F Контроль версий, основанный на различиях

Slide 9

Slide 9 text

9/44 9/44 Хранение файлов в Git (2/2) Источник: http://git-scm.com/book/ru/v2/Введение-Что-такое-Git%3F Хранение данных как снимков проекта во времени

Slide 10

Slide 10 text

10/44 10/44 Ключевые слова в Git Репозиторий Git — набор файлов конфигурации, журналов операций, выполняемых над репозиторием, индекс расположения файлов и сами файлы с кодом Локальный репозиторий — репозиторий Git, расположенный на локальном компьютере Удалённый репозиторий — репозиторий Git, находящийся на удалённом сервере. Форк (англ. Fork) — копия репозитория. Пулл (англ. Pull) — получение последних изменений с удалённого сервера репозитория. Пуш (англ. Push) — отправка всех неотправленных коммитов на удалённый сервер репозитория. Пулл-реквест (англ. Pull request) — запрос на внесения своих изменений в основной (удалённый репозиторий). Кодревью — процесс проверки кода на соответствие стандартом, отсутствие ошибок и внешнему виду. Мёрдж (англ. Merge) — слияние разных версий кода (веток). Мастер (Master) — главная ветка репозитория. Ветка (Branch) —параллельная версия репозитория. Коммит (Commit) — фиксация изменений или запись изменений в репозиторий.

Slide 11

Slide 11 text

11/44 11/44 Запись изменений файлов в Git (1/2)

Slide 12

Slide 12 text

12/44 12/44 Запись изменений файлов в Git (1/2) Источник: http://git-scm.com/book/ru/v2/Основы-Git-Запись-изменений-в-репозиторий

Slide 13

Slide 13 text

13/44 13/44 Изменения файла в Git. Проще… Источник: http://git-scm.com/book/ru/v2/Введение-Что-такое-Git%3F

Slide 14

Slide 14 text

14/44 14/44 Ещё факты о Git… Источник: http://git-scm.com/book/ru/v2/Основы-Git-Запись-изменений-в-репозиторий • Почти все операции выполняются локально. • Целостность Git — сравнение в хэше SHA-1. • Git обычно только добавляет данные. Зашифрованное число: 012 SHA-1: c4a2d99bc28d236098a095277b7eb0718d6be068

Slide 15

Slide 15 text

15/44 15/44 Git for Windows git for windows

Slide 16

Slide 16 text

16/44 16/44 Установка Git for Windows

Slide 17

Slide 17 text

17/44 17/44 Начало работы с консолью Минимальный набор команд для работы с Git Bash: • cd <путь> — смена директории • cd .. — смена директории вверх (двоеточие с пробелом) • ls — список файлов и папок в текущей директории • pwd — полный текущий путь директории • mkdir — создание директории • сtrl + L — очистка экрана • tab — автозаполнение команды в консоли • Стрелки ↑/↓ — выбор введённых ранее команд

Slide 18

Slide 18 text

18/44 18/44 Начало работы с Git Локальный каталог Создание проекта в Git Клонирование (Форк) каталога

Slide 19

Slide 19 text

19/44 19/44 Индексация изменённых файлов Изменяем файл и делаем git status Для коммита: git commit

Slide 20

Slide 20 text

20/44 20/44 Просмотр изменений Разница проиндексированного и не проиндексированного файла

Slide 21

Slide 21 text

21/44 21/44 Основные команды Git • git add <название> — индексация нового файла в Git или добавление его к коммиту. • git diff — список изменений по каждому файлу. • git status — список изменённых/добавленных/удалённых файлов. • git commit — создать новый коммит. • git rm — удалить файл в Git и в каталоге. • git log—список коммитов. • git checkout <название> — откатить изменения в файле или перейти на другую ветку. • git help <название> — получить справку по команде.

Slide 22

Slide 22 text

22/44 22/44 Ветвление (1/2) Коммит и его дерево Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах $ git add *.cpp $ git add LICENSE $ git commit -m 'Initial project version'

Slide 23

Slide 23 text

23/44 23/44 Ветвление (2/2) Коммит и его родители Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах

Slide 24

Slide 24 text

24/44 24/44 Создание новой ветки Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах Создание ветки: git branch <название>

Slide 25

Slide 25 text

25/44 25/44 Переключение между ветками Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах Переход по веткам: git checkout <название> Проверка указателей веток: git log --decorate

Slide 26

Slide 26 text

26/44 26/44 Пример: ветки (1/3) Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах Коммит на ветке «testing»

Slide 27

Slide 27 text

27/44 27/44 Пример: ветки (2/3) Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах Переключение веток: git checkout master

Slide 28

Slide 28 text

28/44 28/44 Пример: ветки (3/3) Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах Коммит на ветке «master». Вывод всего графа коммитов git: log --oneline --decorate --graph --all

Slide 29

Slide 29 text

29/44 29/44 Трёхстороннее слияние веток (1/2) Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-Основы-ветвления-и-слияния Объединение веток: git merge <имя ветки>

Slide 30

Slide 30 text

30/44 30/44 Трёхстороннее слияние веток (2/2) Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-Основы-ветвления-и-слияния

Slide 31

Slide 31 text

31/44 31/44 Конфликты Источник: http://git-scm.com/book/ru/v2/Ветвление-в-Git-Основы-ветвления-и-слияния Сообщение конфликта Изменения в файле

Slide 32

Slide 32 text

32/44 32/44 Процесс работы в команде • Программист хочет добавить новый функционал. • Создаёт себе ветку от master’a • Реализует функционал. • Тестирует и рефакторит код. • Делает пулл-реквест. • Пулл-реквест ревьюят, программист переключается на другую задачу. • Если к коду появляются замечания, программист переключается на ветку пулл-реквеста и правит там замечания. • После исправления, коммитит и пушит (для добавления в пулл-реквест). • Переключается обратно на свою рабочую ветку и продолжает писать код. • Цикл повторяется до тех пор, пока пулл-реквест не принимают.

Slide 33

Slide 33 text

33/44 33/44 Полезные ресурсы • Git for Windows: https://gitforwindows.org/ • Официальный гайд: https://git-scm.com/book/ru/v2 • Комикс-гайд: https://habr.com/ru/post/552872/ • Ещё гайд: https://javarush.ru/groups/posts/2683-nachalo-rabotih-s-git- podrobnihy-gayd-dlja-novichkov • Задачки по Git: https://githowto.com/ • Игра: https://learngitbranching.js.org/?locale=ru_RU

Slide 34

Slide 34 text

34/44 34/44 Введение в Github • Аудитория на 2020 год — 56 млн. человек. • Ежегодно: 40 + млн. репозиториев и 1.9 млрд. коммитов. • Большинство IT компаний просят Github при трудоустройстве. • Удобная система пулл-реквестов и обсуждений. • Множество интегрированных сервисов для разработчика. Источник: https://www.opennet.ru/opennews/art.shtml?num=54186

Slide 35

Slide 35 text

35/44 35/44 Навигация в Github

Slide 36

Slide 36 text

36/44 36/44 Создание репозитория в Github Fork проекта Создание своего проекта

Slide 37

Slide 37 text

37/44 37/44 Свой репозиторий в Github

Slide 38

Slide 38 text

38/44 38/44 Как вести репозиторий в Github?

Slide 39

Slide 39 text

39/44 39/44 Создание ветки в Github?

Slide 40

Slide 40 text

40/44 40/44 Как отправлять домашки? (1/3) • Создать репозиторий на GitHub • Подключиться через SSH к GitHub • Отвести ветку от мастера вашего репозитория: ✔Git checkout master ✔Git branch homework-2 • Создать папку с проектом Visual Studio • Написать код и сделать коммиты: ✔После каждого значимого продвижения ✔git add на каждый новый файл ✔git commit -a –m homework homework “ОПИСАНИЕ”

Slide 41

Slide 41 text

41/44 41/44 Как отправлять домашки? (2/3) • Когда задача готова: ✔git push -u origin homework-2. • На гитхабе, делаете Pull request ✔Выбираете ветку в «Branch:»; ✔Жмёте на pull request; ✔Вводите описание pull request’a; ✔Жмёте на create pull request; • Ссылку на то, что получилось, выкладываете через форму. • Ожидаете комментариев.

Slide 42

Slide 42 text

42/44 42/44 Как отправлять домашки? (3/3) • Коммиты только в локальной копии! • Не забывайте делать git checkout «название» при исправлении комментариев. • После того как исправили git push (без –u!). • Когда задача принята, merge pull request на гитхабе и удаляете ветку. Что выкладывать: • .cpp, .h-файлы, .vcxproj, .sln. • Текстовые файлы, нужные для работы программы.

Slide 43

Slide 43 text

43/44 43/44 Полезные ресурсы • Гайд на сайте GIT: http://git-scm.com/book/ru/v2/GitHub-Настройка-и-конфигурация-учетной-записи • Документация GitHub: https://docs.github.com/en • Cоветы по работе с GitHub: https://habr.com/ru/company/mailru/blog/359246/ • Оформление профиля GitHub: https://techrocks.ru/2020/05/13/make-your-github-profile-helpful-in-finding-job/ • Как оформить Readme: https://techrocks.ru/2019/04/16/good-readme-on-github/ • Полезные фишки GitHub: https://javarush.ru/groups/posts/1820-12-potrjasajujshikh-vozmozhnostey-github • Ещё фишки GitHub: https://howilive.ru/posts/open-source-part-1/ • GitHub по SSH: https://git-scm.com/book/ru/v2/Git-на-сервере-Генерация-открытого-SSH-ключа

Slide 44

Slide 44 text

24 сентября 2021 [email protected] Олисеенко Валерий Дмитриевич Ассистент кафедры информатики Контроль версий. Введение в GitHub.