diff --git a/report b/report new file mode 100644 index 0000000..16d6362 --- /dev/null +++ b/report @@ -0,0 +1,737 @@ +Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ» +Институт информационных и вычислительных технологий +Кафедра Управления и интеллектуальных технологий + +Дисциплина: +Разработка программного обеспечения систем управления + +Лабораторная работа №2 +Система контроля версий Git + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Выполнила студентка группы +А-03-24 +Пяпиева Айлана Витальевна +Проверил + Козлюк Дмитрий Александрович +Москва 2025 +Цель работы + 1. Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними. + 2. Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также типовой web-интерфейс Gitea. +Ход работы +Вход в терминал и создание структуры каталогов +Создаем папки пользователей (mkdir alice, mkdir bob) +В папке пользователя alice создаем папку project +Инициализация репозитария и настройка Git +Инициализируем хранилище git (git init) +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) +$ git init +Initialized empty Git repository in C:/Users/pyapi/OneDrive/Рабочий стол/lab02/alice/project/.git/ +Настраиваем папки пользователя, с которым будем работать: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) +$ git config user.name 'Alice (PyapievaAV)' + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабоий стол/lab02/alice/project (master) +$ git config user.email 'PiapiyevaAV@mpei.ru' + +Создание коммитов: +Занесение файлов под контроль версий +Просматриваем состояние рабочей копии(git status) +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ 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 + nothing added to commit but untracked files present (use "git add" to track) + + + +В первой строке надпись означает, что мы сейчас находимся в ветке с именем main и все новые коммиты будут добавляться именно в эту ветку +Вторая стр. говорит о том, что еще не было создано коммитов +Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить +Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить + +Добавляем файл с кодом и просматриваем изменения +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ 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 + +Появилась строка с файлами в индексе, стоящими в очереди на коммит + +Составление сообщений к коммитам +Создаем 2 коммита с информацией о коде программы +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) abf5030] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main 994d8ff] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ 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/ + +no changes added to commit (use "git add" and/or "git commit -a") + + +Проделываем изменения с кодом программы и делаем коммит первым способом +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m 'code: добавлена сумма а и б' +[main bb4241b] code: добавлена сумма а и б + 1 file changed, 3 insertions(+), 1 deletion(-) + +Игнорирование файлов + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + +nothing added to commit but untracked files present (use "git add" to track) + +Создадим новый пустой файл под названием “.gitignore” и впишем “/bin”: + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + project.depend + +nothing added to commit but untracked files present (use "git add" to track) + +Далее внесем остальные каталоги и файлы в “.gitignore”: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main +nothing to commit, working tree clean + +Теперь создадим коммит с .gitignore, тема — git: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add .gitignore + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m 'git: создан коммит' +[main ad49237] git: создан коммит + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + +Просмотр истории + +С помощью команды git log и различных ее опций просматриваем журнал коммитов +Используем команду git log –stat +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --stat +commit ad49237d2c9f932d2e4129126ef7c57e4fe409e8 (HEAD -> main) +commit ad49237d2c9f932d2e4129126ef7c57e4fe409e8 (HEAD -> main) +Author: PiapiyevaAV@mpei.ru +Date: Sat Mar 29 23:17:02 2025 +0300 + + git: создан коммит + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit bb2825269072f08b99988f24a2c215b043d60409 +Author: PiapiyevaAV@mpei.ru +Date: Sat Mar 29 22:59:06 2025 +0300 + + code: добавлена сумма а и б + + main.cpp | 1 + + 1 file changed, 1 insertion(+) + + +В последнем коммите первой строкой показывается хэш коммита, по которому можно +потом найти этот коммит +Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита +Далее идет комментарий к коммиту +Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.) +В последней стр. приведена статистика изменений данных файлов + +Используем команды для просмотра отдельных коммитов (git log –main.cpp/ git log –grep “code: ”) +Найдем коммиты по теме “build”: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --grep "build:" +commit 994d8ff835893c46320c8948108615012a8d0651 +Author: PiapiyevaAV@mpei.ru +Date: Sat Mar 29 22:46:50 2025 +0300 + + build: добавлен файл проекта +Теперь коммиты, затрагивающие “project.cbp”: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log -- project.cbp +commit 994d8ff835893c46320c8948108615012a8d0651 +Author: PiapiyevaAV@mpei.ru +Date: Sat Mar 29 22:46:50 2025 +0300 + + build: добавлен файл проекта + +(Таким способом мы просмотрели информацию о коммите по измененному файлу и по теме коммита) + + +Просмотр коммитов + +Просмотрим тремя способами информацию о последнем коммите +(результат всех способов один, поэтому в отчете не повторялся) +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git show HEAD +commit ad49237d2c9f932d2e4129126ef7c57e4fe409e8 (HEAD -> main) +Author: PiapiyevaAV@mpei.ru +Date: Sat Mar 29 23:17:02 2025 +0300 + + git: создан коммит + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..60898a8 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj/ ++/project.depend + + +Далее также просматриваем информацию о предпоследнем коммите +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git show head~1 +commit bb2825269072f08b99988f24a2c215b043d60409 +Author: PiapiyevaAV@mpei.ru +Date: Sat Mar 29 22:59:06 2025 +0300 + + code: добавлена сумма а и б + +diff --git a/main.cpp b/main.cpp +index 03b22ce..867eb54 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; + return 0; + } + + +Просмотр изменений + +Добавим изменения в рабочую копию и посмотрим их с помощью команды git diff + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 867eb54..2ed6802 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,6 @@ int main() + int a, b; + cin >> a >> b; + cout << a + b; ++ cout << a*b; + return 0; + } + +В первой строке говорится что сравниваются две версии файла main.cpp (a/main.cpp – старая версия, b/main.cpp – новая версия). +Во второй строке - хеши версий файла в Git (867eb54 и 2ed6802) и права доступа к файлу (100644) (обычный файл с правами чтения/записи) +В третьей строке заголовок для старой версии файла (до изменений). +В четвертой заголовок для новой версии файла (после изменений). +Затем в пятой строке описание изменённого блока (-8,5 - в старой версии: 5 строк, начиная с 8-й строки, +8,6 - в новой версии: 6 строк, начиная с 8-й строки (добавилась 1 строка). +Затем показан код и зеленым выделена добавленная строка. + +Откат изменений +Вносим изменения в код, а потом откатываем их до состояния в опр.коммите с помощью команды git reset. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "code: добавлен вывод произведения" +[main cb37078] code: добавлен вывод произведения + 1 file changed, 1 insertion(+) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at a66d232 code: добавлен вывод разности двух чисел + +Теперь добавим над функцией main комментарий и уберем изменение другим способом — откатив этот файл к состоянию в последнем коммите +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + +Обмен кодом через удаленное хранилище + +Зарегистрируемся на Git УИТ + +Так как работа ведется не из университета и нет доступа к сети МЭИ, будем взаимодействовать с сервером по протоколу HTTP. +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/pyapi/.ssh/id_ed25519): +Created directory '/c/Users/pyapi/.ssh'. +Enter passphrase for "/c/Users/pyapi/.ssh/id_ed25519" (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/pyapi/.ssh/id_ed25519 +Your public key has been saved in /c/Users/pyapi/.ssh/id_ed25519.pub +The key fingerprint is: +SHA256:kmJ4Atoe6hGl7V5VGt40I0NF/4JRxD6c+AGdeBWCWvs pyapi@LAPTOP-H2THKBH4 +The key's randomart image is: ++--[ED25519 256]--+ +| .oo*+oo. | +| . =o=. | +|. . +o*B.. | +|.o+. .oOo=*. | +|.o=.+ o+Soo.o. | +| oo= ... E. | +|.... . | +|. o . | +| . . | ++----[SHA256]-----+ + +Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, используем программу-агент, которую достаточно запустить перед началом работы: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ ssh-add +Enter passphrase for /c/Users/pyapi/.ssh/id_ed25519: +Identity added: /c/Users/pyapi/.ssh/id_ed25519 (pyapi@LAPTOP-H2THKBH4) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINKsmPZK/F79ySvyzABB3IxXyCyWqrbqD39Pj6becSBP pyapi@LAPTOP-H2THKBH4 + +Затем в настройках аккаунта Github нужно добавить публичный ключ. +Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git remote set-url origin http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + +$ 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 +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git push -u origin main +warning: auto-detection of host provider took too long (>2000ms) +warning: see https://aka.ms/gcm/autodetect for more information. +warning: use of unencrypted HTTP remote URLs is not recommended; see https://aka.ms/gcm/unsaferemotes for more information. +Enumerating objects: 15, done. +Counting objects: 100% (15/15), done. +Delta compression using up to 4 threads +Compressing objects: 100% (13/13), done. +Writing objects: 100% (15/15), 2.04 KiB | 347.00 KiB/s, done. +Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + + + +К работе присоединяется боб. Клонируем репозитарий с помощью git clone. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob (master) +$ git clone http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git project +Cloning into 'project'... +remote: Enumerating objects: 15, done. +remote: Counting objects: 100% (15/15), done. +remote: Compressing objects: 100% (13/13), done. +remote: Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (15/15), done. +Resolving deltas: 100% (1/1), done. + +Перейдем в каталог Боба: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob (master) +$ cd project + +Настроим хранилище Боба: + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git config user.email "PiapiyevaAV@mpei.ru" + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git config user.name "PiapiyevaAV" + + +Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git commit -m "code: добавлен вывод произведения чисел" +[main 5e5ebad] code: добавлен вывод произведения чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 437 bytes | 437.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 http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + ad49237..5e5ebad main -> main + +Обновляем версию программы у Алисы + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/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), 417 bytes | 19.00 KiB/s, done. +From http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02 + ad49237..5e5ebad main -> origin/main + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 5e5ebad (origin/main, origin/HEAD) code: добавлен вывод произведения чисел +* ad49237 (HEAD -> main) git: создан коммит +* bb28252 code: добавлена сумма а и б +* bb4241b code: добавлена сумма а и б +* 994d8ff build: добавлен файл проекта +* abf5030 code: заготовка программы + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git pull --ff-only +Updating ad49237..5e5ebad +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Далее Алиса вносит новое изменение, а Боб его скачивает: + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "code: добавлен вывод деления а на b" +[main 15d2800] code: добавлен вывод деления а на b + 1 file changed, 1 insertion(+) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 417 bytes | 417.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 http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + 5e5ebad..15d2800 main -> main + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/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), 397 bytes | 44.00 KiB/s, done. +From http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02 + 5e5ebad..15d2800 main -> origin/main + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git pull --ff-only +Updating 5e5ebad..15d2800 +Fast-forward + main.cpp | 1 + + 1 file changed, 1 insertion(+) + +Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере. +Алиса: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m 'code: добавлен максимум' +[main e3a7493] code: добавлен максимум + 1 file changed, 10 insertions(+), 1 deletion(-) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 471 bytes | 471.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 http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + 22c82c5..e3a7493 main -> main +Боб: +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git commit -m "code: добавлен минимум" +[main 350301f] code: добавлен минимум + 1 file changed, 9 insertions(+) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git push +To http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'http://uit.mpei.ru/git/PiapiyevaAV/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. + + +Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub. +Загрузим версию с сервера + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/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), 451 bytes | 56.00 KiB/s, done. +From http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02 + 22c82c5..e3a7493 main -> origin/main + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 350301f (HEAD -> main) code: добавлен минимум +| * e3a7493 (origin/main, origin/HEAD) code: добавлен максимум +|/ +* 22c82c5 code:добавлена разность а и b +* 15d2800 code: добавлен вывод деления а на b +* 5e5ebad code: добавлен вывод произведения чисел +* ad49237 git: создан коммит +* bb28252 code: добавлена сумма а и б +* bb4241b code: добавлена сумма а и б +* 994d8ff build: добавлен файл проекта +* abf5030 code: заготовка программы + + +(Ветка main раздвоилась.) +Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 350301f... 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 350301f... code: добавлен минимум + +Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git rebase --continue +fatal: no rebase in progress + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 2fe44de (HEAD -> main) code: добавлен минимум +* e3a7493 (origin/main, origin/HEAD) code: добавлен максимум +* 22c82c5 code:добавлена разность а и b +* 15d2800 code: добавлен вывод деления а на b +* 5e5ebad code: добавлен вывод произведения чисел +* ad49237 git: создан коммит +* bb28252 code: добавлена сумма а и б +* bb4241b code: добавлена сумма а и б +* 994d8ff build: добавлен файл проекта +* abf5030 code: заготовка программы + +(Получили желаемый результат) +Отправим изменения на сервер. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 4 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 410 bytes | 410.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 http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + e3a7493..2fe44de main -> main + +В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git branch double + + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double) +$ git add main.cpp + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double) +$ git commit -m 'code: изменен тип переменных' +[double 5ac2d26] code: изменен тип переменных + 1 file changed, 1 insertion(+), 1 deletion(-) + +Затем переключается на ветку main. И синхронизирует её + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git fetch --all + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git reset --hard origin/main +HEAD is now at 2fe44de code: добавлен минимум + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 5ac2d26 (double) code: изменен тип переменных +| * 2fe44de (HEAD -> main, origin/main, origin/HEAD) code: добавлен минимум +|/ +* e3a7493 code: добавлен максимум +* 22c82c5 code:добавлена разность а и b +* 15d2800 code: добавлен вывод деления а на b +* 5e5ebad code: добавлен вывод произведения чисел +* ad49237 git: создан коммит +* bb28252 code: добавлена сумма а и б +* bb4241b code: добавлена сумма а и б +* 994d8ff build: добавлен файл проекта +* abf5030 code: заготовка программы + + +(Получаем одновременно две ветки) +Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub. + + +$ 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(-) + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git push +Enumerating objects: 8, done. +Counting objects: 100% (8/8), done. +Delta compression using up to 4 threads +Compressing objects: 100% (4/4), done. +Writing objects: 100% (4/4), 590 bytes | 590.00 KiB/s, done. +Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git + f7b6ce9..20bee54 main -> main + +pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --all --oneline --graph +* 5197778 (HEAD -> main, origin/main, origin/HEAD) Merge branch 'double' +|\ +| * 5ac2d26 (double) code: изменен тип переменных +* | 2fe44de code: добавлен минимум +|/ +* e3a7493 code: добавлен максимум +* 22c82c5 code:добавлена разность а и b +* 15d2800 code: добавлен вывод деления а на b +* 5e5ebad code: добавлен вывод произведения чисел +* ad49237 git: создан коммит +* bb28252 code: добавлена сумма а и б +* bb4241b code: добавлена сумма а и б +* 994d8ff build: добавлен файл проекта +* abf5030 code: заготовка программы