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

Содержание

Слайд 2

О системе контроля версий Git Система контроля версий — это система,

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

Система контроля версий — это система, записывающая

изменения в файл или набор файлов в течение времени и позволяющая вернуться позже к определённой версии.
Git сохраняет файлы разных версий как «снимки». Если в новой версии какой-либо файл не менялся, то сохраняется не «снимок», а ссылка на предыдущую версию файла.
Слайд 3

Основные понятия GIT Репозиторий – база данных где хранится информация о

Основные понятия GIT

Репозиторий – база данных где хранится информация о файлах

(«снимках»),история изменений, ссылки на файлы, комментарии и тд.
Операции над репозиториями:
Создание. Создать репозиторий можно в любой папке не находящейся под версионным конролем
Клонирование. Можно клонировать любой репозиторий. При этом данные находящиеся в исходном репозитории будут скопинованны в новый репозиторий
Все операции в GIT осуществляются с помощью команд из командной строки. Но к счастью есть оболочки с графическим интерфейсом, которые облегчают работу.
Слайд 4

Построение работы с репозиториями (вариант) Главный репозиторий (Хранит релизы ПО) Репозиторий

Построение работы с репозиториями (вариант)

Главный репозиторий
(Хранит релизы ПО)

Репозиторий
разработчика 1
(Хранит

главный репозиторий + текущую работу разработчика 1 )

Репозиторий
разработчика 2
(Хранит главный репозиторий + текущую работу разработчика 2 )

Репозиторий
разработчика 3
(Хранит главный репозиторий + текущую работу разработчика 3 )

Синхронизация

Синхронизация

Синхронизация

Репозиторий
разработчика 1 (На ноуте)
(Хранит главный репозиторий + текущую работу разработчика 1 )

Синхронизация

В главный репозиторий загружается готовый функционал, при этом в него попадают так же «промежуточные версии ПО»

Слайд 5

Состояние файлов с точки зрения Git Файл для Git могут быть

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

Файл для Git могут быть в

3 основных состояниях:
Изменен (modified),Индексирован (staged), Зафиксирован (Сommitted).
К изменённым относятся файлы, которые поменялись, но ещё не были зафиксированы.
Индексированый — это изменённый файл в его текущей версии, отмеченный для включения в следующий коммит.
Зафиксированный значит, что файл уже сохранён в вашей локальной базе.
Слайд 6

Подробнее о состояниях файлов Commit 1 File A Committed File B

Подробнее о состояниях файлов

Commit 1

File A
Committed

File B
Committed

File C
Committed

File A1
modified

File A1
staged

Commit 2

File

A1
Committed

File B
Committed

File C1
Committed

Commit 2

File A1
Committed

File B1
Committed

File C
Committed

File С1
modified

File С1
staged

Слайд 7

Термины работы с файлами и репозиторием Clone – клонирование репозитория Init

Термины работы с файлами и репозиторием
Clone – клонирование репозитория
Init –

создание репозитория
Add – команда добавить файл в индекс
Commit – команда фиксации изменений в репозитории (создание «снимка» файлов)
При Commit необходимо указывать комментарий, описывающий что мы коммитим.
Слайд 8

Ветвление в Git C1 C2 CF1 CF1 CB1 CB1F1

Ветвление в Git

C1

C2

CF1

CF1

CB1

CB1F1

Слайд 9

Ветвление подробно C1 C2 CF1 CF1 CB1 CB1F1 Master F1 F1 F1 Master Bug Bug Master

Ветвление подробно

C1

C2

CF1

CF1

CB1

CB1F1

Master

F1

F1

F1

Master

Bug

Bug

Master

Слайд 10

Слияние Слияние бывает 2х типов: Быстрое перемещение (Fast-Forward) Коммит слияния (слияние

Слияние

Слияние бывает 2х типов:
Быстрое перемещение (Fast-Forward)
Коммит слияния (слияние имеет более

одного предка)
Быстрое перемещение-это прямое слияние с предыдущим коммитом (коммит с одним предком). По сути просто перемещение указателя ветки. Как правило проходит без проблем (Слияние Mastrer и Bug).
Коммит слияния сливает изменения из разных веток. При таком подходе могут возникать конфликты.
При конфликте Git выдает отчет (пример):
<<<<<<< HEAD:index.html

=======

>>>>>>> iss53:index.html
Слайд 11

Термины ветвления Head – Указатель на текущую рабочую ветку Branch –

Термины ветвления

Head – Указатель на текущую рабочую ветку
Branch – команда создание

новой ветки, но Head указывает на старую ветку
Checkout – команда переключения ветки (перенос Head на другую ветку)
Merge – команда слияния активной ветки (на которую указывает Head) и другой ветки (указывается пользователем).
Слайд 12

Работа с удаленными репозиториями Главный репозиторий (Хранит релизы ПО) Репозиторий разработчика

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

Главный репозиторий
(Хранит релизы ПО)

Репозиторий
разработчика 1
(Хранит главный

репозиторий + текущую работу разработчика 1 )

Репозиторий
разработчика 2
(Хранит главный репозиторий + текущую работу разработчика 2 )

Репозиторий
разработчика 3
(Хранит главный репозиторий + текущую работу разработчика 3 )

Синхронизация

Синхронизация

Синхронизация

Репозиторий
разработчика 1 (На ноуте)
(Хранит главный репозиторий + текущую работу разработчика 1 )

Синхронизация

Слайд 13

Команды работы с удаленными репозиториями Fetch – забирает данные в локальный

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

Fetch – забирает данные в локальный

репозиторий, но не сливает их с текущими наработками. Не модифицирует то над чем сейчас работаешь.
Pull – забирает изменения из удаленной ветки и автоматически сливает их с текущей веткой.
Push – отправка данных на сервер и автоматическое слияние с выбранной веткой.
Слайд 14

Совместная работа Сервер К1 Сервер К1 Сервер К1 Сергей К2 Сергей

Совместная работа

Сервер К1

Сервер К1

Сервер К1

Сергей К2

Сергей К3

Дима К2

Сервер К2
(Сергей К3)

Сергей К2

Сергей

К3

Дима К3

Дима К4
(Сервер К2 + Дима К3)

Сервер К3
(Дима К4)

Дима К2

Дима К3

Сергей К2

Сергей К3

PULL

PUSH

Серверный репозиторий

PUSH

Локальный реп. Димы

Локальный реп. Сергея

Слайд 15

Решение конфликтов При 3х стороннем слияении возможно возникновение конфликтов. Конфликты возникают

Решение конфликтов

При 3х стороннем слияении возможно возникновение конфликтов. Конфликты возникают когда

в одни и те же строки изменяются разными авторами.
При возникновении конфликтов процесс слияния останавливается, выдается предупреждение и список файлов в которых есть конфликты.
В файлах конфликты выделяются следующим образом:
После разрешения конфликта необходиом произвести коммит.
Слайд 16

Командная работа подробнее Работа с серверным репозиторием состоит из следующих шагов:

Командная работа подробнее

Работа с серверным репозиторием состоит из следующих шагов:
Локальный коммит

инкремента (нового функционала)
Запрос изменений с сервера (Fetch)
Если они есть, то забираем измненния и сливаем со своей веткой (Pull)
Разбираемся с конфликтами, если они есть
Тестируем функционал версии с результатами слияния!
После прохождения тестов отправляем на сервер (Pull)
Новый функционал в общем репозитории!!!