Файл: Система управления версиями git и российский сервис хранения исходного кода gitflic.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.12.2023
Просмотров: 211
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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;
− преподаватель проверяет правильность выполнения задания;
− в случае отсутствия ошибок преподаватель подтверждает факт вы- полнения задания;
Команда 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;
− преподаватель проверяет правильность выполнения задания;
− в случае отсутствия ошибок преподаватель подтверждает факт вы- полнения задания;