From 27e67e8051b7895fdea985a3d3d91e001b6a52fe Mon Sep 17 00:00:00 2001 From: "Bob(SokolovMI)" Date: Mon, 29 May 2023 15:46:17 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- отчёт.txt | 742 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 742 insertions(+) create mode 100644 отчёт.txt diff --git a/отчёт.txt b/отчёт.txt new file mode 100644 index 0000000..6e8195a --- /dev/null +++ b/отчёт.txt @@ -0,0 +1,742 @@ +Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ» +Институт информационных и вычислительных технологий +Кафедра Управления и интеллектуальных технологий + +Дисциплина: +Разработка программного обеспечения систем управления + +Лабораторная работа №2 +Система контроля версий Git + + + + + + + + + + + +Выполнил студент группы +А-03-22 +Соколов Михаил Игоревич +Вариант: - +Проверил + Козлюк Дмитрий Александрович + +Москва 2023 + +Цель работы +Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними. +Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также популярный хостинг репозитариев — GitHub. + +Ход работы: +Вход в терминал и создание структуры каталогов +● Создаем папки пользователей (mkdir alice, mkdir bob) +● В папке пользователя alice создаем папку project +Инициализация репозитария и настройка Git +● Инициализируем хранилище git (git init) +● Настраиваем папки пользователя, с которым будем работать: +/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git init +Initialized empty Git repository in C:/Users/Михаил/Desktop/РПОСУ_LABS/lab02/alice/project/.git/ + + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git config user.name 'Alice(SokolovMI)' + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git config user.email 'sokolov.mouse@yandex.ru' + + +Создание коммитов: +Занесение файлов под контроль версий +● Просматриваем состояние рабочей копии(git status) +● $ git status +● On branch master +● +● No commits yet +● +● Untracked files: +● (use "git add ..." to include in what will be committed) +● project/ +● +● nothing added to commit but untracked files present (use "git add" to track) + + +В первой строке ссылка HEAD указывает на ветку main +Вторая стр. говорит о том, что еще не было создано коммитов +Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить +Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить +● Добавляем файл с кодом и просматриваем изменения + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git add project.cpp + +$ git status +On branch master + +No commits yet + +Changes to be committed: + (use "git rm --cached ..." to unstage) + new file: project.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + .vs/ + project.sln + project.vcxproj + project.vcxproj.filters + project.vcxproj.user + + + +Появилась строка с файлами в индексе, стоящими в очереди на коммит + +Составление сообщений к коммитам +● Создаем 2 коммита с информацией о коде программы + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git commit -m 'code: заготовка программы' +[master (root-commit) d636c51] code: заготовка программы + 1 file changed, 10 insertions(+) + create mode 100644 project/project.cpp + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git add project.vcxproj + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git commit -m 'build: добавлен файл проекта' +[master c861f53] build: добавлен файл проекта + 1 file changed, 147 insertions(+) + create mode 100644 project/project.vcxproj + +● После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен + +$ git status +On branch master +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: project.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + .vs/ + Debug/ + project.sln + project.vcxproj.filters + project.vcxproj.user + +no changes added to commit (use "git add" and/or "git commit -a") + + +● Проделываем ряд изменений с кодом программы и делаем коммиты несколькими способами + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git add project.cpp + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git commit -m 'code: добавлен ввод двух чисел' +[master 6a5f2f9] code: добавлен ввод двух чисел + 1 file changed, 4 insertions(+), 1 deletion(-) +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git commit -m 'code: добавлен вывод суммы двух чисел' +[master b0cccbb] code: добавлен вывод суммы двух чисел + 1 file changed, 1 insertion(+) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git commit -m 'code: добавлен вывод разности двух чисел' +[master 6840347] code: добавлен вывод разности двух чисел + 1 file changed, 1 insertion(+), 1 deletion(-) + + +Просмотр истории +● С помощью команды git log и различных ее опций просматриваем журнал коммитов +Используем команду git log –stat +$ git log --stat +commit f06ff5f49bf85b52e4e526413339d9b3d73f7fe0 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:24:21 2022 +0300 + + code: добавлен вывод суммы двух чисел + + project/project.cpp | 1 + + 1 file changed, 1 insertion(+) + +commit c18ecb8b271394c5de3ca25acb82e191b4cf40e6 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:22:09 2022 +0300 + + code: добавлен ввод двух чисел + + project/project.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 75fb07c2c44a8cfa0acf7333f3605fd06fc64047 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:16:51 2022 +0300 + + build: добавлен файл проекта + + project/project.vcxproj | 147 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 147 insertions(+) + +commit e04836eb8008275bbf51e37956c45e55570c2dd5 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:15:09 2022 +0300 + + code: заготовка программы + + project/project.cpp | 10 ++++++++++ + 1 file changed, 10 insertions(+) + + +В последнем коммите первой строкой показывается хэш коммита, по которому можно +потом найти этот коммит +Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита +Далее идет комментарий к коммиту +Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.) +В последней стр. приведена статистика изменений данных файлов + +(Использование других способов просмотра истории) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git log --oneline --decorate +a66d232 (HEAD -> master) code: добавлен вывод разности двух чисел +f06ff5f code: добавлен вывод суммы двух чисел +c18ecb8 code: добавлен ввод двух чисел +75fb07c build: добавлен файл проекта +e04836e code: заготовка программы + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* a66d232 (HEAD -> master) code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + + + +Просмотр коммитов +● Используем команды для просмотра отдельных коммитов(git log –main.cpp/ git log –grep “code: ”) + +$ git log --grep "build:" +commit 75fb07c2c44a8cfa0acf7333f3605fd06fc64047 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:16:51 2022 +0300 + + build: добавлен файл проекта + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git log -- project.vcxproj +commit 75fb07c2c44a8cfa0acf7333f3605fd06fc64047 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:16:51 2022 +0300 + + build: добавлен файл проекта + +(Таким способом мы просмотрели информацию о коммите по измененному файлу и по теме коммита) + + + +● Далее тремя способами просматриваем информацию о предпоследнем коммите +(результат всех способов один, поэтому в отчете не повторялся) +$ git show HEAD~1 +commit f06ff5f49bf85b52e4e526413339d9b3d73f7fe0 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:24:21 2022 +0300 + + code: добавлен вывод суммы двух чисел + +diff --git a/project/project.cpp b/project/project.cpp +index b5c14f2..32965e8 100644 +--- a/project/project.cpp ++++ b/project/project.cpp +@@ -8,5 +8,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; ++ cout << "A + B = " << a + b << '\n'; + } + + +$ git show master~1 +commit f06ff5f49bf85b52e4e526413339d9b3d73f7fe0 +Author: Alice (SokolovMI) +Date: Mon Apr 4 00:24:21 2022 +0300 + + code: добавлен вывод суммы двух чисел + +diff --git a/project/project.cpp b/project/project.cpp +index b5c14f2..32965e8 100644 +--- a/project/project.cpp ++++ b/project/project.cpp +@@ -8,5 +8,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; ++ cout << "A + B = " << a + b << '\n'; + } + + + +● Добавим изменения в рабочую копию и посмотрим их с помощью команды git diff + +$ git diff +diff --git a/project/project.cpp b/project/project.cpp +index aaf4408..83a4ad6 100644 +--- a/project/project.cpp ++++ b/project/project.cpp +@@ -10,6 +10,6 @@ int main() + cin >> a >> b; + cout << "A + B = " << a + b << '\n'; + cout << "A - B = " << a - b << '\n'; +- ++ cout << "A * B = " << a * b << '\n'; + } + + + +В качестве первой стр. мы видим входные данные команды для сравнения файлов +Далее идет заголовок с легендой изменения, место измененного кода и измененная функция +На след. строке идут строки вокруг измененной части, удаленные и добавленные строки + +Откат изменений +● Вносим изменения в кода, а потом откатываем их до состояния в опр. коммите с помощью команды git reset + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +● $ git commit -a -m "code: добавлен вывод произведения двух чисел" +● [master 9c8286a] code: добавлен вывод произведения двух чисел +● 1 file changed, 1 insertion(+), 1 deletion(-) + +$ git log --oneline --decorate --all --graph +* 9c8286a (HEAD -> master) code: добавлен вывод произведения двух чисел +* a66d232 code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git reset --hard HEAD~1 +HEAD is now at a66d232 code: добавлен вывод разности двух чисел + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* a66d232 (HEAD -> master) code: добавлен вывод разности двух чисел + * f06ff5f code: добавлен вывод суммы двух чисел + * c18ecb8 code: добавлен ввод двух чисел + * 75fb07c build: добавлен файл проекта + * e04836e code: заготовка программы + + + + +Обмен кодом через удаленное хранилище +● Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей. + +$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (/c/Users/Михаил/.ssh/id_rsa): +Created directory '/c/Users/\320\234\320\270\321\205\320\260\320\270\320\273/.ssh'. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Passphrases do not match. Try again. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/Михаил/.ssh/id_rsa +Your public key has been saved in /c/Users/Михаил/.ssh/id_rsa.pub +The key fingerprint is: +SHA256:0MzhEBRRk/mrelKrqjfI1UB1Izcb7BS1aYy9V/kcvWc Михаил@DESKTOP-I19EJ7T +The key's randomart image is: ++---[RSA 3072]----+ +| oO*@=. | +| . X=@ o ..| +| . .oB.* o..| +| . ..... . oo| +| o S ... .E| +| . . . .. ..| +| . o . o | +| o o . + | +| .o.oo= | ++----[SHA256]-----+ + + +● Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы: + +$ ssh-add +Enter passphrase for /c/Users/Михаил/.ssh/id_rsa: +Identity added: /c/Users/Михаил/.ssh/id_rsa (Михаил@DESKTOP-I19EJ7T) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ cat~/.ssh/id_rsa.pub +bash: cat~/.ssh/id_rsa.pub: No such file or directory + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master) +$ cat ~/.ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6oimev/WI3OQG64daxuBCXf9xGje5LvYfiHMrYSPvUW7KTtue7g5aT+UjyST25yt7yLI51pzC2AMZYWXPBOO+e1U6u1qFOhD5JJ+P7iNUWAVaKpcVD0piy+WZMyxRIRTO9SDHCtEZIN4PKL/vJipvQhKM2OLkiK454gitIoUECXOZcO1WE6/CQy+uXiNyRpEdlweZEyfGuBkh9KfRuS0quw08b4NUeklWIAV5WXNk9alEYaTVMm2539nKCgOA7h3A1Y2geiU4jjn4RU2i99qP3PM1i0Pj1FXJxXpTMd0g/xI50qesEG7aFyxi7BAI1FGuusvX5BUjn7FHLoBQgUfTsgeU44yqnwTGxVQF46B6Yr5y336ktmMFc39jT/6YLmbTu76i0Fs4W9CNF7hx0nqimUXpZ4Wzy29ZeqPPYXROzCciWd0dr3LcOoBbv2SHNq4iZhEzKlzxzqWhxOtnRVdkRrEyVy0lwXNitctkegKkgeP0kaYdiqN41sgCB5N9oyM= Михаил@DESKTOP-I19EJ7T + +Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub. +● Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push. + +$ git push -u origin main +The authenticity of host 'github.com (140.82.121.3)' can't be established. +ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. +This key is not known by any other names +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +Warning: Permanently added 'github.com' (ED25519) to the list of known hosts. +Enumerating objects: 20, done. +Counting objects: 100% (20/20), done. +Delta compression using up to 4 threads +Compressing objects: 100% (14/14), done. +Writing objects: 100% (20/20), 2.95 KiB | 756.00 KiB/s, done. +Total 20 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (2/2), done. +To github.com:Kra1k/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. Branch 'main' set up to track remote branch 'main' from 'origin'. + + +● К работе присоединяется боб. Клонируем репозитарий с помощью git clone. + +$ git clone git@github.com:Kra1k/cs-lab02.git +Cloning into 'cs-lab02'... +Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa': +remote: Enumerating objects: 20, done. +remote: Counting objects: 100% (20/20), done. +remote: Compressing objects: 100% (12/12), done. +Receiving objects: 100% (20/20), done. +Resolving deltas: 100% (2/2), done. +remote: Total 20 (delta 2), reused 20 (delta 2), pack-reused 0 + +● Настроим хранилище боба + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git config user.name 'Bob(SokolovMI)' + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git config email.name 'sokolov.mouse@yandex.ru' + +● Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git add project.cpp + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git commit -m 'code: добавление вывода произведения двух чисел' +[main 49afd29] code: добавление вывода произведения двух чисел + 1 file changed, 1 insertion(+), 1 deletion(-) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git log --oneline --decorate --all --graph +* 49afd29 (HEAD -> main) code: добавление вывода произведения двух чисел +* a66d232 (origin/main, origin/HEAD) code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git push +Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa': +Enumerating objects: 7, done. +Counting objects: 100% (7/7), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (4/4), 456 bytes | 456.00 KiB/s, done. +Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (1/1), completed with 1 local object. +To github.com:Kra1k/cs-lab02.git + a66d232..49afd29 main -> main + + +● Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен). + +$ git fetch +remote: Enumerating objects: 7, done. +remote: Counting objects: 100% (7/7), done. +remote: Compressing objects: 100% (2/2), done. +remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0 +Unpacking objects: 100% (4/4), 436 bytes | 48.00 KiB/s, done. +From github.com:Kra1k/cs-lab02 + a66d232..49afd29 main -> origin/main +) +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 49afd29 (origin/main) code: добавление вывода произведения двух чисел +* a66d232 (HEAD -> main) code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/ali +$ git pull --ff-only +Updating a66d232..49afd29 +Fast-forward + project/project.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + + +● Далее Алиса вносит новое изменение, а Боб его скачивает. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод деления двух чисел' +[main 71dc1f0] code: добавлен вывод деления двух чисел + 1 file changed, 1 insertion(+) + +$ git push +Enumerating objects: 7, done. +Counting objects: 100% (7/7), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (4/4), 446 bytes | 446.00 KiB/s, done. +Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (1/1), completed with 1 local object. +To github.com:Kra1k/cs-lab02.git + 49afd29..71dc1f0 main -> main + + + +$ git pull +Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa': +remote: Enumerating objects: 7, done. +remote: Counting objects: 100% (7/7), done. +remote: Compressing objects: 100% (2/2), done. +remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0 +Unpacking objects: 100% (4/4), 426 bytes | 7.00 KiB/s, done. +From github.com:Kra1k/cs-lab02 + 49afd29..71dc1f0 main -> origin/main +Updating 49afd29..71dc1f0 +Fast-forward + project/project.cpp | 1 + + 1 file changed, 1 insertion(+) + +● Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод максимума' +[main 7e48e49] code: добавлен вывод максимума + 1 file changed, 6 insertions(+) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git push +Enumerating objects: 7, done. +Counting objects: 100% (7/7), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (4/4), 449 bytes | 449.00 KiB/s, done. +Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (1/1), completed with 1 local object. +To github.com:Kra1k/cs-lab02.git + 71dc1f0..7e48e49 main -> main + +● (боб) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git commit -m 'code: добавление вывода минимума' +[main e507b8a] code: добавление вывода минимума + 1 file changed, 6 insertions(+) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git push +Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa': +To github.com:Kra1k/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'github.com:Kra1k/cs-lab02.git' +hint: Updates were rejected because the remote contains work that you do +hint: not have locally. This is usually caused by another repository pushing +hint: to the same ref. You may want to first integrate the remote changes +hint: (e.g., 'git pull ...') before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + + + +(Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub.) + + + +● Загрузим версию с сервера + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git fetch +Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa': +remote: Enumerating objects: 7, done. +remote: Counting objects: 100% (7/7), done. +remote: Compressing objects: 100% (2/2), done. +remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0 +Unpacking objects: 100% (4/4), 429 bytes | 7.00 KiB/s, done. +From github.com:Kra1k/cs-lab02 + 71dc1f0..7e48e49 main -> origin/main + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git log --oneline --decorate --all --graph +* e507b8a (HEAD -> main) code: добавление вывода минимума +| * 7e48e49 (origin/main, origin/HEAD) code: добавлен вывод максимума +|/ +* 71dc1f0 code: добавлен вывод деления двух чисел +* 49afd29 code: добавление вывода произведения двух чисел +* a66d232 code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + + +(Ветка main раздвоилась.) +● Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase. + +$ git rebase origin/main +Auto-merging project/project.cpp +CONFLICT (content): Merge conflict in project/project.cpp +error: could not apply e507b8a... code: добавление вывода минимума +hint: Resolve all conflicts manually, mark them as resolved with +hint: "git add/rm ", then run "git rebase --continue". +hint: You can instead skip this commit: run "git rebase --skip". +hint: To abort and get back to the state before "git rebase", run "git rebase --abort". +Could not apply e507b8a... code: добавление вывода минимума + +● Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main|REBASE 1/1) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main|REBASE 1/1) +$ git status +interactive rebase in progress; onto 7e48e49 +Last command done (1 command done): + pick e507b8a code: добавление вывода минимума +No commands remaining. +You are currently rebasing branch 'main' on '7e48e49'. + (all conflicts fixed: run "git rebase --continue") + +Changes to be committed: + (use "git restore --staged ..." to unstage) + modified: project.cpp + + +$ git rebase --continue +[detached HEAD 47fca42] code: добавление вывода минимума + 1 file changed, 4 insertions(+) +Successfully rebased and updated refs/heads/main. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git log --oneline --decorate --all --graph +* 47fca42 (HEAD -> main) code: добавление вывода минимума +* 7e48e49 (origin/main, origin/HEAD) code: добавлен вывод максимума +* 71dc1f0 code: добавлен вывод деления двух чисел +* 49afd29 code: добавление вывода произведения двух чисел +* a66d232 code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + +(Получили желаемый результат) +● Отправим изменения на сервер. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main) +$ git push +Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa': +Enumerating objects: 7, done. +Counting objects: 100% (7/7), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (4/4), 516 bytes | 516.00 KiB/s, done. +Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (1/1), completed with 1 local object. +To github.com:Kra1k/cs-lab02.git + 7e48e49..47fca42 main -> main + +● В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git branch double + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (double) +$ git add -u + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (double) +$ git commit -m 'code: изменен тип переменных на вещественный' +[double 091584f] code: изменен тип переменных на вещественный + 1 file changed, 1 insertion(+), 1 deletion(-) + +● Затем переключается на ветку main. И синхронизирует её + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git pull +remote: Enumerating objects: 7, done. +remote: Counting objects: 100% (7/7), done. +remote: Compressing objects: 100% (2/2), done. +remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0 +Unpacking objects: 100% (4/4), 496 bytes | 8.00 KiB/s, done. +From github.com:Kra1k/cs-lab02 + 7e48e49..47fca42 main -> origin/main +Updating 7e48e49..47fca42 +Fast-forward + project/project.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 091584f (double) code: изменен тип переменных на вещественный +| * 47fca42 (HEAD -> main, origin/main) code: добавление вывода минимума +|/ +* 7e48e49 code: добавлен вывод максимума +* 71dc1f0 code: добавлен вывод деления двух чисел +* 49afd29 code: добавление вывода произведения двух чисел +* a66d232 code: добавлен вывод разности двух чисел +* f06ff5f code: добавлен вывод суммы двух чисел +* c18ecb8 code: добавлен ввод двух чисел +* 75fb07c build: добавлен файл проекта +* e04836e code: заготовка программы + +(Получаем одновременно две ветки) +● Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git merge double +Auto-merging project/project.cpp +Merge made by the 'ort' strategy. + project/project.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) +. + +Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main) +$ git push +Enumerating objects: 14, done. +Counting objects: 100% (14/14), done. +Delta compression using up to 4 threads +Compressing objects: 100% (6/6), done. +Writing objects: 100% (8/8), 802 bytes | 802.00 KiB/s, done. +Total 8 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (2/2), completed with 2 local objects. +To github.com:Kra1k/cs-lab02.git + 47fca42..f8fd08e main -> main