Системы контроля версий
для чего нужно?
- хранение и версионирование любого кода
- организация командной разработки
- понимание механик работы инструментов разработки
- понимание организации процессов доставки и развертывания ПО
Знакомство с Git
Git
-
Распределенная система хранения кода.
-
Основа командной разработки.
-
Хранит историю разработки проекта.
Распределенная система хранения кода
-
у вас на машине хранится полноценная локальная копия проекта
-
всегда есть резервная копия (у других участников проекта и на удаленном репозитории)
-
можно работать оффлайн (но сначала нужно локально загрузить себе копию проекта)
Ветвление
Общая информация
-
Ветки позволяют работать нескольким людям над одним проектом параллельно.
-
В каждом репозитории есть main/master ветка являющаяся основной веткой.
-
Репозиторий может содержать множество веток, в которых может быть отличия между файлами.
-
На основе любой ветки можно сделать новую ветку.
-
Также любую ветку можно объединять с основной веткой.
Пример объединения веток (merge)
Git flow
Общая схема:
Схема с функциональными ветками:
Структура хранимых данных в Git
Структура хранимых данных:
Коммиты
Blob - содержимое файла. Это обычный файл.
Git хранит только содержимое файла, без имени и без информации о том, где он лежит.
Tree - можно представить как обычную директорию. Он хранит структуру каталогов.
Commit - сохраненная версия проекта. Он не хранит сами файлы.
Commit говорит: вот Tree, который описывает весь проект на данный момент.
Commit содержит: - автора - дату - сообщение - ссылку на предыдущий коммит.
Tag - метка, удобное имя для конкретного коммита.
Работа с Git
Состояние коммитов:
Состояние файлов:
Команды git
Работа с репозиторием
| Команда | Описание |
|---|---|
git clone / git init |
Склонировать удаленный репозиторий или создать локальный |
git pull / git push |
скачать себе изменения из интернета или отправить изменения в удаленный репозиторий |
git tag |
протегировать коммит |
Работа с ветками
| Команда | Описание |
|---|---|
git branch |
создать или удалить ветку |
git checkout / git switch |
переключиться на ветку (старая команда / новая команда) |
git merge |
соединить несколько веток в одну |
Работа с файлами
| Команда | Описание |
|---|---|
git add <file> / git rm <file> |
добавить файл в индекс / удалить файл из индекса |
git mv <file> |
переместить файл или директорию |
git commit |
зафиксировать коммит |
Работа с историей
| Команда | Описание |
|---|---|
git status / git show |
посмотреть состояние репозитория и объектов |
git log |
показать логи коммитов |
git diff |
посмотреть разницу текущего состояния и исходного |