Система контроля версий Git
Автор: Иван • Май 4, 2023 • Лабораторная работа • 1,069 Слов (5 Страниц) • 174 Просмотры
Лабораторная работа №8.
«Система контроля версий Git, часть 3»
Цель работы: изучить ветвление в Git.
Практическая часть:
Ветвление появилось давно, но в ранних системах контроля версий было дорогостоящим. С появлением Git стало возможным изменить процессы разработки в командах так, чтобы ветвление и слияние веток осуществлялись довольно часто.
Устройство системы ветвления в Git можно назвать одним из главных преимуществ этой системы контроля версий, так как система позволяет очень быстро переключаться между ветками.
Важно понимать, что ветка — это всего лишь указатель на коммит, не меняющий репозиторий. Когда вы делаете коммиты, не создавая и не меняя ветки, то работаете в ветке master. Она указывает на последний сделанный коммит и при каждом новом коммите сдвигается вперёд автоматически.
Выглядит это примерно так:
[pic 1]
Создание веток
Давайте создадим новую ветку. Для этого выполним в Git-репозитории следующую команду:
git branch awesome-branch
После того как вы создали новую ветку, состояние репозитория выглядит следующим образом:
[pic 2]
При этом история репозитория никак не изменилась. Произошло только создание нового указателя на уже существующий коммит.
Но если веток несколько и можно с ними по-разному взаимодействовать, то как Git узнаёт, в какую ветку необходимо вносить изменения? Есть какая-то
«текущая»?
Да, действительно есть. Git хранит специальный указатель, который называется HEAD (верхушка). HEAD указывает на локальную ветку, на которой вы находитесь.
В данный момент вы всё ещё находитесь на ветке master. А как же awesome- branch? Команда git branch только создала новую ветку, она не переключила вас на неё. Так что, учитывая новое знание о HEAD, состояние системы на данный момент, на самом деле, выглядит так:
[pic 3]
Чтобы перейти на существующую ветку, необходимо выполнить следующую команду:
git checkout awesome-branch
Терминал зафиксирует результат сообщением:
[pic 4]
Как вы могли догадаться, после переключения HEAD указывает на другую ветку:
[pic 5]
Команда git checkout позволяет вам перемещаться между ветками, которые уже были созданы. Когда вы переключаетесь на ветку, то файлы в вашей рабочей директории меняются в соответствии с той версией, на которую указывает выбранная ветка. Все новые коммиты будут теперь добавляться в текущую ветку, пока вы снова не переключитесь на другую.
Ветвление и коммиты слияния
Допустим, мы работаем над веб-сайтом. Предположим, что скоро Чёрная пятница и нам надо создать для работы над изменениями специальную ветку. Непосредственно перед днём распродаж надо будет сделать так, чтобы наши изменения попали к пользователям.
Представим, что работа над проектом ведётся уже какое-то время и вы уже имеете несколько коммитов:[pic 6]
Чтобы приступить к работе над изменениями для Чёрной пятницы, создадим специальную ветку:
git branch black-friday
*Если вы ошиблись в названии, например, допустили опечатку, вы можете изменить название ветки с помощью команды: git branch -m старое- имя-ветки новое-имя-ветки.
И сразу переключимся на эту ветку:
git checkout black-friday
После выполнения этих команд состояние репозитория изменится.
После этого мы можем менять файлы проекта и не бояться, что наш сайт как-то пострадает, ведь мы делаем это в изолированной ветке.
...