Similar presentations:
Cистема управления версиями Git
1.
Cистема управленияверсиями Git
Автор: Кучук Михаил Сергеевич
e-mail: [email protected]
skype: mikuka_s
БЫСТРЫЙ СТАРТ
__
2.
Что? Какой еще гит?Git – распределенная система контроля версий. Проект появился в 2005 году
для версионирования кода ядра Linux взамен платной системы BitKeeper.
Название дано основателем проекта Торвальдсом и дословно подчеркивает
эгоизм основателя Linux - «мерзавец».
Цели Git:
• высокая скорость работы;
• поддержка нелинейной разработки (тысячи параллельных веток);
• полная децентрализация;
• оптимизация для больших проектов (объем дискового пространства и
быстродействие).
3.
Git vs Subversion: преимущества• возможность локальной работы с
репозитарием без доступа к сети;
• хранение только изменений от
версии к версии;
• быстрое создание/переключение
веток;
• легкое слияние веток;
• расширенная работа с коммитами;
• поддержка сложных ветвлений;
• утилита TortoiseGit.
• линейная «человеческая» нумерация
версии от младшей к старшей;
• поддержка бинарных файлов;
• доступно частичное клонирование возможность выписать любой узел
SVN;
• навигация по всем узлам;
• низкий порог вхождения;
• утилита TortoiseSVN.
4.
Git vs Subversion: идеологияпромежуточных коммитов
Промежуточные локальные коммиты
позволяют вести разработку линейно
Из-за отсутствия поддержки локальных
коммитов требуется создание веток
remote
master
trunk
merge
push
Основная
ветка по
умолчанию master
local
commit1
commit1
local
commit0
commit0
local
master
pull
remote
master
branch
trunk
switch
trunk
Основная
ветка по
умолчанию trunk
5.
Git vs Subversion: получение исходниковGit Clone
SVN Checkout
клонирование
подмодулей
имя сервера
имя ветви
кол-во ревизий в
истории
6.
Git vs Subversion: получение измененийGit Pull
SVN Update
имя сервера
ветка
7.
Git vs Subversion: добавление файловGit Add
SVN Add
включить
игнорируемые
файлы
8.
Git vs Subversion: фиксация измененийGit Commit
SVN Commit
отправить коммит в
новую ветвь
исправить предыдущий коммит
задать дату и автора
коммита
9.
Git vs Subversion: создание ветокGit Branch
SVN Copy
имя новой ветви
потомок – вершина ветви
потомок – выбор ветви
потомок - коммит
потомок - ревизия с тегом
переключиться на
ветвь после branch
10.
Git vs Subversion: переключение ветокGit Checkout
SVN Switch
переключить
ветвь
перейти на ревизию
с номером метки
переключиться
на коммит
11.
Git vs Subversion: просмотр историиGit Log
SVN Log
12.
Git: обновление удаленного репозитарияGit Push синхронизирует локальные коммиты с удаленным (remote) сервером.
URL-сервера назначается воспринимаемый alias – по умолчанию имя сервера origin.
Синтаксис: git push [сервер] [ветка]
origin/master
Remote branch
push
local
commit1
local
commit0
master
Local branch
13.
Git: слияниеGit Merge – слияние нескольких ветвей. Существуют различные стратегии слияния:
resolve – трехстороннее слияние с общим
предком;
recursive - трехстороннее слияние с
построением виртуального предка для
сложных случаев resolve;
ours – слияние веток с игнорированием
истории выбранной ветки;
subtree – слияние с помещением ветки в
отдельный каталог (создание дерева
проектов);
octopus – слияние более двух веток с
двумя и более предками.
слияние с
веткой
слияние с ревизией
по номеру метки
слияние с
коммитом #
стратегия
слияния
мессага без
напряга
14.
Git: слияниеПри слиянии с созданием коммита ветвь перемещается вперед с присвоением
уникального хэша, HEAD указывает на вершину.
Опции слияния:
Squash – объединить историю ветви в один коммит и поместить узел слияния до HEAD
(HEAD не меняется);
No Fast Forward (перемотка вперед) – не переносить историю ветви в основной ствол
при отсутствии в нем конфликтующих изменений, иными словами все равно
сохранить историю в отдельной ветви;
No commit – сохранить результат слияния, но не фиксировать его, позволяя внести
исправления перед коммитом;
Messages – создать сообщение о слиянии по истории указанного количества
коммитов;
Fast Forward Only – попытаться провести слияние только методом перемотки вперед
с вырождением наследованной ветви.
15.
Git: создание меток ревизииGit Tag
Метки создаются по:
• HEAD
• Ветке
• Существующему тегу
• Номеру ревизии
16.
Git: полезности• Git Init – создание локального репозитария
• Git Checkout – многозадачная команда (переключить/отменить)
• Git Stash – спрятать неиндексированные изменения с возможностью из
последующего восстановления
• Git Submodule – работа с внешними репозитариями (аналог svn:externals)
• Git Status – состояние репозитария: наличие новых файлов, пометки
удалено/изменено/конфликтует
• Git Fetch – синхронизация хранилища
• Gitignore – добавление по маске или конкретных файлов, не включаемых в индекс
и не отображаемых по команде Status (все исключения хранятся в файлу .gitignore в
корне репозитария)
Справка: https://git-scm.com/book/ru/v2