Основи на Git Branching
Способността за лесно разклоняване е една от най-добрите характеристики на Git. Създаването на клонове в други системи за контрол на версиите може да бъде скъпо по отношение на пространството и изискванията за обработка. Разклоняването на Git е ефективно. Така потребителите са по-склонни да използват клонове в Git.
Разклонен работен поток
Да предположим, че сте започнали нов проект, наречен myvideogame. Той има един клон. Името по подразбиране на първоначалния клон в Git се нарича master. Той се създава автоматично. Нека създадем хранилището на myvideogame Git.
$ mkdir myvideogame$ cd myvideogame
$ git init
Създали сте празно хранилище на Git. Нека добавим нашия дизайн.txt файл с малко текст в него.
$ echo "Решение за дизайн 1: Добавяне на изображения" >> дизайн.текст$ echo "Решение за дизайн 2: Напишете код" >> дизайн.текст
$ git add -A
$ git commit -m "C0: Добавен дизайнерски файл"
Нека добавим още някои промени:
$ echo "Решение за дизайн 3: Тестова игра" >> дизайн.текст$ git add -A
$ git commit -m "C1: Модифициран дизайнерски файл"
Ако проверите историята, ще намерите:
$ git log --oneline6a09bd6 C1: Модифициран дизайнерски файл
5f18d89 C0: Добавен дизайнерски файл
Ако проверите състоянието на Git и всички създадени клонове (с помощта на командата: git branch -a), ще видите:
$ git статусНа клона майстор
няма нищо за ангажиране, работната директория е чиста
$ git клон -a
* майстор
В момента имате следната ситуация:
Направили сте две ангажименти в главния клон.
Да предположим, че сте открили грешки при тестването на играта си, но не искате да решавате проблема в главния клон, защото все още не искате да се забърквате с оригиналния дизайн. Така че можете да създадете нов клон, наречен bugfix:
$ git поправка на клонСега, ако проверите всички клонове:
$ git клон -aпоправка на бъг
* майстор
Сега сте създали нов клон, наречен bugfix. Ситуацията може да се визуализира по следния начин:
Обаче звездата (*) до главния клон означава, че все още сте в главния. Ако направите промени, той пак ще влезе в главния клон. Можете да използвате командата за плащане, за да промените клонове:
$ git checkout корекция на грешкиПревключено към клон „корекция на грешки“
Можете да проверите кой клон използвате с помощта на командата status или “branch -a”:
$ git статусПри поправка на грешки в клона
няма нищо за ангажиране, работната директория е чиста
$ git клон -a
* поправка на бъг
майстор
Сега, нека поправим грешката:
$ echo "Fix Bug 1" >> дизайн.текст$ git add -A
$ git commit -m "C2: Отстранена грешка 1"
Създали сте ситуация като тази:
Главният клон няма промяна C2. Можете лесно да проверите това, като проверите историята на двата клона.
Първо, историята на клона на корекции на грешки:
$ git статусПри поправка на грешки в клона
няма нищо за ангажиране, работната директория е чиста
$ git log --oneline
e8f615b C2: Отстранена грешка 1
6a09bd6 C1: Модифициран файл за проектиране
5f18d89 C0: Добавен дизайнерски файл
След това можете да превключите към главния клон и да проверите историята му:
$ git checkout masterПревключено към клон „master“
$ git статус
На клона майстор
няма нищо за ангажиране, работната директория е чиста
$ git log --oneline
6a09bd6 C1: Модифициран файл за проектиране
5f18d89 C0: Добавен дизайнерски файл
Можете да видите, че главният клон няма промените от клона на корекции на грешки.
Винаги можете да създадете нов клон от текущия клон, в който се намирате. Да предположим, че искате да създадете друг клон, който ще съдържа експериментални функции. Можете да създадете клон от master и да добавите експериментални функции към него:
$ git статусНа клона майстор
няма нищо за ангажиране, работната директория е чиста
$ git клон експериментално
$ git checkout експериментално
Превключено към клон „експериментално“
$ git статус
На клон експериментално
няма нищо за ангажиране, работната директория е чиста
$ echo "Добавяне на експериментални функции" >> дизайн.текст
$ git add -A
$ git commit -m "C3: Добавени експериментални функции"
[експериментален 637bc20] C3: Добавени експериментални функции
1 файл е променен, 1 вмъкване (+)
Ако проверите историята на експерименталния си клон, ще видите:
$ git статусНа клон експериментално
няма нищо за ангажиране, работната директория е чиста
$ git log --oneline
637bc20 C3: Добавени експериментални функции
6a09bd6 C1: Модифициран дизайнерски файл
5f18d89 C0: Добавен дизайнерски файл
Ще забележите, че нямате ангажимент C2, който е създаден в клона на корекции на грешки. Тъй като експерименталният клон е създаден от главния клон, той не вижда промените в корекцията на грешки. Имате следната ситуация:
Заключение
Честито! Научихте как да се разклонявате.
Git клоновете се правят лесно и бързо. Това е една от причините за популярността на Git. Ако искате да станете опитен Git потребител, трябва да станете опитен в разклоняването на Git.
Допълнително проучване:
https: // git-scm.com / book / en / v2 / Git-Branching-Basic-Branching-and-Merging