From 02c8da554b0c92f85d4cb02c24f7b4ff974ac159 Mon Sep 17 00:00:00 2001 From: "Alice (KomkovBN)" Date: Mon, 11 Sep 2023 02:53:35 +0300 Subject: [PATCH] report --- Report.txt | 761 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 761 insertions(+) create mode 100644 Report.txt diff --git a/Report.txt b/Report.txt new file mode 100644 index 0000000..14a6ae6 --- /dev/null +++ b/Report.txt @@ -0,0 +1,761 @@ +Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ» +Институт информационных и вычислительных технологий +Кафедра Управления и интеллектуальных технологий + +Дисциплина: +Разработка программного обеспечения систем управления + +Лабораторная работа №2 +Система контроля версий Git + + + + + + + + + + + +Выполнил студент группы +А-03-22 +Комков Борис Николаевич +Вариант: - +Проверил + Козлюк Дмитрий Александрович + +Москва 2023 + +Цель работы +Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними. +Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также популярный хостинг репозитариев — GitHub. + +Ход работы: +Вход в терминал и создание структуры каталогов +● Создаем папки пользователей (mkdir alice, mkdir bob) +● В папке пользователя alice создаем папку project +Инициализация репозитария и настройка Git +● Инициализируем хранилище git (git init) +● Настраиваем папки пользователя, с которым будем работать: +/Desktop/lab02/alice/project (master) +$ git init +Initialized empty Git repository in C:/User/scomko/Desktop/lab02/alice/project/.git + + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.name 'Alice (KomkovBN)' + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.email 'komkovBN@mpei.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, и подсказывает как их добавить +Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить +● Добавляем файл с кодом и просматриваем изменения + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ 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 + + + +Появилась строка с файлами в индексе, стоящими в очереди на коммит + +Составление сообщений к коммитам +● Создаем 2 коммита с информацией о коде программы + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[master (root-commit) 0e6e8a1] code: заготовка программы + 1 file changed, 10 insertions(+) + create mode 100644 project/project.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add project.cbp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[master 4384681] build: добавлен файл проекта + 1 file changed, 147 insertions(+) + create mode 100644 project.cbp + +● После добавления в программу ввода 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 + +no changes added to commit (use "git add" and/or "git commit -a") + + +● Проделываем ряд изменений с кодом программы и делаем коммиты несколькими способами + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add project.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен ввод двух чисел' +[master 2ad265b] code: добавлен ввод двух чисел + 1 file changed, 4 insertions(+), 1 deletion(-) +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add -u + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод суммы двух чисел' +[master 72813f6] code: добавлен вывод суммы двух чисел + 1 file changed, 1 insertion(+) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add -u + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод разности двух чисел' +[master bfb4095] code: добавлен вывод разности двух чисел + 1 file changed, 1 insertion(+), 1 deletion(-) + + +Просмотр истории +● С помощью команды git log и различных ее опций просматриваем журнал коммитов +Используем команду git log –stat +$ git log --stat +commit 72813f6549a5115be88700b232edd89742438ef1 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:58:00 2023 +0300 +: + code: добавлен вывод суммы двух чисел +: + main.cpp | 1 + + 1 file changed, 1 insertion(+) +: +commit 2ad265b38d428b291c9c441585dad2661766f269 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:54:23 2023 +0300 +: + code: добавлен вывод суммы двух чисел +: + main.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) +: +commit 43846815d2859b234ee4e1fcb7e42c4ec0638436 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:36:25 2023 +0300 +: + build: добавлен файл проекта +: + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) +: +commit 0e6e8a16771b1040fe34cc3e8ce7805979ffd4f1 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:30:52 2023 +0300 +: + code: заготовка программы +: + main.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) + + +В последнем коммите первой строкой показывается хэш коммита, по которому можно +потом найти этот коммит +Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита +Далее идет комментарий к коммиту +Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.) +В последней стр. приведена статистика изменений данных файлов + +(Использование других способов просмотра истории) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate +bfb4095 (HEAD -> master) code: добавлен вывод разности двух чисел +72813f6 code: добавлен вывод суммы двух чисел +2ad265b code: добавлен вывод суммы двух чисел +4384681 build: добавлен файл проекта +0e6e8a1 code: заготовка программы + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* bfb4095 (HEAD -> master) code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + + + +Просмотр коммитов +● Используем команды для просмотра отдельных коммитов(git log –main.cpp/ git log –grep “code: ”) + +$ git log --grep "build:" +commit 43846815d2859b234ee4e1fcb7e42c4ec0638436 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:36:25 2023 +0300 + + build: добавлен файл проекта + + + +● Далее тремя способами просматриваем информацию о предпоследнем коммите +(результат всех способов один, поэтому в отчете не повторялся) +$ git show HEAD~1 +commit 72813f6549a5115be88700b232edd89742438ef1 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:58:00 2023 +0300 + + code: добавлен вывод суммы двух чисел + +diff --git a/main.cpp b/main.cpp +index eac5055..4364dbc 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,4 +7,5 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; ++ cout << "A + B = " << a + b << '\n'; + } + + +$ git show master~1 +commit 72813f6549a5115be88700b232edd89742438ef1 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:58:00 2023 +0300 + + code: добавлен вывод суммы двух чисел + +diff --git a/main.cpp b/main.cpp +index eac5055..4364dbc 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,4 +7,5 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; ++ cout << "A + B = " << a + b << '\n'; + } + + +commit 72813f6549a5115be88700b232edd89742438ef1 +Author: Alice (KomkovBN) +Date: Fri Aug 25 22:58:00 2023 +0300 + + code: добавлен вывод суммы двух чисел + +diff --git a/main.cpp b/main.cpp +index eac5055..4364dbc 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,4 +7,5 @@ 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 + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +< git commit -a -m "code: добавлен вывод произведения двух чисел" +[main 9542a79] code: добавлен вывод произведения двух чисел + 1 file changed, 1 insertion(+) + +$ git log --oneline --decorate --all --graph +* 9542a79 (HEAD -> main) code: добавлен вывод произведения двух чисел +* 612bb65 git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at 9542a79 code: добавлен вывод разности двух чисел + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 612bb65 (HEAD -> main) git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + + + + +Обмен кодом через удаленное хранилище +● Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей. + +$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (/c/Users/comko/.ssh/id_rsa): +Created directory '/c/Users/comko/.ssh'. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/comko/.ssh/id_rsa +Your public key has been saved in /c/Users/comko/.ssh/id_rsa.pub +The key fingerprint is: +SHA256:UH8jcnaNWZEXCc6x7ngek5NfbZtEPNTDvyRZBUWNk1Y comko@DESKTOP-VQU627S +The key's randomart image is: ++---[RSA 3072]----+ +| . o=@E| +| . . o=X.=| +| . . = *=.B.| +| . + +..= o| +| S + =.| +| o * +| +| . O o+| +| o *.+| +| . + | ++----[SHA256]-----+ + + +● Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы: + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-add +Identity added: /c/Users/comko/.ssh/id_rsa (comko@DESKTOP-VQU627S) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 632 + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ cat ~/.ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNSGMoTHu2AABUlnGP3mY57Nb2EtVfFMyD+RMHtyIyW/9ILGxYtVp6e5jLVH2lyQU6BXhpY3952pu9bVDubcwrP7BqQ5p1Ov2kOAIs4ykKdn3waz2w1PVgS7yufdMZy7s6OrTZvMSBku1wxqAL78dKLx5GvRPQ+PhDzXN2qGpm3TYgcF/W/K/HfUNC4i0LQjTjP1Oa3uYBasdck4HRraeDLzG0OABjXMpn41fiPG1d6de6XOzOMCXhU1RGj5X7V4eApjKO9MtgtR64nHnnca+IICzQ8/tOTyknFpr4Dt2vPywR6gPkvzIQn9QDzk2qdpknHYRpFbu4uTNRCWJUVI9FqJmglzrCJ0HpbScqa7aZHkJEPHFMbAYOriMfHYd17R3TcyYWhLAwo0uTelODEltHGw9G1ZI2Y3EWZB+eO/yOam5H9knLes/nxxQ0Pf5qUYgpSYzkhJahVM+F+GlcstwA2EC0h65ywMLh/T0B6MT+4x0fc1BioXWan7LrKNu7OEE= comko@DESKTOP-VQU627S + +Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub. +● Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push. + +$ git push -u origin main +The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established. +ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA. +This key is not known by any other names. +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts. +Enumerating objects: 18, done. +Counting objects: 100% (18/18), done. +Delta compression using up to 20 threads +Compressing objects: 100% (16/16), done. +Writing objects: 100% (18/18), 2.37 KiB | 2.37 MiB/s, done. +Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:KomkovBN/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + + +● К работе присоединяется боб. Клонируем репозитарий с помощью git clone. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob (master) +$ git clone git@uit.mpei.ru:KomkovBN/cs-lab02.git project +Cloning into 'project'... +remote: Enumerating objects: 18, done. +remote: Counting objects: 100% (18/18), done. +remote: Compressing objects: 100% (16/16), done. +remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (18/18), done. +Resolving deltas: 100% (2/2), done. + +● Настроим хранилище боба + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.name 'Bob (KomkovBN)' + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.email 'komkovBN@mpei.ru' + +● Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git add main.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -m 'code: добавление вывода произведения двух чисел' +[main 89cfe0a] code: добавление вывода произведения двух чисел + 1 file changed, 1 insertion(+) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 89cfe0a (HEAD -> main) code: добавление вывода произведения двух чисел +* 612bb65 (origin/main, origin/HEAD) git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 20 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 456 bytes | 456.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:KomkovBN/cs-lab02.git + 612bb65..89cfe0a main -> main + + +● Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен). + +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 436 bytes | 145.00 KiB/s, done. +From uit.mpei.ru:KomkovBN/cs-lab02 + 612bb65..89cfe0a main -> origin/main + + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 89cfe0a (origin/main) code: добавление вывода произведения двух чисел +* 612bb65 (HEAD -> main) git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull --ff-only + +Updating 612bb65..89cfe0a +Fast-forward + main.cpp | 1 + + 1 file changed, 1 insertion(+) + +● Далее Алиса вносит новое изменение, а Боб его скачивает. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод деления двух чисел' +[main f16b5b3] code: добавлен вывод деления двух чисел + 1 file changed, 2 insertions(+) + +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 20 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 439 bytes | 439.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:KomkovBN/cs-lab02.git + 89cfe0a..f16b5b3 main -> main + + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 419 bytes | 24.00 KiB/s, done. +From uit.mpei.ru:KomkovBN/cs-lab02 + 89cfe0a..f16b5b3 main -> origin/main + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git pull +Updating 89cfe0a..f16b5b3 +Fast-forward + main.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +● Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод максимума' +[main 2d3baeb] code: добавлен вывод максимума + 1 file changed, 1 insertion(+) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 20 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 426 bytes | 426.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:KomkovBN/cs-lab02.git + f16b5b3..2d3baeb main -> main + +● (боб) +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git add main.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -m 'code: добавление вывода минимума' +[main ff9f933] code: добавление вывода минимума + 1 file changed, 1 insertion(+) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +To uit.mpei.ru:KomkovBN/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'uit.mpei.ru:KomkovBN/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.) + + + +● Загрузим версию с сервера + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 406 bytes | 22.00 KiB/s, done. +From uit.mpei.ru:KomkovBN/cs-lab02 + f16b5b3..2d3baeb main -> origin/main + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 4e9d2b4(HEAD -> main) code: добавление вывода минимума +| * 2d3baeb (origin/main, origin/HEAD) code: добавлен вывод максимума +|/ +* f16b5b3 code: добавлен вывод деления двух чисел +* 89cfe0a code: добавление вывода произведения двух чисел +* 612bb65 git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + + +(Ветка main раздвоилась.) +● Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply ff9f933... 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 ff9f933... code: добавление вывода минимума + +● Команда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ git add -u + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ git status +interactive rebase in progress; onto 2d3baeb +Last command done (1 command done): + pick 4e9d2b4code: добавление вывода минимума +No commands remaining. +You are currently editing a commit while rebasing branch 'main' on '2d3baeb'. + (use "git commit --amend" to amend the current commit) + (use "git rebase --continue" once you are satisfied with your changes) + +nothing to commit, working tree clean + + +$ git rebase --continue +[detached HEAD 47fca42] code: добавление вывода минимума + 1 file changed, 4 insertions(+) +Successfully rebased and updated refs/heads/main. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 2f66920 (HEAD -> main) code: добавление вывода минимума +* 2d3baeb (origin/main, origin/HEAD) code: добавлен вывод максимума +* f16b5b3 code: добавлен вывод деления двух чисел +* 89cfe0a code: добавление вывода произведения двух чисел +* 612bb65 git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + +(Получили желаемый результат) +● Отправим изменения на сервер. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 20 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 515 bytes | 515.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:KomkovBN/cs-lab02.git + 2d3baeb..2f66920 main -> main + +● В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git branch double + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (double) +$ git add main.cpp + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (double) +$ git commit -m 'code: изменен тип переменных на вещественный' +[double d0fc256] code: изменен тип переменных на вещественный + 1 file changed, 1 insertion(+), 1 deletion(-) + +● Затем переключается на ветку main. И синхронизирует её + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 495 bytes | 29.00 KiB/s, done. +From uit.mpei.ru:KomkovBN/cs-lab02 + 2d3baeb..2f66920 main -> origin/main +Updating 2d3baeb..2f66920 +Fast-forward + main.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* d0fc256 (double) code: изменен тип переменных на вещественный +| * 4e9d2b4 (origin/main, origin/HEAD) code: вывод минимума + +|/ +* 2d3baeb code: добавлен вывод максимума +* f16b5b3 code: добавлен вывод деления двух чисел +* 89cfe0a code: добавление вывода произведения двух чисел +* 612bb65 git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы + +(Получаем одновременно две ветки) +● Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub. + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/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(-) + + + + +comko@DESKTOP-VQU627S MINGW64 ~/Desktop/Lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 2969185 (HEAD -> main) Merge branch 'double' +|\ +| * f159ef0 (double) code: a и b double +* | 4e9d2b4 (origin/main, origin/HEAD) code: вывод минимума +|/ +* 2d3baeb code: добавлен вывод максимума +* f16b5b3 code: добавлен вывод деления двух чисел +* 89cfe0a code: добавление вывода произведения двух чисел +* 612bb65 git: gitignore занесён под контроль +* bfb4095 code: добавлен вывод разности двух чисел +* 72813f6 code: добавлен вывод суммы двух чисел +* 2ad265b code: добавлен вывод суммы двух чисел +* 4384681 build: добавлен файл проекта +* 0e6e8a1 code: заготовка программы +