Лабораторная работа 0.2 для студентов курса “Основы программирования” 1 курса кафедры ИУ5 МГТУ им Н.Э. Баумана.
Освоить базовые навыки работы с гитом. Создать собственный репозиторий на GitHub, в котором будут выполняться лабораторные работы в рамках курса по основам программирования.
В данной лабораторной работе будет рассказано как:
Данные указания по умолчанию относятся к операционным системам семейства Linux. Если у вас стоит WSL, то все действия следует выполнять в Linux, а не Windows консоли. Для MacOS рядом будут даны отдельные инструкции.
Сначала заведите свой аккаунт на github.com.
В консоли Linux убедитесь, что у вас стоит git. Для этого введите следующую команду:
git --version
При необходимости поставьте git через команду:
sudo apt install git
ssh-соединение позволит работать с GitHib, аутентифицируясь через специальный приватный ключ, локально располагающийся на вашем устройстве. ssh-соединение категорически НЕ СЛЕДУЕТ настраивать на устройствах, предполагающих общий доступ (компьютеры в лабораторных аудиториях и т.п.).
Сгенерируйте ssh ключ следующей командой, где your_email@example.com
следует заменить вашей почтой, на которую зарегистрирован аккаунт в GitHub.
ssh-keygen -t ed25519 -C "your_email@example.com"
Подтвердите расположение файла по умолчанию (нажав клавишу enter, дополнительно писать ничего не надо). Затем введите passphrase (можно (и в данный момент рекомендуется) использовать пустую, для этого просто снова нажмите enter без ввода). Подтвердите введенную passphrase.
Убедитесь, что в выводе присутствует ваш fingerprint и key’s randomart image.
Запустите приложение ssh-agent в фоне. Для этого введите следующую команду:
eval "$(ssh-agent -s)"
Убедитесь, что в консоли вывелось следующее:
Agent pid ******
Где ****** - некоторое число.
Добавьте ваш приватный ключ в ssh-agent (только для Linux):
ssh-add ~/.ssh/id_ed25519
Только для MacOS:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Выведите в консоль публичный ключ (только для Linux):
cat ~/.ssh/id_ed25519.pub
Скопируйте вывод из консоли.
Либо (только для MacOS) скопируйте в буфер обмена публичный ключ:
pbcopy < ~/.ssh/id_ed25519.pub
Затем пройдите на github.com, в правом верхнем углу нажмите по иконке своего профиля, откройте настройки (Settings).
Слева в разделе “Access” выберите вкладку “SSH and GPG keys”.
Справа сверху нажмите на кнопку “New SSH key”. В поле “Title” введите название, которое будет описывать назначение данного ключа. В поле “Key” вставьте публичный ключ (который скопировали ранее). Подтвердите добавление нажав на кнопку “Add SSH key”.
Проверьте, что вы успешно настроили ssh-соединение. Для этого введите в консоли следующую команду:
ssh -T git@github.com
Подтвердите, что вы хотите установить соединение, написав “yes” (без кавычек) и нажав enter.
Убедитесь, что вывод соответствует следующему (где “username” - это ваш логин на github.com):
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
Зайдите на github.com и создайте новый пустой приватный репозиторий.
Для этого нажмите на кнопку “New” в левой части главной страницы.
Назовите его так, как считаете нужным, но желательно достаточно информативно. Например, Lastname-CPP-Labs-2025, где вместо “Lastname” должна быть ваша фамилия на латинице.
Убедитесь, что вы создаете приватный, а не публичный репозиторий (должен стоять флажок напротив “Private”).
Оставьте все остальные настройки без изменений.
Создайте репозиторий, нажав на кнопку “Create repository”.
Открыв консоль Linux, перейдите в ту директорию, в которую вы хотите склонировать репозиторий. На странице вашего репозитория на github.com, скопируйте ssh-ссылку на него (имеет формат вида git@github.com:Username/Repo.git
). Склонируйте репозиторий с помощью команды:
git clone repo-url
Где repo-url - ssh-ссылка на ваш репозиторий. После этого в текущий директории должна появиться новая директория с вашим репозиторием. Перейдите в нее с помощью команды cd.
Добавьте в качестве дополнительного удаленного репозитория публичный репозиторий с лабораторными работами. Для этого введите следующую команду:
git remote add upstream git@github.com:Fitoliaka/IU5.git
Где remote add - указание на то, что нужно добавить дополнительный удаленный репозиторий, upstream - метка (название) удаленного репозитория (можно изменить на другое по желанию), git@github.com:Fitoliaka/IU5.git
- ссылка на удаленный репозиторий.
Убедитесь, что удаленный репозиторий успешно добавлен:
git remote -v
Данная команда выведет в консоль список удаленных репозиториев. Должно быть по два репозитория на fetch и push: origin (ваш “родной” удаленный репозиторий) и upstream (или то название, которое вы указали в предыдущей команде, означающее основной удаленный репозиторий).
Чтобы подгрузить изменения из удаленного репозитория с меткой “upstream”, введите следующую команду:
git pull upstream
После чего перейдите на основную ветку репозитория с этой меткой, тем самым привязав ее к основной ветке вашего origin репозитория:
git checkout main
Запушьте основную ветку в удаленный репозиторий:
git push --set-upstream origin main
Затем перейдите на ветку с нулевой лабораторной работой:
git checkout lab_0
И также запушьте ее в свой удаленный репозиторий:
git push --set-upstream origin lab_0
Откройте свой удаленный репозиторий на github.com и убедитесь, что в нем отображаются обе ветки с названиями “main” и “lab_0”, и их содержимое аналогично основному репозиторию (https://github.com/Fitoliaka/IU5).
В дальнейшем, когда в основном репозитории будут появляться новые ветки, необходимо будет повторять те же самые действия:
git pull upstream
,git checkout lab_*
,git push --set-upstream origin lab_*
. Это позволит подхватить из основного репозитория новую ветку с соответствующей лабораторной работой, привязать ее к вашему репозиторию, и отправить ее на ваш удаленный репозиторий на github.com.
Убедитесь, что вы находитесь в директории с вашим репозиторием на ветке “lab_0”. Для этого введите следующую команду:
git status
Убедитесь, что вывод соответствует следующему:
On branch lab_0
Your branch is up to date with 'origin/lab_0'.
nothing to commit, working tree clean
Откройте через консоль текущую директорию в VS Code:
code .
Где “.” - это указание на то, что нужно открыть текущую директорию.
Создайте новый файл .cpp файл, в котором будете писать код. Например, “main.cpp”. Скопируйте и вставьте туда следующий код:
#include <iostream>
int main(int, char**) {
std::cout << "Hello, World!" << std::endl;
return 0;
}
Скомпилируйте файл с исходным кодом:
g++ -std=c++20 -Wall -Werror -Wextra -Wpedantic main.cpp -o hello.out
Где вместо “main.cpp” подставьте имя своего файла с исходным кодом.
Убедитесь, что компиляция прошла успешно (должен появиться исполняемый файл с названием hello.out).
Запустите clang-format следующим образом:
clang-format --dry-run -Werror main.cpp
Где “–dry-run” - флаг, указывающий на то, что clang-format должен показывать какие нужно внести изменения, вместо того, чтобы выводить уже измененный код, “-Werror” - флаг, который указывает clang-format считать все предупреждения как ошибки, “main.cpp” - название вашего файла с исходным кодом.
Убедитесь, что clang-format завершился успешно и ничего не вывел. Для этого введите в консоль следующую команду:
echo $?
Данная команда выведет в консоль тот код, который вернула последнее запущенное в текущей консоли приложение. Если это 0, то все в порядке, если любое другое число, то где-то произошла ошибка.
Запустите clang-tidy:
clang-tidy main.cpp
Убедитесь, что clang-tidy не ругается на ваш код. Дополнительно проверьте код, который вернул clang-tidy:
echo $?
Данные действия требуется выполнять всегда в тех случаях, когда вы хотите сдать лабораторную работу.
Находясь на ветке “lab_0” своего репозитория, убедитесь, что git “видит” только новый файл с исходным кодом.
Для этого введите в консоли следующее:
git status
В untracked files должен быть показан только один файл: main.cpp (или файл с другим названием, который вы создали в предыдущем пункте):
On branch lab_0
Your branch is up to date with 'origin/lab_0'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.cpp
nothing added to commit but untracked files present (use "git add" to track)
Если git видит другие файлы (например, скомпилированный ранее исполняемый файл), то удалите их из директории.
Добавьте ваш файл с исходным кодом в индекс для коммита:
git add --all
или
git add main.cpp
Убедитесь, что файл проиндексирован для коммита:
git status
После данной команды вывод должен быть следующим:
On branch lab_0
Your branch is up to date with 'origin/lab_0'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: main.cpp
Закоммитьте изменения:
git commit -m "commit message"
Где вместо commit message
введите на английском языке осмысленное сообщение к коммиту. Например, “add main.cpp”.
Запушьте созданный коммит в удаленный репозиторий (ветки локального и удаленного репозитория уже связаны между собой):
git push
В дальнейшем лабораторные работы выполняются прямо в соответствующей им ветке из основного репозитория. Перед сдачей лабораторной работы надо будет закоммитить изменения и запушить их в свой удаленный репозиторий. Перед переключением между ветками (с помощью команды
git checkout branch_name
) следует также коммитить изменения или складывать их в stash.
Откройте на github.com свой удаленный репозиторий и перейдите в ветку lab_0. Дождитесь, пока рядом с описанием коммита появится либо красный крестик, либо зеленая галочка.
Если появился красный крестик, то щелкните по нему, чтобы открыть модульное окно с описанием запущенных автоматических проверок:
Щелкните по ссылке “Details”, чтобы открыть подробности для запущенной проверки и проанализируйте вывод, чтобы исправить возникшие проблемы. В случае необходимости обращайтесь к преподавателю.
Если все указания выполнены, то покажите преподавателю ваш локальный и удаленный репозитории, чтобы получить доступ к выполнению основных лабораторных работ.