Перейти к содержанию

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

для чего нужно?

  • хранение и версионирование любого кода
  • организация командной разработки
  • понимание механик работы инструментов разработки
  • понимание организации процессов доставки и развертывания ПО

Знакомство с Git

Git

  • Распределенная система хранения кода.

  • Основа командной разработки.

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

Распределенная система хранения кода

  • у вас на машине хранится полноценная локальная копия проекта

  • всегда есть резервная копия (у других участников проекта и на удаленном репозитории)

  • можно работать оффлайн (но сначала нужно локально загрузить себе копию проекта)

Ветвление

Общая информация

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

  • В каждом репозитории есть main/master ветка являющаяся основной веткой.

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

  • На основе любой ветки можно сделать новую ветку.

  • Также любую ветку можно объединять с основной веткой.

пример ветвления
Пример ветвления

Пример объединения веток (merge)

пример коммита слияния
Пример коммита слияния

Git flow

Общая схема:

Git flow

Схема с функциональными ветками:

Git flow with functional branches

Структура хранимых данных в Git

Структура хранимых данных:

структура хранимых данных Git branches

Коммиты

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 посмотреть разницу текущего состояния и исходного