From a54244028ca535f6f59aadda2946bcb970ee0b7e Mon Sep 17 00:00:00 2001 From: "Alice (GordiyevskikDA)" Date: Sun, 25 Feb 2024 08:30:13 +0300 Subject: [PATCH] =?UTF-8?q?report:=20=D0=94=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=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report.md | 897 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 897 insertions(+) create mode 100644 report.md diff --git a/report.md b/report.md new file mode 100644 index 0000000..f2f5c56 --- /dev/null +++ b/report.md @@ -0,0 +1,897 @@ +# Отчет по лабораторной работе № 2 «Система контроля версий Git» + +Выполнил: Гордиевских Д. А. \ +Группа: А-01-23 \ +Проверил: Козлюк Д. А. + +Примечание: работа выполнялась на Windows в IDE Visual studio 2022. +Это значит, что на этапе добавления файлов проекта будет добавлено больше файлов + +1. Создал на рабочем столе каталог LABA2 и запустил в нем Git Bash, приглашение: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2 +$ +``` + +2. Просмотрел файлы в рабочем каталоге можно командой `ls` — пусто: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2 +$ ls + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2 +$ +``` + +3. Создал каталоги Алисы и Боба, создал каталог `project`, +изучил команду `cd` в процессе: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2 +$ mkdir alice + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2 +$ mkdir bob + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2 +$ cd alice/ + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice +$ mkdir project + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice +$ cd project/ + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project +$ cd .. + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice +$ cd project/ +``` + +4. Инициализировал репозитарий: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project +$ git init +Initialized empty Git repository in C:/Users/gorda/OneDrive/Рабочий стол/LABA2/alice/project/.git/ + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +``` + +У меня имя ветки по умолчанию не настроено. +Git создал ветку под названием `master`, что видно в приглашении терминала. +Подсказка о смене ветки не появилась. Позже имя ветки будет изменено на `main` + +5. Настраиваем имя пользователя и email + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +$ git config user.name "Alice (GordiyevskikDA)" + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +$ git config user.email "gordiyevskikda@mpei.ru" +``` + +6. Просмотрим статус репозитария + +``` +$ git status +On branch master + +No commits yet + +Untracked files: + (use "git add ..." to include in what will be committed) + .vs/ + main.cpp + main.sln + main.vcxproj + main.vcxproj.filters + main.vcxproj.user + +nothing added to commit but untracked files present (use "git add" to track) +``` + +В ветке MASTER отсутствуют коммиты. Приведён список файлов, незанесённых под контроль версий +Подсказка: Для добавления файлов нужно написать команду из скобок + +7. Добавим main.cpp и посмотрим статус репозитария + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +$ git status +On branch master + +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) + .vs/ + main.sln + main.vcxproj + main.vcxproj.filters + main.vcxproj.user + +``` +Git status показывает, что в изменениях для следующего коммита присутствует новый файл main.cpp + +8. Закоммитим main.cpp + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +$ git commit -m 'code: заготовка программы' +[master (root-commit) 6f61cde] code: заготовка программы + 1 file changed, 20 insertions(+) + create mode 100644 main.cpp +``` + +9. Переименуем ветку из master в main +Добавим под контроль версий файлы проекта. Т.к используется VS, необходимо добавить 4 файла +И, соответственно, сразу создаём коммит "code:..." + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (master) +$ git branch -m main + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.sln + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.vcxproj + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.vcxproj.filters + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.vcxproj.user + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m 'biuld: добавлены файлы проекта' +[main ff38e89] biuld: добавлены файлы проекта + 4 files changed, 192 insertions(+) + create mode 100644 main.sln + create mode 100644 main.vcxproj + create mode 100644 main.vcxproj.filters + create mode 100644 main.vcxproj.user +``` + +10. Изменим main.cpp, добавив ввод, но не обновим этот файл в git. +Посмотрим статус репозитория: +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/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) + .vs/ + +no changes added to commit (use "git add" and/or "git commit -a") +``` +Видим, что в ветке main есть изменения не поставленные в очередь коммита, +т.е изменённые: main.cpp. +Если файл изменён, пишется "MODIFIED", если добавлен "New file" + +11. Создадим коммит с вводом чисел: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m "code: Добавлена сумма" +[main 8691b4c] code: Добавлена сумма + 1 file changed, 6 insertions(+), 16 deletions(-) +``` +Здесь я написал неправильную тему коммита: случайно посмотрел на следующий шаг с суммой +Т.к VS 2022 в новом проекте создаёт текстовые подсказки, соответственно, они были добавлены при первом коммите +"16 deletions(-)" означает, что я стёр эти 16 строк подсказок от VS + +12. Добавим в программу вывод суммы и сделаем коммит, а потом и разность: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add -u + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m "code: Теперь точно сумма" +[main 8420143] code: Теперь точно сумма + 1 file changed, 1 insertion(+) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -a -m "code: Вывод разности" +[main 666c1db] code: Вывод разности + 1 file changed, 1 insertion(+), 1 deletion(-) +``` + +13. Создал файл .gitignore и занёс в него сначала "/x64" и "IgnoreMe.txt" +Между занесениями вводил git status +Также внесём в git данный файл + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + .vs/ + +nothing added to commit but untracked files present (use "git add" to track) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + .vs/ + +nothing added to commit but untracked files present (use "git add" to track) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add .gitignore + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m "git: Добавлен gitignore" +[main 47a638a] git: Добавлен gitignore + 1 file changed, 2 insertions(+) + create mode 100644 .gitignore +``` +Теперь в git не будут заноситься каталог /x64 и IgnoreMe.txt + +14. Посмотрим историю коммитов в трёх исполнениях +Просто вывод, сжато и сжато+дерево + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log +commit 47a638ac2e5b67440d3b54789198e27d6f0b96a6 (HEAD -> main) +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 08:06:21 2024 +0300 + + git: Добавлен gitignore + +commit 666c1db22fe3d91cbbdfa0e5f5bfe57422085a44 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 08:03:11 2024 +0300 + + code: Вывод разности + +commit 8420143b31550bed0968db18177865aa4abd663c +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 08:02:25 2024 +0300 + + code: Теперь точно сумма + +commit 8691b4cd655d37576450d0c7f1c13f25443d21b1 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 08:01:13 2024 +0300 + + code: Добавлена сумма + +commit ff38e89c0504016c1e017d7a0a92036a71024ba8 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 07:58:44 2024 +0300 + + biuld: добавлены файлы проекта + +commit 6f61cde9d24a041fa32fd9a7dc0bdd84c5413d54 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 07:57:05 2024 +0300 + + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --oneline --decorate +47a638a (HEAD -> main) git: Добавлен gitignore +666c1db code: Вывод разности +8420143 code: Теперь точно сумма +8691b4c code: Добавлена сумма +ff38e89 biuld: добавлены файлы проекта +6f61cde code: заготовка программы + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --oneline --decorate --all --graph +* 47a638a (HEAD -> main) git: Добавлен gitignore +* 666c1db code: Вывод разности +* 8420143 code: Теперь точно сумма +* 8691b4c code: Добавлена сумма +* ff38e89 biuld: добавлены файлы проекта +* 6f61cde code: заготовка программы +``` + +15. Введём git log --stat и посмотрим, что он скажет относительно последнего коммита + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --stat +commit 47a638ac2e5b67440d3b54789198e27d6f0b96a6 (HEAD -> main) +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 08:06:21 2024 +0300 + + git: Добавлен gitignore + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) +``` +Показывается хэш коммита, кто его сделал, точное время создания коммита с часовым поясом, +тема коммита, добавленный файл. Показывается, сколько файлов изменено и сколько строк в этом файле вставлено + +16. Посмотрим коммиты с темой "build" и коммиты, относящиеся к main.cpp + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log -- main.sln +commit ff38e89c0504016c1e017d7a0a92036a71024ba8 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 07:58:44 2024 +0300 + + biuld: добавлены файлы проекта + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --grep "biuld" +commit ff38e89c0504016c1e017d7a0a92036a71024ba8 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 07:58:44 2024 +0300 + + biuld: добавлены файлы проекта +``` + +17. Посмотрим предпоследний коммит + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git show HEAD~1 +commit 666c1db22fe3d91cbbdfa0e5f5bfe57422085a44 +Author: Alice (GordiyevskikDA) +Date: Sat Feb 24 08:03:11 2024 +0300 + + code: Вывод разности + +diff --git a/main.cpp b/main.cpp +index 74516c3..8b0c291 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,5 @@ 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'; + } +\ No newline at end of file +``` +Показывается хэш, автор, дата, время, тема. Код программы: - означает удаление указанной строки, а + добавление + +18. Добавим печать произведения в программу но не станем пока делать коммит +Посмотрим изменения в рабочей копии + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 8b0c291..6192c68 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,5 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A * B = " << a * b << '\n'; + } +\ No newline at end of file +``` +Показывается хэш, автор, дата, время, тема. Код программы: - означает удаление указанной строки, а + добавление + +19. Посмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности +Для этого используем хэши этих коммитов, которые написаны сильно выше + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git diff 6f61cde 666c1db +diff --git a/main.cpp b/main.cpp +index 8118e09..8b0c291 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -1,20 +1,11 @@ +-// main.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. +-// ++#include + +-#include ++using namespace std; + + int main() + { +- std::cout << "Hello World!\n"; +-} +- +-// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" +-// Отладка программы: F5 или меню "Отладка" > "Запустить отладку" +- +-// Советы по началу работы +-// 1. В окне обозревателя решений можно добавлять файлы и управлять ими. +-// 2. В окне Team Explorer можно подключиться к системе управления версиями. +-// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения. +-// 4. В окне "Список ошибок" можно просматривать ошибки. +-// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода. +-// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл. ++ cout << "Enter A and B: "; ++ int a, b; ++ cin >> a >> b; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; ++} +``` +Перед первым коммитом я не почистил cpp файл от подсказок IDE. Видно, что потом они были удалены +6f61cde — хэш самого первого коммита, а 666c1db — коммита вывода разности + +20. Закоммитим изменения в рабочей копии (вывод произведения) + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m "code: вывод произведения" +[main 2c1b088] code: вывод произведения + 1 file changed, 1 insertion(+), 1 deletion(-) +``` + +21. Откатимся к предпоследнему коммиту: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at 47a638a git: Добавлен gitignore +``` + +22. Добавим над функцией main() комментарий и Уберем изменения в main.cpp другим способом — откатив этот файл к состоянию в последнем коммите (HEAD): + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git checkout HEAD -- main.cpp +``` + +23. Сгенерируем приватный ключ для gitea на сайте кафедры + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/gorda/.ssh/id_ed25519): +........ +``` + +24. Запустим ssh-agent и загрузим ключ + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 660 + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ ssh-add +Identity added: /c/Users/gorda/.ssh/id_ed25519 (gorda@DESKTOP-2IL75KC) +``` + +25. После добавления открытого ключа в профиль на git сайта кафедры связываем локальный и удалённый репозитарий и отправляем всё в облако + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git remote add origin http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git push -u origin main +Enumerating objects: 21, done. +Counting objects: 100% (21/21), done. +Delta compression using up to 8 threads +Compressing objects: 100% (19/19), done. +Writing objects: 100% (21/21), 4.55 KiB | 1.51 MiB/s, done. +Total 21 (delta 7), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. +``` + +26. На машине Боба. +Клонируем репозитарий с облака, указав URL и папку +Перейдём в папку проекта + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob +$ git clone http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git project +Cloning into 'project'... +remote: Enumerating objects: 24, done. +remote: Counting objects: 100% (24/24), done. +remote: Compressing objects: 100% (22/22), done. +remote: Total 24 (delta 9), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (24/24), 4.81 KiB | 2.41 MiB/s, done. +Resolving deltas: 100% (9/9), done. + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob +$ cd project/ +``` + +27. Настроим локальный репозитарий для Боба +Изменим имя пользователя и email + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git config user.name "Bob (GordiyevskikDA)" + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git config user.email "gordiyevskikda@mpei.ru" +``` + +28. Добавим печать произведения, сделаем коммит и отправим на сервер + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git commit -m "code: Добавил произведение" +[main fa9ce57] code: Добавил произведение + 1 file changed, 1 insertion(+), 1 deletion(-) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 8 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 337 bytes | 337.00 KiB/s, done. +Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + 20f7ad4..fa9ce57 main -> main +``` + +29. На машине Алисы загрузим изменения Боба + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 317 bytes | 31.00 KiB/s, done. +From http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02 + 20f7ad4..fa9ce57 main -> origin/main + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --oneline --decorate --all --graph +* fa9ce57 (origin/main) code: Добавил произведение +* 20f7ad4 (HEAD -> main) code: Вывод произведения +* 47a638a git: Добавлен gitignore +* 666c1db code: Вывод разности +* 8420143 code: Теперь точно сумма +* 8691b4c code: Добавлена сумма +* ff38e89 biuld: добавлены файлы проекта +* 6f61cde code: заготовка программы + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git pull --ff-only +Updating 20f7ad4..fa9ce57 +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) +``` +После введения первой команды земетим, что в рабочей копии изменений еще не произошло +Просмотрим историю и увидим, ветка main отстает на один коммит от ветки origin/main (версии ветки main из удаленного репозитария под названием origin, то есть на сервере). +Пододвинем Main к скачанной версии + +29. Добавим в программу печать деления, сделаем коммит и отправим на сервер + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m "code: Добавил частное" +[main 22dd72f] code: Добавил частное + 1 file changed, 1 insertion(+), 1 deletion(-) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 8 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 358 bytes | 358.00 KiB/s, done. +Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + fa9ce57..22dd72f main -> main +``` + +30. У Алисы. Дополним программу печатью максимума, сделаем коммит и отправим на сервер + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git commit -m "code: Добавлена печать максимума" +[main 92284ce] code: Добавлена печать максимума + 1 file changed, 6 insertions(+) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 8 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 390 bytes | 390.00 KiB/s, done. +Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + 22dd72f..92284ce main -> main +``` + +31. На машине Боба: +Не обновляя локальный репозитарий, добавим печать минимума, сделаем коммит и попытаемся отправить на сервер + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git commit -m "code: Добавлена печать минимума" +[main debe504] code: Добавлена печать минимума + 1 file changed, 6 insertions(+) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git push +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'http://uit.mpei.ru/git/GordiyevskikDA/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. +``` +Видно, что Git не дайт этого сделать, так как коммит Боба основан не на последнем существующем коммите + +32. Посмотрим всю историю коммитов, предварительно загрузим их + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 370 bytes | 37.00 KiB/s, done. +From http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02 + 22dd72f..92284ce main -> origin/main + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git log --oneline --decorate --all --graph +* debe504 (HEAD -> main) code: Добавлена печать минимума +| * 92284ce (origin/main, origin/HEAD) code: Добавлена печать максимума +|/ +* 22dd72f code: Добавил частное +* fa9ce57 code: Добавил произведение +* 20f7ad4 code: Вывод произведения +* 47a638a git: Добавлен gitignore +* 666c1db code: Вывод разности +* 8420143 code: Теперь точно сумма +* 8691b4c code: Добавлена сумма +* ff38e89 biuld: добавлены файлы проекта +* 6f61cde code: заготовка программы +``` +Видно, что возник конфликт коммитов. Это можно понять по символам "|" перед последним удачно отправленным коммитом + +33. Попытаемся перенести коммит Боба поверх коммита Алисы, то есть поверх origin/main + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply debe504... code: Добавлена печать минимума +hint: Resolve all conflicts manually, mark them as resolved with +hint: "git add/rm ", then run "git rebase --continue". +hint: You can instead skip this commit: run "git rebase --skip". +hint: To abort and get back to the state before "git rebase", run "git rebase --abort". +Could not apply debe504... code: Добавлена печать минимума +``` +На что получаем сообщение о конфликте кода. Необходимо сначала привести код Боба к тому виду, как у Алисы, а потом добавлять его функцию +Сделаем это вручную. VS 2022 подсвечивает места конфликтов версий + +34. После изменения кода нужно добавить файл в индекс и продолжить прерванную операцию rebase, а также отправим изменения на сервер: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main|REBASE 1/1) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main|REBASE 1/1) +$ git rebase --continue +hint: Waiting for your editor to close the file... 0 [sig] bash 926! sigpacket::process: Suppressing signal 18 to win32 process (pid 20196) +[detached HEAD cdf30fd] code: Добавлена печать минимума + 1 file changed, 6 insertions(+) +Successfully rebased and updated refs/heads/main. + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 8 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 363 bytes | 363.00 KiB/s, done. +Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + 92284ce..cdf30fd main -> main +``` + +35. Перейдём на машину Алисы. Создадим ветку double и перейдём в неё + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git branch double + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git checkout double +Switched to branch 'double' + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (double) +$ +``` +Видим, что приглашение в командной строке изменилось. "(main)" стало "(double)" + +36. Перейдём в ветку main, синхронзируем репозитарии и посмотрим историю: + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 343 bytes | 31.00 KiB/s, done. +From http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02 + 92284ce..cdf30fd main -> origin/main + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --oneline --decorate --all --graph +* dbeedcb (double) code: Изменён тип переменной +| * cdf30fd (origin/main) code: Добавлена печать минимума +|/ +* 92284ce (HEAD -> main) code: Добавлена печать максимума +* 22dd72f code: Добавил частное +* fa9ce57 code: Добавил произведение +* 20f7ad4 code: Вывод произведения +* 47a638a git: Добавлен gitignore +* 666c1db code: Вывод разности +* 8420143 code: Теперь точно сумма +* 8691b4c code: Добавлена сумма +* ff38e89 biuld: добавлены файлы проекта +* 6f61cde code: заготовка программы +``` +Видим две вещи: +1) Версия кода Алисы не совпадает с версией кода Боба. Т.к. перед созданием ветки мы не сделали обновление локального репозитария +2) коммит с хэшем "dbeedcb", в котором мы меняли тип переменной в другой ветке + +37. Сольём ветку double с главной + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git merge double +Updating 92284ce..dbeedcb +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) +``` + +38. Попытаемся отправить изменения на сервер +Но т.к. существует конфликт версий, о котором я писал в шаге 36, получаем ошибку + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git push +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + ! [rejected] main -> main (non-fast-forward) +error: failed to push some refs to 'http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git' +hint: Updates were rejected because the tip of your current branch is behind +hint: its remote counterpart. If you want to integrate the remote changes, +hint: use 'git pull' before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. +``` +Для исправления переключлся в ветку double, добавил правки Боба, создал коммит и отправил на сервер +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git checkout double +Switched to branch 'double' +M main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (double) +$ git add main.cpp + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (double) +$ git commit -m "code: Изменён тип переменной (double)" +[double ad91778] code: Изменён тип переменной (double) + 1 file changed, 6 insertions(+) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch and 'origin/main' have diverged, +and have 1 and 1 different commits each, respectively. + (use "git pull" if you want to integrate the remote branch with yours) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git merge double +Updating dbeedcb..ad91778 +Fast-forward + main.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git push +Enumerating objects: 11, done. +Counting objects: 100% (11/11), done. +Delta compression using up to 8 threads +Compressing objects: 100% (7/7), done. +Writing objects: 100% (7/7), 802 bytes | 802.00 KiB/s, done. +Total 7 (delta 5), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git + cdf30fd..d77ebc2 main -> main +``` +По причине того, что я не удалил коммит, который был сделан для кода бз правок Боба, но с изменением переменной Алисы, +Он тоже загрузился на сервер, но его сразу перекрыл нужный. + +39. Посмотрим историю всех веток репозитария + +``` +gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main) +$ git log --oneline --decorate --all --graph +* d77ebc2 (HEAD -> main, origin/main) merge branch 'main' of http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02 +|\ +* | ad91778 (double) code: Изменён тип переменной (double) +* | dbeedcb code: Изменён тип переменной +|/ +* cdf30fd code: Добавлена печать минимума +* 92284ce code: Добавлена печать максимума +* 22dd72f code: Добавил частное +* fa9ce57 code: Добавил произведение +* 20f7ad4 code: Вывод произведения +* 47a638a git: Добавлен gitignore +* 666c1db code: Вывод разности +* 8420143 code: Теперь точно сумма +* 8691b4c code: Добавлена сумма +* ff38e89 biuld: добавлены файлы проекта +* 6f61cde code: заготовка программы +``` +Видно, что два предпоследних коммита находятся в другой ветке +А последний коммит — слияние веток \ No newline at end of file