Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы / GIT / Лабораторная работа 1+.docx
Скачиваний:
22
Добавлен:
17.06.2023
Размер:
12.37 Mб
Скачать

34Ac2 fixed bug #1328 - stack overflow under certain conditions

98Ca9 initial commit of my project

Переключение веток

Чтобы переключиться на существующую ветку, выполните команду gitcheckout . Давайте переключимся на ветку “testing”:

$ gitcheckouttesting

В результате указатель HEAD переместится на ветку testing.

Какой в этом смысл? Давайте сделаем еще один коммит (рисунок 5):

$ vimtest.rb

$ git commit -a -m 'made a change'

Рисунок 5 – Указатель на ветку HEAD переместился вперед после коммита

Чтобы переключиться на ветку master:

$ gitcheckoutmaster

Эта команда сделала две вещи. Она переместила указатель HEADназад на ветку “master” и вернула файлы в рабочем каталоге в то состояние, которое было сохранено в снимке (snapshot), на который указывает ветка.

ПЕРЕКЛЮЧЕНИЕ ВЕТОК МЕНЯЕТ ФАЙЛЫ В РАБОЧЕМ КАТАЛОГЕ

Важно запомнить, что когда вы переключаете ветки в Git, файлы в рабочем каталоге меняются. Если вы переключаетесь на старую ветку, то рабочий каталог будет выглядеть так же, как выглядел на момент последнего коммита в ту ветку. Если Git по каким-то причинам не может этого сделать — он не позволит вам переключиться.

Удаленные ветки

(имя удаленного репозитория)/(имя ветки)

Клонировали репозиторий.

Если еще кто-то склонировалрепозиторий или кто-то еще правит на сервере данные, то истории продолжаются по-разному:

Для синхронизации служит команда gitfetchorigin

Для создания своей ветки, аналогичной удаленной, можно воспользоваться командой:

Gitcheckout –b (имя ветки) (удаленный репозиторий)/(ветка)

Это дает локальную ветку, над которой можно работать, она будет начинаться там же, где и серверная ветка.

Получение изменений осуществляется командой gitfetch

Примерработы с ветками:

$ git checkout –b iss53

Равнозначно $git branch iss53

$ gitcheckout iss53

$ git checkout master

$ git checkout –b hotfix

$ vim index html

$ git commit –a –m ‘fixed the broken email address’

$ git checkout master

$ git merge hotfix

Удаление ветки: gitbranch –d hotfix

Можно влить ветку master в iss53: gitmergemaster, а можно ветку iss53 в master.

Перенос на ветку, в которой хотели внести изменения:

$ git checkout master

$ git merge iss53

Теперь можно удалить ветку iss53: $ gitbranch –Diss53

Конфликты при слиянии

Иногда процесс слияния не идёт гладко. Если вы изменили одну и ту же часть файла по-разному в двух ветках, которые собираетесь слить, Git не сможет сделать это чисто.Git не создает новый коммит для слияния. Он приостанавливает этот процесс до тех пор, пока вы не разрешите конфликт вручную. Если вы хотите посмотреть, какие файлы не прошли слияние (на любом этапе после возникновения конфликта), выполните команду gitstatus. Всё, что имеет отношение к конфликту слияния и что не было разрешено, отмечено как unmerged. Git добавляет стандартные маркеры к файлам, которые имеют конфликт, так что вы можете открыть их вручную и разрешить эти конфликты. В верхней части блока (всё что выше =======) это версия из HEAD (вашей ветки master, так как именно на неё вы перешли перед выполнением команды merge), всё, что находится в нижней части – содержимое сливаемой ветки. Чтобы разрешить конфликт, вы должны либо выбрать одну из этих частей, либо как-то объединить содержимое по своему усмотрению.

После того как вы разобрались с каждой из таких секций в каждом из конфликтных файлов, выполните gitadd для каждого конфликтного файла. Индексирование будет означать для Git'а, что все конфликты в файле теперь разрешены. После чего можно осуществлять команду gitcommitи слияние завершится.

Если вы хотите использовать графические инструменты для разрешения конфликтов, можете выполнить команду gitmergetool, которая запустит соответствующий графический инструмент и покажет конфликтные ситуации.

Для использования графического инструмента (он должен быть установлен), после того как gitпожаловался что есть конфликт, введите следующую команду:

$ gitmergetool

Последует вопрос какой программой для слияния вы хотели бы воспользоваться, просто введите meld и нажмите Enter. Вот как окно программы может выглядеть – рисунок.

Примечание: для использования графического инструмента meld он должен быть скачан и установлен. Также существует множество других графических инструментов, которые можно скачать и выбирать наиболее удобный для вас.

После того как вы выйдете из инструмента для выполнения слияния, Git спросит вас, было ли оно успешным. Если вы отвечаете, что да — файл индексируется (добавляется в область для коммита), чтобы дать вам понять, что конфликт разрешён.

После чего также осуществляет фиксация изменений и слияние считается завершенным.

Примечание: Для более подробного изучения программы Git можно воспользоваться книгой «ProGit», доступную для чтения на официальном сайте Git:

Scott Chacon, Ben Straub«ProGit» Second Edition [Электронныйресурс]:https://git-scm.com/book/ru/v2