From b128dcc740d7fd3b045d89373d5c1fe48779debf Mon Sep 17 00:00:00 2001 From: "Alice (BadaninaSP)" Date: Sat, 7 Feb 2026 02:32:02 +0300 Subject: [PATCH] =?UTF-8?q?report:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BE=D1=82=D1=87=D1=91=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1160 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1160 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..52246ab --- /dev/null +++ b/README.md @@ -0,0 +1,1160 @@ +# Отчёт по лабораторной работе №2 "Применение системы контроля версий в Git" # +## Вход в терминал и создание структуры каталогов ## + +Создаю каталог lab02 для данной ЛР и запускаю в нём Git Bash. Вижу приглашение, указывающее путь к рабочему каталогу и символ $: +``` +/d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02 +$ +``` + +Создаю папки lab02/alice и lab02/bob, имитирующие компьютеры Алисы и Боба: +``` +mkdir alice +mkdir bob +``` + +Создаю на компьютере Алисы каталог Project и перехожу в него +``` +$ cd alice + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice +$ mkdir project + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice +$ cd project + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project +``` + +Поднимаюсь на уровень выше и возвращаюсь в Project +``` +$ cd .. + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice +$ cd project + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project +``` + +## Инициализация репозитария и настройка Git ## +Инициализирую репозитарий в текущем каталоге project (при установке Git был настроен так, чтобы ветка по умолчанию нахывалась main): +``` +$ git init +Initialized empty Git repository in D:/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project/.git/ + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +Настройка репозитария Алисы +``` +$ git config user.name 'Alice (BadaninaSP)' + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git config user.email 'BadaninaSP@mpei.ru' + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +## Создание коммитов ## +Запускаю CodeBlocks и создаю проект в репозитарии Алисы: +*Project title: project +*Folder to create project in: C:\Users\user\Desktop\lab02\alice +*Project filename: project.cbp +*Resulting filename: +*C:\Users\user\Desktop\lab02\alice\project\project.cbp + +После сборки проекта получена нужная структура файлов и каталогов. + +## Занесение файлов под контроль версий ## +Просмотр состояния рабочей копии +``` +$ git status +On branch main + +No commits yet + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + main.cpp + obj/ + project.cbp + project.depend + +nothing added to commit but untracked files present (use "git add" to track) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) + +``` +В ветке main нет коммитов, папки bin/, obj/ и файлы main.c, project.cbp, project.depend не отслеживаются. + +Добавляю main.cpp в индекс +``` +$ git add main.cpp +``` + +Снова смотрю состояние рабочей копии +``` +$ git status +On branch main + +No commits yet + +Changes to be committed: + (use "git rm --cached ..." to unstage) + new file: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.cbp + project.depend + + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +В очередной коммит войдёт только файл main.cpp, остальные файлы и папки не отслеживаются. + +Делаю коммит с этим файлом +``` +$ git commit -m 'code: заготовка программы' +[main (root-commit) 0cda65b] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp +``` +## Составление сообщений к коммитам ## +Добавляю файл проекта в индекс +``` +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git status +On branch main +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: project.cbp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.depend + + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +и делаю коммит с ним +``` +$ git commit -m 'build: добавлен файл проекта' +[main fab7219] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +## Создание коммитов с изменениями ## +1. Состояние рабочей копии до изменения main.cpp +``` +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.depend + +nothing added to commit but untracked files present (use "git add" to track) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Заменяю содержимое функции main(): +``` +cout << "Enter A and B: "; +int a, b; +cin >> a >> b; +``` + +После изменения main.cpp Git отображает наличие изменений в файле main.cpp, которые не выставлены на коммит +``` +$ git status +On branch main +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.depend + +no changes added to commit (use "git add" and/or "git commit -a") + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Делаю коммит с обновлённым файлом +``` +$ git add main.cpp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git commit -m 'code: добавлен ввод двух чисел' +[main fca14d8] code: добавлен ввод двух чисел + 1 file changed, 3 insertions(+), 2 deletions(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +2. Добавляю в программу вывод суммы a и b, дописав в конце main() строку +```cout << "A + B = " << a + b;``` +и снова делаю коммит +``` +$ git add -u + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git status +On branch main +Changes to be committed: + (use "git restore --staged ..." to unstage) + modified: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.depend + + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод суммы a и b' +[main da84366] code: добавлен вывод суммы a и b + 1 file changed, 1 insertion(+) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +3. Добавляю в программу вывод разности a и b, изменив инструкцию cout в main(): +``` +cout << "A + B = " << a + b << '\n' +<< "A - B = " << a - b << '\n'; +``` +и делаю коммит +``` +$ git commit -a -m 'code: добавлен вывод разности a и b' +[main 703d751] code: добавлен вывод разности a и b + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +## Игнорирование файлов ## +Создаю файл .gitignore, в котором указываю файлы, которые не нуждаются в контроле версий и должны игнорироваться: +``` +/bin +/obj +*.layout +project.depend +``` + +Теперь эти файлы не отображаются как неотслеживаемые и просто игнорируются: +``` +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + +nothing added to commit but untracked files present (use "git add" to track) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +Создаю коммит с .gitignore +``` +$ git add .gitignore + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git commit -m 'git: добавлен .gitignore' +[main 59cb19c] git: добавлен .gitignore + 1 file changed, 4 insertions(+) + create mode 100644 .gitignore + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +## Просмотр истории ## +### Работа с журналом репозитария ### +Вывод команды git log --stat для последнего коммита: +``` +$ git log --stat +commit 59cb19c306ff2257f830406d60ad1fc785c88c33 (HEAD -> main) +Author: Alice (BadaninaSP) +Date: Mon Feb 2 01:25:04 2026 +0400 + + git: добавлен .gitignore + + .gitignore | 4 ++++ + 1 file changed, 4 insertions(+) + ``` +Первая строка - хэш текущего коммита и указание на ветку, в которой он находится. +Вторая строка - автор коммита (здесь это Алиса). +Третья строка - дата и время, когда совершён коммит. +Четвёртая строка - заголовок коммита. +Пятая строка - имя изменённого файла и количество изменений. +Шестая строка - один файл изменён, 4 вставки. + +Вывод коммитов по теме build: +``` +$ git log --grep "build:" +commit fab7219f8b1c6faf26857c85e61a86f759905b87 +Author: Alice (BadaninaSP) +Date: Sun Feb 1 02:03:46 2026 +0400 + + build: добавлен файл проекта + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +Вывод коммитов, затрагивающих project.cbp: +``` +$ git log -- project.cbp +commit fab7219f8b1c6faf26857c85e61a86f759905b87 +Author: Alice (BadaninaSP) +Date: Sun Feb 1 02:03:46 2026 +0400 + + build: добавлен файл проекта + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +### Просмотр коммитов ### +Просмотр предпоследнего коммита +``` +$ git show HEAD~1 +commit 703d7515ac3c339930c278c035cbfb96bb5a65f1 +Author: Alice (BadaninaSP) +Date: Mon Feb 2 01:15:24 2026 +0400 + + code: добавлен вывод разности a и b + +diff --git a/main.cpp b/main.cpp +index 4364dbc..65442c3 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +### Просмотр изменений ### +Добавляю в программу вывод произведения a и b, изменив инструкцию cout в main(): +``` +cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n'; +``` +коммит пока не делаю. + +Просматриваю изменения в рабочей копии: +``` +$ git diff +diff --git a/main.cpp b/main.cpp +index 65442c3..f94f092 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,6 @@ int main() + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' +- << "A - B = " << a - b << '\n'; ++ << "A - B = " << a - b << '\n' ++ << "A * B = " << a * b << '\n'; + } + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Первая строка вывода - заголовок, сравниваются две версии одного файла: a/ - версия до изменений (в последнем коммите) и b/ - версия после изменений (в рабочей директории). +Вторая строка - хэши файлов (blob-объектов, 65442c3 - старый файл из предыдущего коммита, f94f092 - новый файл в рабочей директории) и режим доступа к этим файлам. +Третья строка - имя старой версии файла. +Четвёртая строка - имя новой версии файла. +Пятая строка - диапазон выведенных строк: начиная с 8-й строки выведены 5 строк старого файла и 6 строк нового файла, нижеприведённый фрагмент находится в функции main. +Далее - выведены строки с изменениями и строки контекста до и после строк с изменениями (по умолчанию 3). + +Вывод различий между самым первым и предпоследним коммитом (там где был добавлен вывод разницы между a и b): +``` +$ git diff HEAD~5 HEAD~1 +diff --git a/main.cpp b/main.cpp +index b4392ec..65442c3 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,9 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; +- return 0; ++ cout << "Enter A and B: "; ++ int a, b; ++ cin >> a >> b; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } +diff --git a/project.cbp b/project.cbp +new file mode 100644 +index 0000000..99bb702 +--- /dev/null ++++ b/project.cbp +@@ -0,0 +1,40 @@ ++ ++ ++ ++ ++ ++ +``` +Видно, что в файле main.cpp заменено содержимое функции main. Также был добавлен файл project.cbp, выведено его содержимое на экран. Файл .gitignore на этом этапе ещё не создан. +## Откат изменений ## +Закоммитила вывод произведения чисел +``` +$ git status +On branch main +Changes to be committed: + (use "git restore --staged ..." to unstage) + modified: main.cpp + + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод произведения a и b' +[main a4f0f70] code: добавлен вывод произведения a и b + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +Отменила этот коммит и вернулась к предыдущему +``` +$ git reset --hard HEAD~1 +HEAD is now at 59cb19c git: добавлен .gitignore + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Содержимое файла main.cpp вернулось к тому, которое было до внесения изменений. + +Добавлю перед функцией строку main() +``` +// you may type whatever you want +``` +и восстановлю исходное содержимое файла, которое было в последнем коммите +``` +$ git checkout HEAD -- main.cpp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Содержимое файла вернулось к исходному. + +## Обмен кодом через удаленное хранилище ## +### Настройка SSH ### +Создаю пару ключей (открытый и закрытый) +``` +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/ibada/.ssh/id_ed25519): +Created directory '/c/Users/ibada/.ssh'. +Enter passphrase for "/c/Users/ibada/.ssh/id_ed25519" (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/ibada/.ssh/id_ed25519 +Your public key has been saved in /c/Users/ibada/.ssh/id_ed25519.pub +The key fingerprint is: +SHA256:Sc1dFrpQOHqeUycF6oRoR0G1JB/ids+0jKXT7DsZQdc ibada@Meouw +The key's randomart image is: ++--[ED25519 256]--+ +| .*o+.o.+o | +| + Oo*.+o E| +| o *.Xo=o | +| . +.=.%+o. | +| So=oO+ | +| +o. | +| ..o | +| o. | +| .. | ++----[SHA256]-----+ +``` +Запуск агента для упрощения использования ключа +``` +$ eval $(ssh-agent -s) +Agent pid 539 + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ ssh-add +Enter passphrase for /c/Users/ibada/.ssh/id_ed25519: +Identity added: /c/Users/ibada/.ssh/id_ed25519 (ibada@Meouw) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Получение открытого ключа +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3mZ2XPvcseBx4hMd7jdwbRhhDWsMfcHYN3n6jWpKjv ibada@Meouw + +### Отправка проекта на сервер ### +Создаю на сервере пустой репозитарий под названием cs-lab02 и настраиваю связь с удаленным хранилищем +``` +$ git remote add origin git@uit.mpei.ru:BadaninaSP/cs-lab02.git + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ 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 22 threads +Compressing objects: 100% (16/16), done. +Writing objects: 100% (18/18), 2.35 KiB | 1.17 MiB/s, done. +Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:BadaninaSP/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +### Получение проекта с сервера ### +Открываю новый терминал Git Bash в каталоге bob. Клонирую проект +``` +$ git clone git@uit.mpei.ru:BadaninaSP/cs-lab02.git project +Cloning into 'project'... +Enter passphrase for key '/c/Users/ibada/.ssh/id_ed25519': +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. + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob +``` +Переход в каталог проекта «на машине Боба» +``` +$ cd project + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +и настройка его Git +``` +$ git config user.name 'Bob (BadaninaSP)' + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +$ git config user.email 'BadaninaSP@mpei.ru' + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +## Совместная работа над проектом без конфликтов правок ## +Добавлю в main.cpp вывод произведения чисел: +``` +#include + +using namespace std; + +int main() +{ + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n'; +} +``` +сделаю коммит от имени Боба +``` +$ git add main.cpp +$ git commit -m 'code: добавлен вывод произведения a и b' +[main d3c32a5] code: добавлен вывод произведения a и b + 1 file changed, 2 insertions(+), 1 deletion(-) +``` +Проверка того, что этот коммит сделан от имени Боба: +``` +$ git log --stat +commit d3c32a5794c394f82d80104db7916703e4b4244b (HEAD -> main) +Author: Bob (BadaninaSP) +Date: Tue Feb 3 23:43:43 2026 +0400 + + code: добавлен вывод произведения a и b + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) +``` +Отправка на сервер +``` +$ git push +Enter passphrase for key '/c/Users/ibada/.ssh/id_ed25519': +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 22 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 428 bytes | 428.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:BadaninaSP/cs-lab02.git + 59cb19c..d3c32a5 main -> 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), 408 bytes | 136.00 KiB/s, done. +From uit.mpei.ru:BadaninaSP/cs-lab02 + 59cb19c..d3c32a5 main -> origin/main + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +В рабочей копии изменений ещё не произошло. +Ветка main отстает на один коммит от ветки origin/main: +``` +$ git log --oneline +59cb19c (HEAD -> main) git: добавлен .gitignore +703d751 code: добавлен вывод разности a и b +da84366 code: добавлен вывод суммы a и b +fca14d8 code: добавлен ввод двух чисел +fab7219 build: добавлен файл проекта +0cda65b code: заготовка программы +``` +Продвижение ветки main к скачанной версии +``` +$ git pull --ff-only +Updating 59cb19c..d3c32a5 +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git log --oneline +d3c32a5 (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод произведения a и b +59cb19c git: добавлен .gitignore +703d751 code: добавлен вывод разности a и b +da84366 code: добавлен вывод суммы a и b +fca14d8 code: добавлен ввод двух чисел +fab7219 build: добавлен файл проекта +0cda65b code: заготовка программы + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Рабочая копия проекта «у Алисы» соответствует версии «у Боба». + +Добавление в программу печати деления +``` +#include + +using namespace std; + +int main() +{ + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n'; +} +``` +Коммит этого от имени Алисы +``` +$ git add main.cpp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод деления a на b' +[main 917427b] code: добавлен вывод деления a на b + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Отправка на сервер +``` +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 22 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 421 bytes | 421.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:BadaninaSP/cs-lab02.git + d3c32a5..917427b main -> main + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Приём Бобом +``` +$ git pull --ff-only +Enter passphrase for key '/c/Users/ibada/.ssh/id_ed25519': +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), 401 bytes | 44.00 KiB/s, done. +From uit.mpei.ru:BadaninaSP/cs-lab02 + d3c32a5..917427b main -> origin/main +Updating d3c32a5..917427b +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +Рабочая копия проекта «у Боба» соответствует версии «у Алисы». + +## Разрешение конфликтов правок при совместной работе ## +Алиса дополняет программу печатью максимума +``` +#include + +using namespace std; + +int main() +{ + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n' + << "max(A, B) = " << max(a, b) << '\n'; +} +``` +делает коммит и отправляет его на сервер +``` +$ git add main.cpp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод максимума' +[main 8a335dc] code: добавлен вывод максимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 22 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 430 bytes | 430.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:BadaninaSP/cs-lab02.git + 917427b..8a335dc main -> main + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` + +Боб дополняет программу печатью минимума +``` +#include + +using namespace std; + +int main() +{ + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n' + << "min(A, B) = " << min(a, b) << '\n'; +} +``` +делает коммит +``` +$ git add main.cpp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +$ git commit -m 'code: добавлен вывод минимума' +[main 25a8e7e] code: добавлен вывод минимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +и пытается отправить его на сервер +``` +$ git push +Enter passphrase for key '/c/Users/ibada/.ssh/id_ed25519': +To uit.mpei.ru:BadaninaSP/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'uit.mpei.ru:BadaninaSP/cs-lab02.git' +hint: Updates were rejected because the remote contains work that you do not +hint: have locally. This is usually caused by another repository pushing to +hint: the same ref. If you want to integrate the remote changes, use +hint: 'git pull' before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +что заканчивается неудачей из-за наличия в удалённом репозитарии изменений, которые отсутствуют в локальном. +«От лица Боба» загрузим коммиты из удаленного хранилища и отобразим историю всех веток. +```$ git fetch +Enter passphrase for key '/c/Users/ibada/.ssh/id_ed25519': +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), 410 bytes | 45.00 KiB/s, done. +From uit.mpei.ru:BadaninaSP/cs-lab02 + 917427b..8a335dc main -> origin/main + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +$ git log --stat +commit 8a335dcd242cc24b19edce92f6f5d34284e1e851 (HEAD, origin/main, origin/HEAD) +Author: Alice (BadaninaSP) +Date: Wed Feb 4 01:30:47 2026 +0400 + + code: добавлен вывод максимума + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 917427b54001612eed18042cab81c877f327c2af +Author: Alice (BadaninaSP) +Date: Wed Feb 4 01:04:41 2026 +0400 + + code: добавлен вывод деления a на b + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d3c32a5794c394f82d80104db7916703e4b4244b +Author: Bob (BadaninaSP) +Date: Tue Feb 3 23:43:43 2026 +0400 + + code: добавлен вывод произведения a и b + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 59cb19c306ff2257f830406d60ad1fc785c88c33 +Author: Alice (BadaninaSP) +Date: Mon Feb 2 01:25:04 2026 +0400 + + git: добавлен .gitignore + + .gitignore | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 703d7515ac3c339930c278c035cbfb96bb5a65f1 +Author: Alice (BadaninaSP) +Date: Mon Feb 2 01:15:24 2026 +0400 + + code: добавлен вывод разности a и b + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit da843664d255aa6bbd04695c8e26b4424f3fcd28 +Author: Alice (BadaninaSP) +Date: Mon Feb 2 01:03:41 2026 +0400 + + code: добавлен вывод суммы a и b + + main.cpp | 1 + + 1 file changed, 1 insertion(+) + +commit fca14d80ac2a78122441e9b7157481d374a33ecc +Author: Alice (BadaninaSP) +Date: Mon Feb 2 00:24:16 2026 +0400 + + code: добавлен ввод двух чисел + + main.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit fab7219f8b1c6faf26857c85e61a86f759905b87 +Author: Alice (BadaninaSP) +Date: Sun Feb 1 02:03:46 2026 +0400 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 0cda65b553627021651c8584ded99f55eb1b39a4 +Author: Alice (BadaninaSP) +Date: Sun Feb 1 01:58:32 2026 +0400 + + code: заготовка программы + + main.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) +``` +Попытка поместить коммит Боба поверх коммита Алисы заканчивается ошибкой (конфликт слияния в файле main.cpp) +``` +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 25a8e7e... 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". +hint: Disable this message with "git config set advice.mergeConflict false" +Could not apply 25a8e7e... # code: добавлен вывод минимума + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main|REBASE 1/1) +``` +Состояние хранилища +``` +$ git status +interactive rebase in progress; onto 8a335dc +Last command done (1 command done): + pick 25a8e7e # code: добавлен вывод минимума +No commands remaining. +You are currently rebasing branch 'main' on '8a335dc'. + (fix conflicts and then run "git rebase --continue") + (use "git rebase --skip" to skip this patch) + (use "git rebase --abort" to check out the original branch) + +Unmerged paths: + (use "git restore --staged ..." to unstage) + (use "git add ..." to mark resolution) + both modified: main.cpp + +no changes added to commit (use "git add" and/or "git commit -a") + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main|REBASE 1/1) +``` +Продолжается процесс перебазирования; на коммите 8a335dc +Проделана команда +включения коммита "25a8e7e # code: добавлен вывод минимума" в процесс интерактивного перебазирования +Нет оставшихся комманд +Сейчас вы перебазируете main на 8a335dc. +Исправьте конфликты и запустите "git rebase --continue" +Неслившиеся пути: оба изменённых main.cpp +Нет изменений добавленных для коммита. + +В файле отмечено место конфликта +Отредактирую код так, чтобы он включал и правки Алисы, и правки Боба. +``` +#include + +using namespace std; + +int main() +{ + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n' + << "max(A, B) = " << max(a, b) << '\n' + << "min(A, B) = " << min(a, b) << '\n'; +} +``` +Добавляю файл в индекс и продолжаю прерванную операцию rebase: +``` +git add main.cpp +git rebase --continue +``` +Проверяю историю хранилища +``` +$ git log --oneline +fe639cd (HEAD -> main) code: добавлен вывод минимума +8a335dc (origin/main, origin/HEAD) code: добавлен вывод максимума +917427b code: добавлен вывод деления a на b +d3c32a5 code: добавлен вывод произведения a и b +59cb19c git: добавлен .gitignore +703d751 code: добавлен вывод разности a и b +da84366 code: добавлен вывод суммы a и b +fca14d8 code: добавлен ввод двух чисел +fab7219 build: добавлен файл проекта +0cda65b code: заготовка программы + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +Она имеет желаемый вид, отправляю её на сервер +``` +$ git push +Enter passphrase for key '/c/Users/ibada/.ssh/id_ed25519': +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 22 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 433 bytes | 433.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:BadaninaSP/cs-lab02.git + 8a335dc..fe639cd main -> main + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/bob/project (main) +``` +## Использование веток ## +Пока Боб синхронизировал изменения, Алиса решила изменить тип чисел с целых на действительные. Предполагая, что это займет время, Алиса ведет работу в отдельной ветке. На момент начала работы репозитарий Алисы не синхронизирован с сервером, то есть последний коммит добавляет печать максимума. Все действия ведутся «на машине Алисы». +Создаю ветку double: +``` +$ git branch double + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Переключаюсь на нее: +``` +$ git checkout double +Switched to branch 'double' + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (double) +``` +Заменяю тип переменных a и b на double +``` +#include + +using namespace std; + +int main() +{ + cout << "Enter A and B: "; + double a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n' + << "max(A, B) = " << max(a, b) << '\n'; +} +``` +и делаю коммит +``` +$ git add main.cpp + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (double) +$ git commit -m 'code: заменён тип переменных a и b на double' +[double 52b8fb1] code: заменён тип переменных a и b на double + 1 file changed, 1 insertion(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (double) +``` +Синхронизация ветки 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), 413 bytes | 22.00 KiB/s, done. +From uit.mpei.ru:BadaninaSP/cs-lab02 + 8a335dc..fe639cd main -> origin/main +Updating 8a335dc..fe639cd +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +$ git log --oneline --all +52b8fb1 (double) code: заменён тип переменных a и b на double +fe639cd (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод минимума +8a335dc code: добавлен вывод максимума +917427b code: добавлен вывод деления a на b +d3c32a5 code: добавлен вывод произведения a и b +59cb19c git: добавлен .gitignore +703d751 code: добавлен вывод разности a и b +da84366 code: добавлен вывод суммы a и b +fca14d8 code: добавлен ввод двух чисел +fab7219 build: добавлен файл проекта +0cda65b code: заготовка программы + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Сливаю ветку double в main: +``` +$ git merge double +Auto-merging main.cpp +Merge made by the 'ort' strategy. + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +История всех изменений +``` +$ git log --oneline --all +d1bd17c (HEAD -> main) code: заменён тип переменных a и b на double Merge branch 'double' +52b8fb1 (double) code: заменён тип переменных a и b на double +fe639cd (origin/main, origin/HEAD) code: добавлен вывод минимума +8a335dc code: добавлен вывод максимума +917427b code: добавлен вывод деления a на b +d3c32a5 code: добавлен вывод произведения a и b +59cb19c git: добавлен .gitignore +703d751 code: добавлен вывод разности a и b +da84366 code: добавлен вывод суммы a и b +fca14d8 code: добавлен ввод двух чисел +fab7219 build: добавлен файл проекта +0cda65b code: заготовка программы + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Отправляю на сервер +``` +$ git push +Enumerating objects: 10, done. +Counting objects: 100% (10/10), done. +Delta compression using up to 22 threads +Compressing objects: 100% (6/6), done. +Writing objects: 100% (6/6), 803 bytes | 803.00 KiB/s, done. +Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:BadaninaSP/cs-lab02.git + fe639cd..d1bd17c main -> main + +ibada@Meouw MINGW64 /d/Учёба/Разработка программного обеспечения систем управления/Модуль 2/lab02/alice/project (main) +``` +Все изменения появились на сервере. \ No newline at end of file