Система управления версиями Git. Система управления версиями git и российский сервис хранения исходного кода gitflic
Скачать 3.56 Mb.
|
git pull Команда git pull загружает изменения из внешнего репозитория во внутреннюю ветку (то же, что делает git fetch) и пытается перенести эти из- менения в локальную рабочую директорию (то же, что делает команда git merge). Если при слиянии веток не возникает конфликтов, то изменения по- явятся в локальной рабочей директории сразу же после выполнения ко- манды git pull. Формат команды git pull: git pull <ключи> <имя удалённого репозитория> Возможные значения ключей: --ff – использовать режим fast-forward при слиянии веток, если это воз- можно; --no-ff – отключить режим fast-forward; --ff-only – остановить выполнение команды, если слияние невозможно выполнить в режиме fast-forward. Контрольные вопросы 97 1. Что такое рабочая директория в системе управления версиями Git? 2. Что такое «индекс» в системе управления версиями Git? 3. Опишите, на что влияет содержание каждого из файлов настроек Git: системного, локального, глобального? 4. Опишите принцип отнесения файла проекта к одной из категорий: отслеживаемые/не отслеживаемые, изменённые/не изменённые. 5. Опишите назначение и принципы организации таких объектов Git, как Blob и Tree. 6. Какие действия необходимо выполнить для добавления коммита во внешний репозиторий? 7. Для чего используется файл Head? 8. Опишите варианты, которые могут возникнуть при удалении файла из репозитория, в зависимости от его текущего состояния. 9. Чем «неявное слияние» отличается от «явного слияния»? 10. Опишите процесс устранения конфликтов, возникающих при сли- янии веток. 11. В чём отличия команд, предназначенных для получения данных из внешнего репозитория git clone, git pull, git fetch? 98 3. ПРАКТИЧЕСКОЕ ИСПОЛЬЗОВАНИЕ GIT 3.1. Управление репозиторием из среды программирования Рассмотренные в предыдущих разделах команды Git позволяют в пол- ной мере управлять репозиторием: создавать и переключать ветки, просмат- ривать изменения, добавлять файлы в индекс, делать коммиты и т.п. Работа в режиме командной строки даёт чувство полного контроля над компьюте- ром. Это увлекательный, но не очень удобный и совсем не наглядный про- цесс. К тому же разработка программного обеспечения всё реже ведётся в режиме командной строки и всё чаще с использованием интегрированных сред разработки (IDE), таких как Microsoft Visual Studio, Borland Embar- cadero. Выполняя работу с использованием IDE, не всегда удобно переклю- чаться в режим командной строки для управления репозиторием, поэтому IDE предоставляют встроенные графические средства для работы с Git. Эти средства позволяют как управлять локальным репозиторием, так и осу- ществлять обмен данными с удалённым. В настоящем разделе описана ра- бота с репозиторием Git в JetBrains PyCharm и Microsoft Visual Studio. Изу- чив принципы работы с Git в указанных IDE, читатель в дальнейшем сможет самостоятельно освоить управление репозиторием в других IDE. 3.1.1. Операции с репозиторием Git в среде PyСharm Материал, изложенный в настоящем разделе, актуален для версий PyСharm, начиная с 2020. В более ранних версиях средства работы с систе- мами управления версиями представлены в ограниченном объёме. 3.1.1.1. Подключение локального репозитория к проекту PyCharm Локальный репозиторий может быть создан на компьютере вне IDE PyCharm. Если локальный репозиторий уже существует на момент запуска PyСharm, то выберите соответствующую директорию в качестве директо- рии проекта. После открытия проекта в главном меню будет присутствовать раздел Git (рисунок 3.1), из которого можно осуществлять управление репо- зиторием. Доступны знакомые читателю из предыдущего раздела команды git commit, git push, git fetch и другие. Все команды выполняются в графическом режиме. Это значит, что программисту достаточно ввести в соответствующие 99 поля экранной формы параметры команды и нажать кнопку подтверждения вы- полнения. PyСharm автоматически сформирует команду git и выполнит её. Если директория проекта не является репозиторием, то вместо раздела Git в главном меню будет присутствовать раздел VCS, содержащий ко- манды, позволяющие, в случае необходимости, подключить к проекту внешний репозиторий. 3.1.1.2. Клонирование внешнего репозитория в проект PyCharm PyCharm позволяет выполнить команду git clone с использованием графического интерфейса и перенести на локальный компьютер файлы из удалённого репозитория. Создайте новый проект, не являющийся репозиторием Git. В главном меню выберите команду VCS/ Get from Version Control (рисунок 3.2). PyCharm запустит процесс клонирования внешнего репозитория. На пер- вом шаге появится окно, позволяющее указать адрес внешнего репозитория и авторизоваться (рисунок 3.3). В поле URL введите URL-адрес внешнего репо- зитория (например: https://edu.gitflic.ru/project/student/project_1.git), логин и па- роль. Нажмите кнопку Clone. PyCharm запустит на выполнение команду git clone (см. раздел 2.25.3). Если авторизация и клонирование пройдут успешно, пункт меню VSC (рисунок 3.2) превратится в пункт меню Git (рисунок 3.1). Рисунок 3.1 – Меню Git 100 Рисунок 3.2 – Клонирование внешнего репозитория Если во внешнем репозитории отсутствует ветка с именем master, то рабочая директория проекта будет пустой. Для того чтобы извлечь файлы проекта из архива, необходимо выполнить команду git checkout с указанием имени ветки, которая существует в проекте. Команду git checkout нужно бу- дет выполнить из командной строки операционной системы или из вкладки terminal PyCharm, находясь в директории локального репозитория. Рисунок 3.3 – Ввод адреса внешнего репозитория 101 В дальнейшем проект с клонированным репозиторием нужно откры- вать так, как описано в разделе 3.1.1.1. 3.1.1.3. Выполнение команд Commit и push из проекта PyCharm В PyCharm команда git add объединена в одном графическом интер- фейсе с командой git commit. Для выполнения коммит выберите из главного меню PyCharm ко- манду Git/Commit… (рисунок 3.1). Появится вкладка Commit (рисунок 3.4). В верхней части вкладки отображается список файлов, в которые были внесены изменения. Из этого списка необходимо выбрать файлы, предназначенные для добавления в ком- мит. Выбор осуществляется отметкой соответствующего чек-бокса (напри- мер, на рисунке 3.4 выбран файл Ex_3.py). В нижней части окна находится текстовое поле, в которое необходимо ввести комментарий к коммиту. По- сле выбора всех необходимых файлов и ввода комментария нажмите кнопку Commit. PyCharm выполнит команду git add для всех выбранных файлов и затем выполнит команду git commit, указав в качестве комментария текст из нижнего текстового поля. Для записи коммита во внешний репозиторий выберите из главного меню PyCharm команду Git/Push… (рисунок 3.1). В появившемся диалого- вом окне будет отображено имя текущей ветки и имя ветки внешнего репо- зитория, в который будет производиться копирование. Кроме того, будут перечислены все коммиты, имеющиеся в этой ветке. Для копирования ветки целиком необходимо выбрать её имя. Это соответствует команде git push с ключом -all. В правой части диалогового окна будет выведен список файлов, включённых в коммиты ветки. В списке зелёным цветом маркируются файлы, которые ранее были скопированы во внешний репозиторий и не были изменены. Синим цветом маркируются файлы, которые были изме- нены, добавлены в один из коммитов, но не были скопированы во внешний репозиторий. Для копирования одного из коммитов ветки необходимо выбрать его из списка. После выбора коммита подробная информация о нём будет отоб- ражена в правой части окна. 102 Рисунок 3.4 – Создание коммита Для активации процедуры копирования необходимо нажать кнопку Push. Переключение между ветками репозитория осуществляется путём вы- бора команды Git/rebase из главного меню PyCharm. Если во внешний репозиторий были внесены изменения, например, вами с другого компьютера, то необходимо обновить проект: − команда PyCharm Git/Update Project (рисунок 3.1) является макси- мально автоматизированной командой git fetch с последующим обновле- нием веток; − команда PyCharm Git/pull реализует графический интерфейс для ко- манды git pull с возможностью указания ключей; 103 − команда PyCharm Git/Fetch реализует графический интерфейс для команды fit fetch. 3.1.2. Операции с репозиторием Git в среде Visual Studio 3.1.2.1. Клонирование репозитория Есть два пути клонировать репозиторий с использованием возможно- стей Visual Studio. Первый из них заключается в выборе опции «Клонирова- ние репозитория» при создании проекта. Второй путь заключается в выборе команды «Git/Клонировать репозиторий» из главного меню. Каждый из этих вариантов приведёт к появлению на экране формы описания парамет- ров клонирования. На форме присутствуют два текстовых поля. В одно из них необходимо ввести URL-адрес внешнего репозитория, в другое – путь к пустой директории, в которой будет размещён результат клонирования. После подтверждения данных начнётся процесс клонирования. Ход процесса клонирования будет отображаться в окне «Вывод», рас- положенном в нижней части рабочей области Visual Studio (рисунок 3.5). По умолчанию, после клонирования Visual Studio пытается сделать активной ветку master. Если такой ветки в репозитории нет, то будет выведено преду- преждение: Warning: remote HEAD refers to nonexistent ref, unable to check- out. Файлы проекта не будут извлечены из архива, рабочая директория будет пустой. Рисунок 3.5. – Клонирование репозитория Для извлечения файлов из архива в рабочую директорию необходимо переключиться на одну из веток, существующих в проекте: C:\VisualStudio_Git\GitBook>git checkout Main_branch Switched to branch 'Main_branch' Your branch is up to date with 'origin/Main_branch'. После извлечения файлов проекта в рабочую директорию они будут 104 отображены в обозревателе решений Visual Studio (рисунок 3.6). Рисунок 3.6 – Содержимое рабочей директории 3.1.2.2. Графическая схема репозитория Visual Studio позволяет вывести графическую схему репозитория в центральной части рабочей области. Для добавления графической схемы необходимо: − выбрать репозиторий из главного меню «Git/Локальные репозито- рии»; − выбрать способ отображения графической информации из главного меню: «Git/Просмотреть журнал ветвей» или «Git/Управление ветвями». В первом случае будет выведена схема коммитов для текущей ветви. Во вто- ром случае, в дополнение к схеме коммитов, будет выведено окно, в кото- ром отображаются названия всех ветвей проекта. Пример графической схемы в режиме «Управление ветвями» изобра- жён на рисунке 3.7. При однократном щелчке левой кнопкой мышки по названию ветви в левой части окна произойдёт смена схемы коммитов в пра- вой части окна. При двойном щелчке мышки по коммиту будет отображено состояние файлов проекта, соответствующее выбранному коммиту, и состо- яние файлов проекта, соответствующее предыдущему коммиту. Разметка файлов выделяет различия между коммитами. 105 Рисунок 3.7. – Графическая схема коммитов в режиме «Управление ветвями» 3.1.2.3. Выполнение команд Commit и push из проекта Visual Studio Операции добавления файлов в индекс, создание коммита и выгрузка коммита во внешний репозиторий выполняются с помощью вкладки «Изме- нения Git», расположенной в правой части рабочей области Visual Studio (рисунок 3.8). Вкладка «Изменения Git» содержит список файлов проекта, которые были изменены, но не добавлены в коммит. При наведении курсора мышки на имя файла отобразятся иконки с кнопками управления: − стрелка влево – щелчок мышкой по этой кнопке приведёт к отмене последних изменений; − знак плюс – щелчок мышкой по этой кнопке приведёт к добавлению файла в индекс. В верхнее окно редактирования вводится комментарий, который бу- дет сохранён в коммите. Выпадающий список «Зафиксировать все» позво- ляет выбрать команды для выполнения следующих действий: − зафиксировать все – будет создан коммит в локальном репозитории, включающий все файлы, которые были добавлены в индекс; − зафиксировать все и отправить – будут последовательно выпол- нены команды git commit и git push; − зафиксировать всё и синхронизировать – будут последовательно выполнены команды git commit, git fetch и git push; − спрятать все – будет выполнена команда git stash с ключом –include- untracked; 106 − спрятать все и сохранить промежуточные данные – будет выпол- нена команда git stash с ключом –keep-index. Рисунок 3.8 – Окно фиксации изменений файлов проекта 3.2. Учебный портал сайта GitFlic Репозитории системы контроля версий Git могут располагаться не только на локальном компьютере, но и в облаке. Облачное размещение поз- воляет упростить организацию коллективного использования репозитория разработчиками программного обеспечения. Один из членов коллектива со- здаёт репозиторий, остальные клонируют его на локальные компьютеры и, по мере необходимости, сохраняют коммиты в облаке. Сохранить репозиторий можно в любом облачном хранилище. Суще- ствуют и специализированные хранилища. Названия некоторых из них 107 начинаются со слова Git: GitHub, GitLab, GitLinux, GitFliс. В названиях дру- гих слова Git нет: Bitbucket, Beanstalk, SourceForge. Ни одно из таких храни- лищ не является Git. Система контроля версий Git должна быть установлена на локальном компьютере, независимо от того, где размещается репозито- рий, в одном из облачных хранилищ или на локальном диске. Git можно использовать не только непосредственно для управления версиями, но и для других целей, связанных с хранением и обработкой про- граммного кода. Одним из примеров такого использования является учеб- ный портал сайта GitFlic. GifFlic является Git-репозиторием, и в то же время его учебный портал может использоваться для обучения студентов програм- мированию как на ранних стадиях обучения, так и при курсовом (диплом- ном) проектировании. В процессе обучения студенты получают от преподавателя задания на создание программного кода. В процессе подготовки решения студенты со- храняют в репозитории историю своей работы в виде git-коммитов. Препо- даватель имеет возможность просматривать коммиты и оставлять коммен- тарии с целью помочь студентам исправить имеющиеся ошибки. В настоящем разделе описывается работа с учебным порталом сайта GitFlic. 3.2.1. Вход на учебный портал GitFlic Для перехода к учебному порталу GitFlic наберите в адресной строке браузера: edu.gitflic.ru Введите логин и пароль. В случае успешного входа откроется привет- ственная страница портала. Кликните мышкой по строчке со своими именем и фамилией в правом верхнем углу экрана. Откроется главная страница личного кабинета GitFlic. Для перехода на главную страницу из любого места личного кабинета кликните мышкой на строчке со своими именем и фамилией в левом верх- нем углу экрана. Главная страница содержит: − вертикальное меню, расположенное в её левой части; 108 − горизонтальное меню со вспомогательными ссылками, располо- женное в нижней части; − горизонтальное меню со списком вкладок, расположенное в верх- ней части; − рабочую область, в центре. 3.2.2. Регистрация преподавателей и студентов Преподавателей на учебном портале GitFlic регистрирует админи- стратор портала. После регистрации преподавателю передаётся логин и па- роль. Студенты регистрируются с использованием ссылки-приглашения, которая создаётся преподавателем для каждой учебной группы. Для созда- ния ссылки-приглашения необходимо выполнить следующие действия: − выбрать из вертикального меню пункт «Сообщество»; − из окна, расположенного в рабочей области, выбрать «Московский университет им. С.Ю. Витте»; − из верхнего горизонтального меню выбрать вкладку «Группы»; − кликнуть мышкой по кнопке «Добавить группу»; − заполнить сведения о группе, кликнуть мышкой по кнопке «Сохра- нить»; − найти вновь созданную группу в списке групп прямым поиском или с помощью поля «Поиск»; − кликнуть по иконке «цепочка», расположенной справа от названия группы, в результате чего откроется ссылка-приглашение. Каждый из студентов учебной группы переходит по полученной ссылке-приглашению и создаёт для себя логин и пароль, после чего проис- ходит автоматическая регистрация. После регистрации студенту необходимо отредактировать сведения о фамилии и имени в профиле. Для чего: − щёлкнуть мышкой по временному имени в верхнем углу главного экрана (произойдёт переход на вкладку «Профиль»); − щёлкнуть мышкой по кнопке «Редактировать профиль» (кнопка находится под большим кружком с буквой; 109 − ввести в соответствующие поля имя и фамилию; − щёлкнуть мышкой по кнопке «Сохранить». После регистрации студентов преподаватель, проводящий регистра- цию студентов, должен подтвердить введённые студентом фамилию и имя. Для чего: − перейти на вкладку «Группы» (см. выше); − найти в списке требуемую группу, для чего в поле «Поиск» ввести номер группы. Кликнуть мышкой по названию группы. Откроется список студентов группы; − если в списке студентов вместо фамилии и имени указан псевдо- ним, то кликнуть мышкой по имени студента. На открывшейся вкладке кликнуть мышкой по кнопке «Редактировать»; − в окне редактирования сведений о студенте подтвердить фамилию и имя студента, щёлкнув мышкой по соответствующим подсказкам, распо- ложенным под полями «Имя студента» и «Фамилия студента»; − щёлкнуть мышкой по кнопке «Сохранить». 3.2.3. Взаимодействие преподавателя и студентов Взаимодействие преподавателя и студента при использовании учеб- ного портала GitFlic происходит по следующей схеме: − преподаватель создаёт задания и распределяет их между студен- тами; − получив задание, студент создаёт репозиторий на учебном портале GitFlic и связывает его с локальным репозиторием на рабочем компьютере; − в ходе выполнения задания студент сохраняет промежуточные ре- зультаты в виде коммитов в локальном репозитории и, по мере готовности решения, синхронизирует локальный репозиторий с GitFlic; − после завершения выполнения задания студент отправляет препо- давателю ссылку на окончательную версию программного кода, хранящу- юся в репозитории GitFlic; − преподаватель проверяет правильность выполнения задания; − в случае отсутствия ошибок преподаватель подтверждает факт вы- полнения задания; |