Работа със сливане и изтриване на клони
Нека първо да създадем главен клон, да поставим няколко коммита, да създадем нов клон, наречен функции, да добавим няколко коммита, след което да се върнем към master и да се ангажираме отново. Ето командите:
$mkdirмоята игра
$CDмоята игра
$git init
$изхвърлен „Решение за проектиране 1: Brainstarm“ >>design.txt
$git добави -ДА СЕ
$git commit -м „C0: Стартиран проект“
$изхвърлен „Решение за проектиране 2: Напишете код“ >>design.txt
$git добави -ДА СЕ
$git commit -м „C1: Изпратен код“
$git клонХарактеристика
$git checkoutХарактеристика
$изхвърлен „Добавяне на функция 1“ >>feature.txt
$git добави -ДА СЕ
$git commit -м „C2: Функция 1“
$изхвърлен „Добавяне на функция 2“ >>feature.txt
$git добави -ДА СЕ
$git commit -м „C3: Функция 2“
$git checkoutмайстор
$изхвърлен „Отново промяна на Master“ >>design.txt
$git добави -ДА СЕ
$git commit -м „C4: Основно модифицирано“
Горните команди създадоха следната ситуация:
Можете да проверите историята на двата клона, за да видите какви ангажименти имат:
$git състояние
На клона капитан
нищо за ангажиране, работната директория е чиста
$git log --една линия
2031b83 C4: Основно модифицирано
1c0b64c C1: Изпратен код
$git checkoutХарактеристика
Превключено към клон'Характеристика'
$git log --една линия
93d220b C3: Функция2
ad6ddb9 C2: Функция1
1c0b64c C1: Изпратен код
ec0fb48 C0: Стартиран проект
Сега да предположим, че искате да пренесете всички промени от клона на функциите в нашия главен клон. Ще трябва да стартирате процеса от местоназначението на сливането. Тъй като искаме да се слеем в главния клон, трябва да започнете процеса от там. Така че нека проверим главния клон:
$git checkoutмайсторПревключено към клон'господар'
$git състояние
На клона капитан
нищо за ангажиране, работната директория е чиста
Сега нека създадем сливането:
$git mergeХарактеристика
Ако при сливането няма конфликти, ще се отвори текстов редактор с коментарите:
Обединяване на клон'Характеристика'# Моля, въведете съобщение за ангажиране, за да обясните защо това сливане е необходимо,
# особено ако обедини актуализиран възходящ поток в клон на тема.
#
# Редовете, започващи с '#', ще бъдат игнорирани и празно съобщение ще се прекъсне
# ангажиментът.
Можете да промените коментарите или да приемете тези по подразбиране. Изходът за сливане трябва да показва резултати като този:
Обединяване, направено от„рекурсивен“стратегия.feature.txt| 2++
1 файлпроменен,2вмъквания(+)
режим на създаване100644feature.txt
След сливането имате следното условие:
Ако проверите регистрационните файлове, ще откриете:
$git състояниеНа клона капитан
нищо за ангажиране, работната директория е чиста
$git log --една линия
46539a3 C5: Обединяване на клона'Характеристика'
2031b83 C4: Основно модифицирано
93d220b C3: Функция2
ad6ddb9 C2: Функция1
1c0b64c C1: Изпратен код
ec0fb48 C0: Стартиран проект
Успешно сте обединили промените. Клонът на функциите обаче все още присъства.
$git клон -да сеХарактеристика
*майстор
Можете да го изтриете със следната команда:
$git клон -дХарактеристикаАко проверите сега, трябва да видите само главния клон:
$git клон -да се*майстор
Заключение
Редовно проверявайте за неизползвани клонове и ги изтривайте. Искате да поддържате хранилището си чисто, за да улесните навигацията и разбирането.