From 0cc2f7b235173940377dc07ca313d5c2b19afae2 Mon Sep 17 00:00:00 2001 From: PodlovchenkoDD Date: Mon, 24 Mar 2025 14:13:47 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Подловченко ДД А-01-24 --- отчёт.txt | 437 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 437 insertions(+) create mode 100644 отчёт.txt diff --git a/отчёт.txt b/отчёт.txt new file mode 100644 index 0000000..545685b --- /dev/null +++ b/отчёт.txt @@ -0,0 +1,437 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Подловченко Д. Д. +Группа: А-01-24 +Проверил: Козлюк Д. А. + +Примечание: работа выполнялась на Windows. + + +1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +Admin@zhi-es MINGW64 ~/Desktop/lab02 +$ + + +2. Просмотрел файлы в рабочем каталоге командой "ls" --- пусто: + +Admin@zhi-es MINGW64 ~/Desktop/lab02 +$ ls + +Admin@zhi-es MINGW64 ~/Desktop/lab02 +$ + + +3. Создал каталоги Алисы и Боба, создал каталог "project", +изучил команду "cd" в процессе: + +Admin@zhi-es MINGW64 ~/Desktop/lab02 +$ mkdir alice +mkdir bob + +Admin@zhi-es MINGW64 ~/Desktop/lab02 +$ cd alice + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice +$ cd project + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project +$ cd .. + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice +$ cd project + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project +$ + + +4. Инициализировал репозитарий: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/Admin/Desktop/lab02/alice/project/.git/ + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ + +сообщение-подсказку, строки которого начинаются с hint: не выдало, +поэтому менять название на main буду позже + + +5. Настроил репозитарий Алисы, чтобы коммиты были от ее имени: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.name 'Alice (PodlovchenkoDD)' + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.email 'PodlovchenkoDD@mpei.ru' + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ + + +6. Запустил CodeBlocks и создал проект в репозитарии Алисы, + Resulting filename: "C:\Users\Admin\Desktop\lab02\alice\project\project.cbp", + Собрал проект и на этом этапе структура файлов следующая: + lab02 + ├── alice + │   └── project <--------- текущий рабочий каталог + │   ├── .git <--------- создан командой "git init" + │   ├── bin <--------- создан CodeBlocks при сборке + │   ├── obj <--------- (то же самое) + │   ├── main.cpp <-- код программы + │   └── project.cbp <-- файл проекта + └── bob + + +7. Вернувшись в Git Bash, просмотрел состояние рабочей копии: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master + +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) + +Данные строки показывают, что пока не существует коммитов и есть не отслеживаемые файлы, +которые пока не индексированы. + +8. Начинаю отслеживать "main.cpp", добавляя файл в индекс и + выполняю коммит с файлом main.cpp и коротким сообщением:: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add main.cpp +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m 'code: заготовка программы' +[master (root-commit) 814a45e] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +9. Заменил тело функции main() на ввод двух чисел, пересобрал и + увидел различие: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.cbp + +no changes added to commit (use "git add" and/or "git commit -a") + +Появилось уведомление, что "main.cpp" модифицировался и просит использовать другую команду, +чтобы занести изменения в репозиторий + + +10. Занёс все нужные файлы в .gitignore и закоммитил его с заголовком "git": + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add .gitignore + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m "git" +[master 79acfbc] git + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ + + +11. Попробовав все вариации команд git log, в частности git log --stat: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --stat +commit 79acfbc5460e6b1320fef4b339237d0d7eb775a4 (HEAD -> master) +Author: Alice (PodlovchenkoDD) +Date: Sun Mar 23 19:24:08 2025 +0300 + + git + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ + +команда выводит хэш коммита -> автора -> дату -> содержимое коммита -> +-> название и количество затронутых файлов + + +12. Посмотрел предпоследний коммит с помощью команды git show HEAD~1: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git show HEAD~1 +commit 814a45e6ab5c823aea95d0b93aae7481724b71e9 +Author: Alice (PodlovchenkoDD) +Date: Sun Mar 23 18:16:06 2025 +0300 + + code: заготовка программы + +diff --git a/main.cpp b/main.cpp +new file mode 100644 +index 0000000..b4392ec +--- /dev/null ++++ b/main.cpp +@@ -0,0 +1,9 @@ ++#include ++ ++using namespace std; ++ ++int main() ++{ ++ cout << "Hello world!" << endl; ++ return 0; ++} + +13. Внес изменения в main.cpp: добавил печать произведения чисел, но не стал пока делать коммит. + С помощью git diff получил: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master) +$ git diff +diff --git a/main.cpp b/main.cpp +index b4392ec..64da2d3 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,11 @@ 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' ++ << "A * B = " << a * b << '\n'; ++ + } + +Как видно команда отображает какие строки исчезли(-) и какие прибавились(+), так же хэш последнего коммита. + + +14. Успешно подключил рабочую версию к удалённой, отправил проект на сервер... + +15. Получил проект с помощью git clone в папку боба и зарегистрировался(git config) от имени боба: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main) +$ git clone git@uit.mpei.ru:PodlovchenkoDD/cs-lab02.git project +Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.name "Bob (PodlovchenkoDD)" +Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.email "PodlovchenkoDD@mpei.ru" + +16. Отправил коммит с произведением от имени боба на сервер с помощью git push и принял изменения от имени Алисы с помощью git fetch: +Боб: +Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519': +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), 365 bytes | 365.00 KiB/s, done. +Total 3 (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:PodlovchenkoDD/cs-lab02.git + ccc711f..ce2e41a main -> main + +Алиса: +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git fetch +Enter passphrase for key '/c/Users/Admin/.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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 345 bytes | 11.00 KiB/s, done. +From uit.mpei.ru:PodlovchenkoDD/cs-lab02 + ccc711f..ce2e41a main -> origin/main + +17. Просмотрел историю всех веток(git log --oneline --decorate --all --graph) и подвинул ветку main к скачанной версии(git pull --ff-only): + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* ce2e41a (origin/main, origin/HEAD) code: произведение после ошибки +* ccc711f (HEAD -> main) добавление proj +* 3075de5 code: без произведения перед бобом +* 5c5d769 first commit +* ca1511a (master) code:вывод произведения +* 79acfbc git +* 814a45e code: заготовка программы + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull --ff-only +Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519': +Updating ccc711f..ce2e41a +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +18. Перешёл к "Разрешение конфликтов правок при совместной работе", синхронизировал у обоих пользователей: + +cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n'; + +19. После добавления в код минимума(Алиса) и максимума(боб), после отправки на сервер +возникла ожидаемая ошибка, git rebase origin/main и после git show HEAD можем заметить: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main) +$ git show HEAD +commit e64fb31d7e1cc64f067052811999a092cc9a7306 (HEAD -> main) +Author: Bob (PodlovchenkoDD) +Date: Mon Mar 24 15:49:52 2025 +0300 + + Добавление максимума от лица боба + +diff --git a/main.cpp b/main.cpp +index 38bc977..2f6e5f4 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -11,4 +11,13 @@ int main() + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n'; ++ if(a > b){ ++ cout << "Max: " << a << '\n'; ++ } ++ if(b > a){ ++ cout << "Max: " << b << '\n'; ++ } ++ else{ ++ cout << "Max: " << a << b << '\n'; ++ } + +То есть последний коммит на вывод максимума + +20. После выхода из состояния rebase(git add main.cpp +git rebase --continue) и редактирования файла получаем: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main) +$ git show HEAD +commit 32f18606672dd7f3fb41694b7ba161c7798b7274 (HEAD -> main) +Author: Bob (PodlovchenkoDD) +Date: Mon Mar 24 15:49:52 2025 +0300 + + Добавление максимума от лица боба + +diff --git a/main.cpp b/main.cpp +index 5d5692a..d6dbc1d 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -11,6 +11,7 @@ int main() + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n' + << "A / B = " << a / b << '\n'; ++ + if(a < b){ + cout << "Min: " << a << '\n'; + } +@@ -19,5 +20,15 @@ int main() + } + else{ + cout << "Min: " << a << b << '\n'; ++ ++ if(a > b){ ++ cout << "Max: " << a << '\n'; ++ } ++ if(b > a){ ++ cout << "Max: " << b << '\n'; ++ } ++ else{ ++ cout << "Max: " << a << b << '\n'; ++ + } + } + +21. История всех веток после замены типа на double у Алисы: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* d48e22d (double) А и б теперь double +| * 32f1860 (origin/main, origin/HEAD) Добавление максимума от лица боба +|/ +* da101ef (HEAD -> main) Добавление минимума для Алисы +* d9df2c2 Разрешение конфликтов правок +* ce2e41a code: произведение после ошибки +* ccc711f добавление proj +* 3075de5 code: без произведения перед бобом +* 5c5d769 first commit +* ca1511a (master) code:вывод произведения +* 79acfbc git +* 814a45e code: заготовка программы + +22. 1)После создания ветки double, переключаемся на неё: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git branch double + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +2)Далее меняю тип данных на double и переключаюсь обратно на main. + +3)После слияниe (git merge double): + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git merge double +Updating da101ef..d48e22d +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +4)отправляю новый коммит: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519': +To uit.mpei.ru:PodlovchenkoDD/cs-lab02.git +Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519': +Auto-merging main.cpp +Merge made by the 'ort' strategy. + main.cpp | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +5)Отправляю последний коммит со всеми изменениями и сверяю логи: + +Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* f02ac50 (HEAD -> main) Merge branch 'main' of uit.mpei.ru:PodlovchenkoDD/cs-lab02 +|\ +| * 32f1860 (origin/main, origin/HEAD) Добавление максимума от лица боба +* | d48e22d (double) А и б теперь double +|/ +* da101ef Добавление минимума для Алисы +* d9df2c2 Разрешение конфликтов правок +* ce2e41a code: произведение после ошибки +* ccc711f добавление proj +* 3075de5 code: без произведения перед бобом +* 5c5d769 first commit +* ca1511a (master) code:вывод произведения +* 79acfbc git +* 814a45e code: заготовка программы + +Всего получилось 11 коммитов, потому что много раз делал повторные действия) \ No newline at end of file