From 9d87bb8aa88aa1f9139ad24492803d33826048e6 Mon Sep 17 00:00:00 2001 From: AndrosovDS Date: Mon, 24 Mar 2025 10:51:36 +0000 Subject: [PATCH] add report --- report.txt | 823 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 823 insertions(+) create mode 100644 report.txt diff --git a/report.txt b/report.txt new file mode 100644 index 0000000..c72b13b --- /dev/null +++ b/report.txt @@ -0,0 +1,823 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Андросов Д. С. +Группа: А-03-24 +Проверил: Козлюк Д. А. + +Примечание: работа выполнялась на Windows. + +1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ + +2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ ls + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ + +3. Создал каталоги Алисы и Боба, создал каталог "project", +изучил команду "cd" в процессе: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ mkdir alice + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ mkdir bob + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ cd bob + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob +$ cd .. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 +$ cd alice + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice +$ ls +project/ + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice +$ cd project + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project +$ + + +4. Инициализировал репозитарий: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project +$ git init +hint: Using 'master' as the name for the initial branch. This default branch name +hint: is subject to change. To configure the initial branch name to use in all +hint: of your new repositories, which will suppress this warning, call: +hint: +hint: git config --global init.defaultBranch +hint: +hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +hint: 'development'. The just-created branch can be renamed via this command: +hint: +hint: git branch -m +Initialized empty Git repository in C:/Users/Diman3000/Desktop/lab02/alice/project/.git/ + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (master) +$ + +Поменяем имя ветки на main: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (master) +$ git branch -m main + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ ls -A +.git/ + +Настроим репозитарий Алисы, чтобы коммиты были от ее имени: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.name 'Alice (AndrosovDS)' + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.email 'AndrosovDS@mpei.ru' + +5. Создание коммитов: + +Запустиv CodeBlocks и создадим проект в репозитарии Алисы + +Имеем следующую структуру файлов и каталогов: + +lab02 +├── alice +│ └── project <--------- текущий рабочий каталог +│ ├── .git <--------- создан командой "git init" +│ ├── bin <--------- создан CodeBlocks при сборке +│ ├── obj <--------- (то же самое) +│ ├── main.cpp <-- код программы +│ └── project.cbp <-- файл проекта +└── bob + +Вернувшись в Git Bash, просмотрим состояние рабочей копии: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main <-- находимся на ветке main + +No commits yet <-- сообщение, что нет ни одного коммита + +Untracked files: <-- git обнаружил файлы в рабочем каталоге, но он их не отслеживает + (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.cpp в индекс: +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +Посмотрим изменения: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/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 + +Выполним коммит с файлом main.cpp и коротким сообщением: +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) eb352f8] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + + +Добавим файл project.cbp в индекс и сделаем коммит с ним, тема — build. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/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 + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'build: add project file' +[main 95259f2] build: add project file + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +Заменим тело функции main() на ввод двух чисел и посмотрим состояние репозитария: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/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 <-- Указывает, что файл 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") + +1 способ коммита. Сначала выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m "code: ввод двух чисел" +[main 9b3e59b] code: ввод двух чисел + 1 file changed, 3 insertions(+), 2 deletions(-) + +Добавил в программу вывод суммы a и b. +2 способ коммита. Добавить в индекс все изменения, затем сделать коммит: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add -u + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m "code: вывод суммы двух чисел" +[main 579e11b] code: вывод суммы двух чисел + 1 file changed, 1 insertion(+) + +Добавил в программу вывод разности a и b. + +3 способ коммита. Добавить все изменения в индекс и сделать коммит в один шаг: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m "code: вывод разности двух чисел" +[main 0ccb145] code: вывод разности двух чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + +6. Игнорирование файлов: + +Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: +/bin + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + project.layout + +nothing added to commit but untracked files present (use "git add" to track) +bin не отображается + +Занесем в список игнорируемых каталоги bin и obj и файлы *.layout. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ 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) + +Создадим коммит с .gitignore, тема — git + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add .gitignore + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m "git: игнорирование bin obj .layout" +[main 0d5ee38] git: игнорирование bin obj .layout + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + +7. Просмотр истории: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log +commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:26:46 2025 +0300 + + git: игнорирование bin obj .layout + +commit 0ccb145dc7129139b4ddabaefcd9a09a88a741c1 +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:18:34 2025 +0300 + + code: вывод разности двух чисел + +commit 579e11ba75a40370ec6d4f51e08df2f21f7952f3 +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:17:08 2025 +0300 + + code: вывод суммы двух чисел + +commit 9b3e59be040524543ff7286b78562e7683db9302 +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:15:21 2025 +0300 + + code: ввод двух чисел + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --stat +commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) --- коммит, хэш коммита, ветка HEAD указывает на ветку main +Author: Alice (AndrosovDS) --- Автор +Date: Sun Mar 16 12:26:46 2025 +0300 --- Дата + + git: игнорирование bin obj .layout --- Сообщение коммита + + .gitignore | 3 +++ --- изменен gitignore, добавлено 3 строки + 1 file changed, 3 insertions(+) --- изменен 1 файл, добавлено 3 строки + +commit 0ccb145dc7129139b4ddabaefcd9a09a88a741c1 +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:18:34 2025 +0300 + + code: вывод разности двух чисел + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 579e11ba75a40370ec6d4f51e08df2f21f7952f3 +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:17:08 2025 +0300 + + code: вывод суммы двух чисел + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate +0d5ee38 (HEAD -> main) git: игнорирование bin obj .layout +0ccb145 code: вывод разности двух чисел +579e11b code: вывод суммы двух чисел +9b3e59b code: ввод двух чисел +95259f2 build: add project file +eb352f8 code: заготовка программы + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 0d5ee38 (HEAD -> main) git: игнорирование bin obj .layout +* 0ccb145 code: вывод разности двух чисел +* 579e11b code: вывод суммы двух чисел +* 9b3e59b code: ввод двух чисел +* 95259f2 build: add project file +* eb352f8 code: заготовка программы + +Коммиты по теме build +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$git log --grep "build:" +commit 95259f299a9be05e4ac3416bc06881b075bc6147 +Author: Alice (AndrosovDS) +Date: Sun Mar 9 14:56:55 2025 +0300 + + build: add project file + +Коммиты, затрагивающие project.cbp +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log -- project.cbp +commit 95259f299a9be05e4ac3416bc06881b075bc6147 +Author: Alice (AndrosovDS) +Date: Sun Mar 9 14:56:55 2025 +0300 + + build: add project file + +Посмотрим коммит тремя способами. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show HEAD +commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:26:46 2025 +0300 + + git: игнорирование bin obj .layout + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..d85abef +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/*.layout + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show main +commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:26:46 2025 +0300 + + git: игнорирование bin obj .layout + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..d85abef +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/*.layout + +Посмотрим предпоследний коммит + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show 0d5ee3840cf42d4bb597d7ff858272ca307600bd~1 +commit 0ccb145dc7129139b4ddabaefcd9a09a88a741c1 +Author: Alice (AndrosovDS) +Date: Sun Mar 16 12:18:34 2025 +0300 + + code: вывод разности двух чисел + +diff --git a/main.cpp b/main.cpp +index 4364dbc..fd75bba 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'; + } + +Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp ->будет показана разница между двумя версиями файла main.cpp +index fd75bba..91f8982 100644 +--- a/main.cpp ->следующие строки относятся к старой версии файла main.cpp. Строки, начинающиеся с ---, берутся из версии “a”, то есть из зафиксированной версии. ++++ b/main.cpp -> следующие строки относятся к новой версии файла main.cpp. Строки, начинающиеся с +++, берутся из версии “b”, то есть из текущей рабочей копии. +@@ -8,5 +8,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cout << "A + B = " << a + b << '\n' +- << "A - B = " << a - b << '\n'; ++ << "A - B = " << a - b << '\n' ++ << "A * B = " << a * b << '\n'; -> Строка, начинающаяся с +: Это добавленная строка в новой версии файла main.cpp. Добавлена строка, которая выводит результат умножения A * B. + } + +Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности. +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff HEAD~3 HEAD~1 +diff --git a/main.cpp b/main.cpp +index eac5055..fd75bba 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,4 +7,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } + +Коммит произведения + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m "code: Вывод произведения двух чисел" +[main aa40eec] code: Вывод произведения двух чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + + +8. Откат изменений: + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at 0d5ee38 git: игнорирование bin obj .layout + +Добавим над функцией main() комментарий: +// you may type whatever you want + +Уберем изменения в main.cpp другим способом — откатив этот файл к состоянию в последнем коммите (HEAD) +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + + +9. Обмен кодом через удаленное хранилище +Зарегистрировался на Git УИТ +Создал пару ключей +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +... + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 2025 + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-add +Enter passphrase for /c/Users/Diman3000/.ssh/id_ed25519: +Identity added: /c/Users/Diman3000/.ssh/id_ed25519 (Diman3000@DESKTOP-5UPO29D) + +Открытый ключ: +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDvMW7I5s1bRAVK0UBHjeQ11RESmyBGs7GQIUCBfegT5 Diman3000@DESKTOP-5UPO29D + +Скопировал открытый ключ и добавил в список открытых ключей своей учетной записи + +Создал репозитарий под названием cs-lab02 + +Соединение с сервером(Через http, работа выполнялась из дома, VPN МЭИ настроить не получилось) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git remote set-url origin http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push -u origin main +warning: use of unencrypted HTTP remote URLs is not recommended; see https://aka.ms/gcm/unsaferemotes for more information. +Enumerating objects: 18, done. +Counting objects: 100% (18/18), done. +Delta compression using up to 16 threads +Compressing objects: 100% (16/16), done. +Writing objects: 100% (18/18), 2.30 KiB | 393.00 KiB/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 http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +Получение проекта с сервера +Клонирование проекта: +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob +$ git clone http://uit.mpei.ru/git/AndrosovDS/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. + + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob +$ cd project + +"На машине Боба" настроил Git, как это делалось для Алисы + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.name 'Bob (AndrosovDS)' + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.email 'AndrosovDS@mpei.ru' + +«На машине Боба» добавил в программу печать произведения чисел и сделал коммит. Просмотрел последний коммит и убедился, что он сделан от имени Боба. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -a -m "code: печать произведения двух чисел" +[main df8b691] code: печать произведения двух чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log +commit df8b691468f90eaa330fedeaf1176ff45f53fc00 (HEAD -> main) +Author: Bob (AndrosovDS) +Date: Sun Mar 16 14:03:09 2025 +0300 + + code: печать произведения двух чисел + +Отправил коммит на сервер + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 432 bytes | 432.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/AndrosovDS/cs-lab02.git + 0d5ee38..df8b691 main -> main + +«На машине Алисы» выполнил загрузку изменений +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/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), 412 bytes | 82.00 KiB/s, done. +From http://uit.mpei.ru/git/AndrosovDS/cs-lab02 + 0d5ee38..df8b691 main -> origin/main + +Просмотрел историю всех веток +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* df8b691 (origin/main, origin/HEAD) code: печать произведения двух чисел +* 0d5ee38 (HEAD -> main) git: игнорирование bin obj .layout +* 0ccb145 code: вывод разности двух чисел +* 579e11b code: вывод суммы двух чисел +* 9b3e59b code: ввод двух чисел +* 95259f2 build: add project file +* eb352f8 code: заготовка программы + +Продвинул ветку main к скачанной версии +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull --ff-only +Updating 0d5ee38..df8b691 +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + + +«От имени Алисы» добавил в программу печать деления, сделал коммит, отправил его на сервер и получил новую версию «на машине Боба». Иначе говоря, повторил шаги выше, поменяв местами роли Алисы и Боба. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m "code: деление двух чисел" +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it +[main 9d73a40] code: деление двух чисел + 2 files changed, 3 insertions(+), 1 deletion(-) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 7, done. +Counting objects: 100% (7/7), done. +Delta compression using up to 16 threads +Compressing objects: 100% (4/4), done. +Writing objects: 100% (4/4), 468 bytes | 468.00 KiB/s, done. +Total 4 (delta 2), 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/AndrosovDS/cs-lab02.git + df8b691..9d73a40 main -> main + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git pull +remote: Enumerating objects: 7, done. +remote: Counting objects: 100% (7/7), done. +remote: Compressing objects: 100% (4/4), done. +remote: Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (4/4), 448 bytes | 11.00 KiB/s, done. +From http://uit.mpei.ru/git/AndrosovDS/cs-lab02 + df8b691..9d73a40 main -> origin/main +Updating df8b691..9d73a40 +Fast-forward + main.cpp | 3 ++- + project.cbp | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + + + +10. Разрешение конфликтов правок при совместной работе + + +«На машине Алисы» дополнил программу печатью максимума, сделал коммит и отправил его на сервер. +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m "code: Печать максимума" +[main 4be5e65] code: Печать максимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 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/AndrosovDS/cs-lab02.git + 9d73a40..4be5e65 main -> main + +«На машине Боба» дополнил программу печатью минимума, сделал коммит и попытался отправить его на сервер. +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -a -m "code: Печать минимума" +[main 81a9926] code: Печать минимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'http://uit.mpei.ru/git/AndrosovDS/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. + +Как можно видеть, удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите. + +«От лица Боба» загрузил коммиты из удаленного хранилища и отобразил историю всех веток + +Diman3000@DESKTOP-5UPO29D 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), 397 bytes | 12.00 KiB/s, done. +From http://uit.mpei.ru/git/AndrosovDS/cs-lab02 + 9d73a40..4be5e65 main -> origin/main + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 81a9926 (HEAD -> main) code: Печать минимума +| * 4be5e65 (origin/main, origin/HEAD) code: Печать максимума +|/ +* 9d73a40 code: деление двух чисел +* df8b691 code: печать произведения двух чисел +* 0d5ee38 git: игнорирование bin obj .layout +* 0ccb145 code: вывод разности двух чисел +* 579e11b code: вывод суммы двух чисел +* 9b3e59b code: ввод двух чисел +* 95259f2 build: add project file +* eb352f8 code: заготовка программы + + +Нужно поместить коммит Боба, поверх коммита Алисы + +Diman3000@DESKTOP-5UPO29D 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 81a9926... 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 81a9926... code: Печать минимума + +Однако эта команда завершается с ошибкой, сообщающей о конфликте в main.cpp +Посмотрим состояние хранилища +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ git status +interactive rebase in progress; onto 4be5e65 -в данный момент выполняется rebase +Last command done (1 command done): + pick 81a9926 code: Печать минимума +No commands remaining. +You are currently rebasing branch 'main' on '4be5e65'. + (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 + +Untracked files: + (use "git add ..." to include in what will be committed) + project.depend + +no changes added to commit (use "git add" and/or "git commit -a") + +git status говорит нам, что мы находимся в середине rebase, возник конфликт в main.cpp + +Удалил метки конфликта, отредактировал код(включает правки Алисы и Боба), программа компилируется и работает + +Добавил файл в индекс и продолжил прерванную операцию rebase +[detached HEAD 1cc8709] code: Печать минимума + 1 file changed, 2 insertions(+), 1 deletion(-) +Successfully rebased and updated refs/heads/main. + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git status +On branch main +Your branch is ahead of 'origin/main' by 1 commit. + (use "git push" to publish your local commits) + +Untracked files: + (use "git add ..." to include in what will be committed) + project.depend + +nothing added to commit but untracked files present (use "git add" to track) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 422 bytes | 422.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/AndrosovDS/cs-lab02.git + 4be5e65..1cc8709 main -> main + +11. Использование веток + +Создал ветку и переключился на нее +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git branch double + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +В коде заменил тип переменных a и b на double и сделал коммит + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (double) +$ git commit -a -m "code: переменные типа double" +[double 912a770] code: переменные типа double + 1 file changed, 1 insertion(+), 1 deletion(-) + +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --graph --decorate --oneline --all +* 912a770 (double) code: переменные типа double +| * 1cc8709 (HEAD -> main, origin/main, origin/HEAD) code: Печать минимума +|/ +* 4be5e65 code: Печать максимума +* 9d73a40 code: деление двух чисел +* df8b691 code: печать произведения двух чисел +* 0d5ee38 git: игнорирование bin obj .layout +* 0ccb145 code: вывод разности двух чисел +* 579e11b code: вывод суммы двух чисел +* 9b3e59b code: ввод двух чисел +* 95259f2 build: add project file +* eb352f8 code: заготовка программы + +Слил ветку double в main +Auto-merging main.cpp +Merge made by the 'ort' strategy. + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +История всех веток +Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --graph --decorate --oneline --all +* afabfb9 (HEAD -> main, origin/main, origin/HEAD) Merge branch 'double' +|\ +| * 912a770 (double) code: переменные типа double +* | 1cc8709 code: Печать минимума +|/ +* 4be5e65 code: Печать максимума +* 9d73a40 code: деление двух чисел +* df8b691 code: печать произведения двух чисел +* 0d5ee38 git: игнорирование bin obj .layout +* 0ccb145 code: вывод разности двух чисел +* 579e11b code: вывод суммы двух чисел +* 9b3e59b code: ввод двух чисел +* 95259f2 build: add project file +* eb352f8 code: заготовка программы +