5.49M
Category: softwaresoftware

Введение в Git

1.

Семинар 5

2.

Ваши вопросы

3.

Четвертый опрос
https://nvt.miem.hse.ru/s/ps2025-4

4.

Цели семинара
Системы контроля версий
Git
Github vs Gitlab
Практика работы с Git

5.

Хотим работать в команде
Надо создавать
Pet project с
другом
Надо создавать
Pet project с
другом

6.

Как синхронизировать версии?
Program v1
Program v2
PC1
PC2

7.

Хотим работать в команде
Когда попросил коллегу отправить тебе скриншот с
его кодом

8.

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

9.

Что такое Git
Git - система контроля версий / хранилище истории разработки
GIT
V2
main.py
V2
V1
main.py
V2
main.py
main.py
config.json
config.json

10.

Командная работа
Git - распределенная система
У каждого разработчика есть
локальная копия Git, хранящая
историю разработки проекта
Центральный сервер не
является обязательным, но в
реальных проектах чаще
всего присутствует

11.

Создание репозитория
Для создания репозитория локально необходимо в корне вашего проекта
написать следующую команду:
После этого в папке проекта появится скрытая папка .git, которая и будет
хранить всю информацию

12.

Начальная настройка
Git хранит не только сами изменения, но и информацию о том, кто был их
автором. Давайте настроим наш Git и укажем кто мы такие

13.

Статусы файлов
При работе с Git необходимо различать три понятия: рабочая директория,
индекс и репозиторий
Рабочая
директория
main.py
.git
Индекс
Репозиторий

14.

Индекс хранит все файлы, отслеживаемые Git
Помимо этого индекс является промежуточным хранилищем изменений
Рабочая
директория
Индекс
main.py
main.py

15.

Когда мы доделали какую-то часть проекта, мы можем добавить все
изменения в репозиторий
Индекс
Репозиторий
main.py
main.py

16.

Статусы файлов
Рабочая
директория
.git
Индекс
Репозиторий
add
main.py
main.py
main.py
commit
add
settings.json
settings.json
main.py
settings.json
settings.json

17.

Проверка состояния проекта
Директория
main.py
Индекс
Репозиторий

18.

Проверка состояния проекта
Директория
main.py
Индекс
main.py
Репозиторий

19.

Проверка состояния проекта
Директория
main.py
Индекс
Репозиторий
main.py
main.py

20.

Последний коммит

21.

Хороший коммит
Важно создавать коммиты, придерживаясь следующих принципов:
● Атомарность - каждый коммит должен содержать в себе изменения,
связанные с одной обособленной функцией
● Консистентность (постоянство) - каждый коммит должен представлять
логически завершенное изменение проекта, желательно не ломая его
работу
● Описание коммита должно четко и понятно отражать смысл коммита.
Рекомендуется не делать сообщение коммита длиннее 50 символов

22.

Ветки
Ветки - один из важнейших инструментов Git. По сути ветка - обособленный
поток разработки, причем новые коммиты сделанные в одной ветке не
существуют в других ветках
master
c1
c2
c3
feature-hse-auth
c6
c4
c7
c5

23.

Работа с ветками
Создание ветки
Смена активной ветки

24.

Слияние веток
Команда для слияния веток:

25.

Feature

26.

Слияние веток
master
feature-bye
Но что если мы изменили один и тот же файл как в главной ветке, так и в
новой, причем эти изменения затрагивают одни и те же строки файла

27.

Разрешение конфликтов
master
feature-bye

28.

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

29.

Разрешение конфликтов
Но в современных редакторах часто есть встроенные инструменты для
решения конфликтов

30.

Github flow
Существуют разные правила по созданию веток и ведению Git. Одно из
частых и самых простых решений - так называемый, Github flow

31.

Github vs Gitlab
Все это время мы работали с локальным репозиторием, но раньше мы уже
упоминали то, что зачастую используется отдельный сервер для
синхронизации изменений между участниками проекта
DevOps платформа
Соц сеть

32.

Создание удаленного репозитория

33.

Добавление удаленного
репозитория
Отправляем изменения на сервер:

34.

35.

Синхронизируемся с удаленным
репозиторием
При работе в команде ваши коллеги также отправляют свои изменения на
сервер, но Git не проверяет удаленные изменения постоянно
Узнать про удаленные изменения
Подтянуть удаленные изменения

36.

Создание MR (PR)

37.

38.

39.

40.

Свой Gitlab
https://git.miem.hse.ru

41.

.gitignore
https://git-scm.com/docs/gitignore

42.

Задание по Git
● Дедлайн 15 февраля 21:00
English     Русский Rules