From 072b1ce0aee8031b8a0f14da773e81439405137d Mon Sep 17 00:00:00 2001 From: "Alice (AnikeevAA)" Date: Thu, 9 Mar 2023 15:39:03 +0300 Subject: [PATCH] =?UTF-8?q?project:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BE=D1=82=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- otchet/lab02.txt | 692 +++++++++++++++++++++++++++++++++++++++++++ отчет/lab02.txt | 692 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1384 insertions(+) create mode 100644 otchet/lab02.txt create mode 100644 отчет/lab02.txt diff --git a/otchet/lab02.txt b/otchet/lab02.txt new file mode 100644 index 0000000..8849fa5 --- /dev/null +++ b/otchet/lab02.txt @@ -0,0 +1,692 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Аникеев А. А. +Группа: А-03-22 + +Примечание: работа выполнялась на Windows. + +1. Создал lab02 и запустил Git Bash: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ + +2. Просмотрел файлы в рабочем каталоге можно командой "ls": + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ ls + +3. Создал каталоги alise, bob, которые будут иммитировать компьютеры 2 людей в л.р. +Использовал команду cd для перехода между каталогами. Создал каталог project на компьютере alise. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ mkdir alice + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ mkdir bob + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ cd alice + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice +$ cd project + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project +$ cd .. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice +$ cd project + +4. Инициализировал и настроил репозитарий Алисы в каталоге project: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/Andrey/Desktop/lab02/alice/project/.git/ + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.name 'Alice (AnikeevAA)' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.email 'AnikeevAnA@mpei.ru' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ ls -A +.git/ bin/ main.cpp obj/ project.cbp + +5. Запускаем CodeBlocks и создаем проект в репозитарии Алисы. Собираем его. +Смотрим состояние рабочей копии: + +Andrey@LAPTOP-VQB0AJDR 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) //ничего не добавлено для коммита, используйте для отслеживания + +6. Добавим файл main.cpp в отслеживаемые (в индекс) и посмотрим состояние рабочей копии снова: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add main.cpp + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/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) + bin/ + obj/ + project.cbp + +7. Выполним коммит с файлом main.cpp и project.cbp: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m 'code: заготовка программы' +[master (root-commit) 4459bbe] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m 'build: add project file' +[master 2d0a9cc] build: add project file + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +8. Заменим тело функции main() на ввод двух чисел и просмотрим состояние рабочей копии: + +Andrey@LAPTOP-VQB0AJDR 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 // изменен 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") + +9. Добавляем в программу вывод суммы, разности и делаем коммит: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -a -m "code: заготовка программы" +[master 222e0a1] code: заготовка программы + 1 file changed, 8 insertions(+), 1 deletion(-) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +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) + +10. Заносим каталоги bin и obj в список игнорируемых, создаем коммит темой git: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + +nothing added to commit but untracked files present (use "git add" to track) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +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) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add .gitignore + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m "git" +[master 13c49fe] git + 1 file changed, 2 insertions(+) + create mode 100644 .gitignore + +11. Команды работы с журналом репозитария: +Просмотр журнала репозитария: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log +commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master) +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:40:22 2023 +0300 + + git + +commit 222e0a19ba70da024947adc54a20545536361195 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:10:48 2023 +0300 + + code: заготовка программы + +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:00:50 2023 +0300 + + build: add project file + +commit 4459bbe2d05dc2f8673f8c457e1070e24db9c287 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 14:48:22 2023 +0300 + + code: заготовка программы +: + +Коммиты компактно: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate +13c49fe (HEAD -> master) git +222e0a1 code: заготовка программы +2d0a9cc build: add project file +4459bbe code: заготовка программы + +Файлы, измененные в коммитах: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --stat +commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master) +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:40:22 2023 +0300 + + git + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 222e0a19ba70da024947adc54a20545536361195 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:10:48 2023 +0300 + + code: заготовка программы + + main.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 // хеш коммита +Author: Alice (AnikeevAA) // автор коммита +Date: Mon Mar 6 15:00:50 2023 +0300 // дата и время коммита + + build: add project file // имя коммита +: + +(гит игнорирует файлы add и obj (2 бинарных файла) так же есть изменение одного файла в мейне) + +12. нахождение коммитов по теме build, потом затрагивающие project.cbp: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --grep "build:" +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:00:50 2023 +0300 + + build: add project file + + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log -- project.cbp +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:00:50 2023 +0300 + + build: add project file + +13. Просмотрим предпоследний коммит: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git show HEAD~1 +commit 222e0a19ba70da024947adc54a20545536361195 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:10:48 2023 +0300 + + code: заготовка программы + +diff --git a/main.cpp b/main.cpp +index b4392ec..962f806 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,13 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; ++ cout << "Enter A and B: "; ++ ++ int a, b; ++ ++ cin >> a >> b; ++ ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; ++ + +14. Добавим печать произведения чисел, но не станем пока делать коммит: +Посмотрим изменения в рабочей копии: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git diff +diff --git a/main.cpp b/main.cpp // показ изменений от указанного коммита до последнего +index 962f806..0d0652c 100644 // индекс +--- a/main.cpp // заголовок ++++ b/main.cpp // заголовок +@@ -12,5 +12,7 @@ int main() //место изменения в файле + + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; // существующая строка + ++ cout << "A * B = " << a * b << '\n'; // добавленная строка ++ + return 0; // существующая строка + } + +15. Просмотр изменени1 между самым первым коммитом и коммитом, добавляющим вывод разности: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git diff HEAD~3 HEAD~1 +diff --git a/main.cpp b/main.cpp +index b4392ec..962f806 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,13 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; ++ cout << "Enter A and B: "; ++ ++ int a, b; ++ ++ cin >> a >> b; ++ ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; ++ + return 0; + } + +16. Практикуем откат изменений, для этого коммитим и откатываем изменение в рабочей копии (вывод произведения): + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -a -m "progect: произведение" +[master 5f67aad] progect: произведение + 1 file changed, 2 insertions(+) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git reset --hard HEAD~1 +HEAD is now at 13c49fe git + +17. Создание пары ключей: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (/c/Users/Andrey/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/Andrey/.ssh/id_rsa +Your public key has been saved in /c/Users/Andrey/.ssh/id_rsa.pub +The key fingerprint is: +SHA256:bgF32to5uWHiw75mWh6aIAn6kJmcBAcpAUbx8fj9Rag Andrey@LAPTOP-VQB0AJDR +The key's randomart image is: ++---[RSA 3072]----+ +|**.. | +|+.. + . | +|o .o .. .... | +|.. . .o.+. | +|.. . ES .. | +|+=.. ..+.o | +|*oo . .B.B | +| o . . B=+ + | +| . +==o. | ++----[SHA256]-----+ + +18. Запускаем агент: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ eval `ssh-agent -s` +Agent pid 558 + +19. Загружаем ключ: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ ssh-add +Enter passphrase for /c/Users/Andrey/.ssh/id_rsa: +Identity added: /c/Users/Andrey/.ssh/id_rsa (Andrey@LAPTOP-VQB0AJDR) + +20. Отображаем открытый ключ: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ cat ~/.ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzWdOWFmQ9iObuQBXhyeZG00yPdmkxtO7ZRHpQVTmZibdrrbNt0uHA0SE+2CLggwHZYEzvT5AZQ/xGb/nGIkrdTybdiY0bDImw2v9acWvtyVbgtWcKei4ZrGYLBA5Sa4u0e8xuGy108M76L+jEgg4xMbijpNzgkn5NIgKVv3HSv2x8snI9CuaQPIsqNByZSCx5UU08bVQePvzuK+pVd+CWP8XyPFFDWKGBQ9gV2BlZ3Avz86rQO48RKpoWT39GEmlLjLzphZVjyKszcSidLeEZDVU4gFOYT/hWrVZgx00iAYrb7BpFk+e5h38zpJQ1S01ue6Wgr11k0csMQeb8xTN5Bu/Hk1jonvdOLLVbDkAA77VM60gb+DURcNmbSYsVsEp5pEd1luTCCvauBivSsdKYYcZARD2aLLYOf9sxkKMMR0hcHKRYb3De4w6E1aD2VhZfLnDHnGUVVicmYeV6tvjvO+r+PQ+7/5tLVKBHNCERk+Dq+3NYkP5Ui8FSy5RDLsU= Andrey@LAPTOP-VQB0AJDR + +21. Создаем репозитарий и настраиваем удаленную связь с ним: (отправляем проект на сервер) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git remote add origin git@uit.mpei.ru:AnikeevAnA/cs-lab02.git +error: remote origin already exists. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push -u origin main +error: src refspec main does not match any +error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.git' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push -u origin master +The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established. +ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA. +This key is not known by any other names. +Are you sure you want to continue connecting (yes/no/[fingerprint])? + +После того как согласился +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push -u origin master +The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established. +ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA. +This key is not known by any other names. +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +Please type 'yes', 'no' or the fingerprint: yes +Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts. +Enumerating objects: 12, done. +Counting objects: 100% (12/12), done. +Delta compression using up to 16 threads +Compressing objects: 100% (10/10), done. +Writing objects: 100% (12/12), 1.56 KiB | 1.56 MiB/s, done. +Total 12 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:AnikeevAnA/cs-lab02.git + * [new branch] master -> master +branch 'master' set up to track 'origin/master'. + +22. Получаем проект с сервера с машины Боба, настраиваем git config аналогично машине Алисы: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob +$ git clone git@uit.mpei.ru:AnikeevAnA/cs-lab02.git project +Cloning into 'project'... +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +remote: Enumerating objects: 12, done. +remote: Counting objects: 100% (12/12), done. +remote: Compressing objects: 100% (10/10), done. +remote: Total 12 (delta 1), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (12/12), done. +Resolving deltas: 100% (1/1), done. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git config user.name 'bob (AnikeevAA)' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git config user.email 'AnikeevAnA@mpei.ru' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ ls -A +.git/ .gitignore main.cpp project.cbp + +23. Делаем изменение на машине Боба и отправляем их на сервер: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git commit -a -m 'project: произведение' +[master f010db0] project: произведение + 1 file changed, 2 insertions(+) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git show head +commit f010db0fb00686ac63e91d822247580378a26df6 (HEAD -> master) +Author: bob (AnikeevAA) +Date: Mon Mar 6 17:32:27 2023 +0300 + + project: произведение + +diff --git a/main.cpp b/main.cpp +index 962f806..0d0652c 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -12,5 +12,7 @@ int main() + + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + ++ cout << "A * B = " << a * b << '\n'; ++ + return 0; + } + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git push +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +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), 394 bytes | 394.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:AnikeevAnA/cs-lab02.git + 13c49fe..f010db0 master -> master + +24. Делаем загрузку изменений Боба на машине Алисы с сервера: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ 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), 374 bytes | 31.00 KiB/s, done. +From uit.mpei.ru:AnikeevAnA/cs-lab02 + 13c49fe..f010db0 master -> origin/master + +25. Просмотрим историю всех веток: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* f010db0 (origin/master) project: произведение +* 13c49fe (HEAD -> master) git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +26. Продвигаем ветку master к скачанной версии: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git pull --ff-only +Updating 13c49fe..f010db0 +Fast-forward + main.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +(убеждаемся что рабочая копия проекта у Алисы соответствует версии у Боба) + +27. Сделали все то же самое, только теперь от имени Алисы сделали коммит, отправили изменения на сервер, +а со стороны Боба приняли изменения и продвинули ветку мастер до версии этой же ветки из удаленного репозитария. + +28. На машине Алиса дополним программу выводом масимума, делаем коммит и отправляем на сервер. +В это же время на машине Боба дополняем программу выводом минимума и так же отправляем на сервер: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git commit -a -m 'project: минимум' +[master 2cf1199] project: минимум + 1 file changed, 2 insertions(+) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git push +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +To uit.mpei.ru:AnikeevAnA/cs-lab02.git + ! [rejected] master -> master (fetch first) +error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.git' +hint: Updates were rejected because the remote contains work that you do +hint: not have locally. This is usually caused by another repository pushing +hint: to the same ref. You may want to first integrate the remote changes +hint: (e.g., 'git pull ...') before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + +(Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git pull --ff-only +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +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), 381 bytes | 22.00 KiB/s, done. +From uit.mpei.ru:AnikeevAnA/cs-lab02 + 5f4c5ab..fda6c91 master -> origin/master +fatal: Not possible to fast-forward, aborting. + +(Ветка мастер раздвоилась) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git log --oneline --decorate --all --graph +* 2cf1199 (HEAD -> master) project: минимум +| * fda6c91 (origin/master, origin/HEAD) project: максимум +|/ +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git rebase origin/master +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 2cf1199... project: минимум +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 2cf1199... project: минимум + +(на машине боба место конфликта будет отмечено прямо в коде, нужно удалить эти метки конфликта и затем +отредактировать код так, чтобы он включал правки и Алисы, и Боба) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git rebase origin/master +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 2cf1199... project: минимум +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 2cf1199... project: минимум + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git log --oneline --decorate --all --graph +* ff7356a (HEAD -> master) project: минимум +* fda6c91 (origin/master, origin/HEAD) project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +(В первый раз, когда делал со стороны Боба, при продолжении функции rebase, продолжили возникать ошибки, +проделал те же самые операции в обратную сторону, в сторону машины Алисы и тогда смог произвести перемещение +коммита Алисы поверх коммита Боба, и отправил изменения на сервер) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git rebase origin/master +Successfully rebased and updated refs/heads/master. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* 775b709 (HEAD -> master) project: hello +* 39e15e8 (origin/master) восстановление +* f0c2cde project: bob min +* ff7356a project: минимум +* fda6c91 project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +Everything up-to-date + +29. Создаем ветку double, меняем тип переменных и делаем коммит. +После коммита переключаемся на ветку мастер, синхронизируем ветку master с сервером: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git branch double + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git checkout double +Switched to branch 'double' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (double) +$ git checkout master +Switched to branch 'master' +Your branch is up to date with 'origin/master'. + +Смотрим историю всех веток: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* f02fbf6 (double) double +* 775b709 (HEAD -> master, origin/master) project: hello +* 39e15e8 восстановление +* f0c2cde project: bob min +* ff7356a project: минимум +* fda6c91 project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +30. Смотрим историю всех веток: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* f02fbf6 (HEAD -> master, origin/master, double) double +* 775b709 project: hello +* 39e15e8 восстановление +* f0c2cde project: bob min +* ff7356a project: минимум +* fda6c91 project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы diff --git a/отчет/lab02.txt b/отчет/lab02.txt new file mode 100644 index 0000000..8849fa5 --- /dev/null +++ b/отчет/lab02.txt @@ -0,0 +1,692 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Аникеев А. А. +Группа: А-03-22 + +Примечание: работа выполнялась на Windows. + +1. Создал lab02 и запустил Git Bash: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ + +2. Просмотрел файлы в рабочем каталоге можно командой "ls": + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ ls + +3. Создал каталоги alise, bob, которые будут иммитировать компьютеры 2 людей в л.р. +Использовал команду cd для перехода между каталогами. Создал каталог project на компьютере alise. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ mkdir alice + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ mkdir bob + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02 +$ cd alice + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice +$ cd project + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project +$ cd .. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice +$ cd project + +4. Инициализировал и настроил репозитарий Алисы в каталоге project: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/Andrey/Desktop/lab02/alice/project/.git/ + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.name 'Alice (AnikeevAA)' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.email 'AnikeevAnA@mpei.ru' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ ls -A +.git/ bin/ main.cpp obj/ project.cbp + +5. Запускаем CodeBlocks и создаем проект в репозитарии Алисы. Собираем его. +Смотрим состояние рабочей копии: + +Andrey@LAPTOP-VQB0AJDR 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) //ничего не добавлено для коммита, используйте для отслеживания + +6. Добавим файл main.cpp в отслеживаемые (в индекс) и посмотрим состояние рабочей копии снова: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add main.cpp + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/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) + bin/ + obj/ + project.cbp + +7. Выполним коммит с файлом main.cpp и project.cbp: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m 'code: заготовка программы' +[master (root-commit) 4459bbe] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m 'build: add project file' +[master 2d0a9cc] build: add project file + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +8. Заменим тело функции main() на ввод двух чисел и просмотрим состояние рабочей копии: + +Andrey@LAPTOP-VQB0AJDR 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 // изменен 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") + +9. Добавляем в программу вывод суммы, разности и делаем коммит: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -a -m "code: заготовка программы" +[master 222e0a1] code: заготовка программы + 1 file changed, 8 insertions(+), 1 deletion(-) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +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) + +10. Заносим каталоги bin и obj в список игнорируемых, создаем коммит темой git: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + +nothing added to commit but untracked files present (use "git add" to track) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git status +On branch master +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) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add .gitignore + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m "git" +[master 13c49fe] git + 1 file changed, 2 insertions(+) + create mode 100644 .gitignore + +11. Команды работы с журналом репозитария: +Просмотр журнала репозитария: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log +commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master) +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:40:22 2023 +0300 + + git + +commit 222e0a19ba70da024947adc54a20545536361195 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:10:48 2023 +0300 + + code: заготовка программы + +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:00:50 2023 +0300 + + build: add project file + +commit 4459bbe2d05dc2f8673f8c457e1070e24db9c287 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 14:48:22 2023 +0300 + + code: заготовка программы +: + +Коммиты компактно: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate +13c49fe (HEAD -> master) git +222e0a1 code: заготовка программы +2d0a9cc build: add project file +4459bbe code: заготовка программы + +Файлы, измененные в коммитах: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --stat +commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master) +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:40:22 2023 +0300 + + git + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 222e0a19ba70da024947adc54a20545536361195 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:10:48 2023 +0300 + + code: заготовка программы + + main.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 // хеш коммита +Author: Alice (AnikeevAA) // автор коммита +Date: Mon Mar 6 15:00:50 2023 +0300 // дата и время коммита + + build: add project file // имя коммита +: + +(гит игнорирует файлы add и obj (2 бинарных файла) так же есть изменение одного файла в мейне) + +12. нахождение коммитов по теме build, потом затрагивающие project.cbp: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --grep "build:" +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:00:50 2023 +0300 + + build: add project file + + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log -- project.cbp +commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:00:50 2023 +0300 + + build: add project file + +13. Просмотрим предпоследний коммит: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git show HEAD~1 +commit 222e0a19ba70da024947adc54a20545536361195 +Author: Alice (AnikeevAA) +Date: Mon Mar 6 15:10:48 2023 +0300 + + code: заготовка программы + +diff --git a/main.cpp b/main.cpp +index b4392ec..962f806 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,13 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; ++ cout << "Enter A and B: "; ++ ++ int a, b; ++ ++ cin >> a >> b; ++ ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; ++ + +14. Добавим печать произведения чисел, но не станем пока делать коммит: +Посмотрим изменения в рабочей копии: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git diff +diff --git a/main.cpp b/main.cpp // показ изменений от указанного коммита до последнего +index 962f806..0d0652c 100644 // индекс +--- a/main.cpp // заголовок ++++ b/main.cpp // заголовок +@@ -12,5 +12,7 @@ int main() //место изменения в файле + + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; // существующая строка + ++ cout << "A * B = " << a * b << '\n'; // добавленная строка ++ + return 0; // существующая строка + } + +15. Просмотр изменени1 между самым первым коммитом и коммитом, добавляющим вывод разности: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git diff HEAD~3 HEAD~1 +diff --git a/main.cpp b/main.cpp +index b4392ec..962f806 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,13 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; ++ cout << "Enter A and B: "; ++ ++ int a, b; ++ ++ cin >> a >> b; ++ ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; ++ + return 0; + } + +16. Практикуем откат изменений, для этого коммитим и откатываем изменение в рабочей копии (вывод произведения): + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -a -m "progect: произведение" +[master 5f67aad] progect: произведение + 1 file changed, 2 insertions(+) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git reset --hard HEAD~1 +HEAD is now at 13c49fe git + +17. Создание пары ключей: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (/c/Users/Andrey/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/Andrey/.ssh/id_rsa +Your public key has been saved in /c/Users/Andrey/.ssh/id_rsa.pub +The key fingerprint is: +SHA256:bgF32to5uWHiw75mWh6aIAn6kJmcBAcpAUbx8fj9Rag Andrey@LAPTOP-VQB0AJDR +The key's randomart image is: ++---[RSA 3072]----+ +|**.. | +|+.. + . | +|o .o .. .... | +|.. . .o.+. | +|.. . ES .. | +|+=.. ..+.o | +|*oo . .B.B | +| o . . B=+ + | +| . +==o. | ++----[SHA256]-----+ + +18. Запускаем агент: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ eval `ssh-agent -s` +Agent pid 558 + +19. Загружаем ключ: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ ssh-add +Enter passphrase for /c/Users/Andrey/.ssh/id_rsa: +Identity added: /c/Users/Andrey/.ssh/id_rsa (Andrey@LAPTOP-VQB0AJDR) + +20. Отображаем открытый ключ: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ cat ~/.ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzWdOWFmQ9iObuQBXhyeZG00yPdmkxtO7ZRHpQVTmZibdrrbNt0uHA0SE+2CLggwHZYEzvT5AZQ/xGb/nGIkrdTybdiY0bDImw2v9acWvtyVbgtWcKei4ZrGYLBA5Sa4u0e8xuGy108M76L+jEgg4xMbijpNzgkn5NIgKVv3HSv2x8snI9CuaQPIsqNByZSCx5UU08bVQePvzuK+pVd+CWP8XyPFFDWKGBQ9gV2BlZ3Avz86rQO48RKpoWT39GEmlLjLzphZVjyKszcSidLeEZDVU4gFOYT/hWrVZgx00iAYrb7BpFk+e5h38zpJQ1S01ue6Wgr11k0csMQeb8xTN5Bu/Hk1jonvdOLLVbDkAA77VM60gb+DURcNmbSYsVsEp5pEd1luTCCvauBivSsdKYYcZARD2aLLYOf9sxkKMMR0hcHKRYb3De4w6E1aD2VhZfLnDHnGUVVicmYeV6tvjvO+r+PQ+7/5tLVKBHNCERk+Dq+3NYkP5Ui8FSy5RDLsU= Andrey@LAPTOP-VQB0AJDR + +21. Создаем репозитарий и настраиваем удаленную связь с ним: (отправляем проект на сервер) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git remote add origin git@uit.mpei.ru:AnikeevAnA/cs-lab02.git +error: remote origin already exists. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push -u origin main +error: src refspec main does not match any +error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.git' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push -u origin master +The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established. +ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA. +This key is not known by any other names. +Are you sure you want to continue connecting (yes/no/[fingerprint])? + +После того как согласился +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push -u origin master +The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established. +ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA. +This key is not known by any other names. +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +Please type 'yes', 'no' or the fingerprint: yes +Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts. +Enumerating objects: 12, done. +Counting objects: 100% (12/12), done. +Delta compression using up to 16 threads +Compressing objects: 100% (10/10), done. +Writing objects: 100% (12/12), 1.56 KiB | 1.56 MiB/s, done. +Total 12 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:AnikeevAnA/cs-lab02.git + * [new branch] master -> master +branch 'master' set up to track 'origin/master'. + +22. Получаем проект с сервера с машины Боба, настраиваем git config аналогично машине Алисы: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob +$ git clone git@uit.mpei.ru:AnikeevAnA/cs-lab02.git project +Cloning into 'project'... +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +remote: Enumerating objects: 12, done. +remote: Counting objects: 100% (12/12), done. +remote: Compressing objects: 100% (10/10), done. +remote: Total 12 (delta 1), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (12/12), done. +Resolving deltas: 100% (1/1), done. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git config user.name 'bob (AnikeevAA)' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git config user.email 'AnikeevAnA@mpei.ru' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ ls -A +.git/ .gitignore main.cpp project.cbp + +23. Делаем изменение на машине Боба и отправляем их на сервер: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git commit -a -m 'project: произведение' +[master f010db0] project: произведение + 1 file changed, 2 insertions(+) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git show head +commit f010db0fb00686ac63e91d822247580378a26df6 (HEAD -> master) +Author: bob (AnikeevAA) +Date: Mon Mar 6 17:32:27 2023 +0300 + + project: произведение + +diff --git a/main.cpp b/main.cpp +index 962f806..0d0652c 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -12,5 +12,7 @@ int main() + + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + ++ cout << "A * B = " << a * b << '\n'; ++ + return 0; + } + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git push +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +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), 394 bytes | 394.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:AnikeevAnA/cs-lab02.git + 13c49fe..f010db0 master -> master + +24. Делаем загрузку изменений Боба на машине Алисы с сервера: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ 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), 374 bytes | 31.00 KiB/s, done. +From uit.mpei.ru:AnikeevAnA/cs-lab02 + 13c49fe..f010db0 master -> origin/master + +25. Просмотрим историю всех веток: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* f010db0 (origin/master) project: произведение +* 13c49fe (HEAD -> master) git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +26. Продвигаем ветку master к скачанной версии: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git pull --ff-only +Updating 13c49fe..f010db0 +Fast-forward + main.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +(убеждаемся что рабочая копия проекта у Алисы соответствует версии у Боба) + +27. Сделали все то же самое, только теперь от имени Алисы сделали коммит, отправили изменения на сервер, +а со стороны Боба приняли изменения и продвинули ветку мастер до версии этой же ветки из удаленного репозитария. + +28. На машине Алиса дополним программу выводом масимума, делаем коммит и отправляем на сервер. +В это же время на машине Боба дополняем программу выводом минимума и так же отправляем на сервер: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git commit -a -m 'project: минимум' +[master 2cf1199] project: минимум + 1 file changed, 2 insertions(+) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git push +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +To uit.mpei.ru:AnikeevAnA/cs-lab02.git + ! [rejected] master -> master (fetch first) +error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.git' +hint: Updates were rejected because the remote contains work that you do +hint: not have locally. This is usually caused by another repository pushing +hint: to the same ref. You may want to first integrate the remote changes +hint: (e.g., 'git pull ...') before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + +(Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git pull --ff-only +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +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), 381 bytes | 22.00 KiB/s, done. +From uit.mpei.ru:AnikeevAnA/cs-lab02 + 5f4c5ab..fda6c91 master -> origin/master +fatal: Not possible to fast-forward, aborting. + +(Ветка мастер раздвоилась) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git log --oneline --decorate --all --graph +* 2cf1199 (HEAD -> master) project: минимум +| * fda6c91 (origin/master, origin/HEAD) project: максимум +|/ +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git rebase origin/master +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 2cf1199... project: минимум +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 2cf1199... project: минимум + +(на машине боба место конфликта будет отмечено прямо в коде, нужно удалить эти метки конфликта и затем +отредактировать код так, чтобы он включал правки и Алисы, и Боба) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git rebase origin/master +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 2cf1199... project: минимум +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 2cf1199... project: минимум + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master) +$ git log --oneline --decorate --all --graph +* ff7356a (HEAD -> master) project: минимум +* fda6c91 (origin/master, origin/HEAD) project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +(В первый раз, когда делал со стороны Боба, при продолжении функции rebase, продолжили возникать ошибки, +проделал те же самые операции в обратную сторону, в сторону машины Алисы и тогда смог произвести перемещение +коммита Алисы поверх коммита Боба, и отправил изменения на сервер) + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git rebase origin/master +Successfully rebased and updated refs/heads/master. + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* 775b709 (HEAD -> master) project: hello +* 39e15e8 (origin/master) восстановление +* f0c2cde project: bob min +* ff7356a project: минимум +* fda6c91 project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git push +Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa': +Everything up-to-date + +29. Создаем ветку double, меняем тип переменных и делаем коммит. +После коммита переключаемся на ветку мастер, синхронизируем ветку master с сервером: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git branch double + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git checkout double +Switched to branch 'double' + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (double) +$ git checkout master +Switched to branch 'master' +Your branch is up to date with 'origin/master'. + +Смотрим историю всех веток: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* f02fbf6 (double) double +* 775b709 (HEAD -> master, origin/master) project: hello +* 39e15e8 восстановление +* f0c2cde project: bob min +* ff7356a project: минимум +* fda6c91 project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы + +30. Смотрим историю всех веток: + +Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master) +$ git log --oneline --decorate --all --graph +* f02fbf6 (HEAD -> master, origin/master, double) double +* 775b709 project: hello +* 39e15e8 восстановление +* f0c2cde project: bob min +* ff7356a project: минимум +* fda6c91 project: максимум +* 5f4c5ab project: деление +* f010db0 project: произведение +* 13c49fe git +* 222e0a1 code: заготовка программы +* 2d0a9cc build: add project file +* 4459bbe code: заготовка программы