diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..2051402 --- /dev/null +++ b/README.txt @@ -0,0 +1,905 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Степанов А.В. +Группа: А-02-23 +Проверил: + +Примечание: работа выполнялась на Windows +1) Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ + +2) Просмотрел файлы в рабочем каталоге командой "ls" (Ничего не вывелось, так как там пусто): + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ ls + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ + +3) Создал каталоги Алисы и Боба, создал каталог "project", изучил команду "cd" в процессе: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ mkdir alice + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ mkdir bob + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ cd alice + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice +$ cd .. + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02 +$ cd alice + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice +$ cd project + +4) Инициализировал репозитарий и настроил его от имени Алисы: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/User/Desktop/lab02/alice/project/.git/ + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.name 'Alice (StepanovAV)' + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (master) +$ git config user.email 'StepanovAV@mpei.ru' + +5) Создал проект в CodeBlocks, просмотрел состояние рабочей копии репозитария: + +User@LAPTOP-P2135T49 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) + +// Проверяется ветка master, так как коммитов еще не было сделано, то выводится соответствующее сообщение. Также показываются сопутствующие неотслеживаемые файлы, которые предлагается добавить в индекс командой git add. + +6) Добавил файл main.cpp в индекс и просмотрел состояние рабочей копии репозитария: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (master) +$ git add main.cpp + +User@LAPTOP-P2135T49 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 + +// В отличие от предыдущего просмотра состояния рабочей копии репозитария, в данном случае файл main.cpp состоит не в списке неотслеживаемых файлов, а в индексе, следовательно он войдет в следующий коммит. + +7) Выполнил коммит с файлом main.cpp и коротким сообщением: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (master) +$ git commit -m 'code: заготовка программы' +[master (root-commit) 088d317] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +8) Переименовал ветку master в main: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (master) +$ git branch -m main + +9) Добавил файл project.cbp в индекс, сделал коммит с ним: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main 4de8eef] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +10) Сделал программу для ввода двух чисел, проверил состояние репозитария: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +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") + +// Git предлагает 2 варианта развития событий: добавить измененнный файл main.cpp в индекс, чтобы в дальнейшем провети коммит с изменениями, с помощью команды git add, или же удалить изменения с помощью команды git restore. + +11) Сделал коммиты с изменениями 2 разными способами (также изучил 3-ий, но на практике применять не стал): + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод суммы' +[main c4c1a5a] code: добавлен вывод суммы + 1 file changed, 4 insertions(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add -u + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод разности' +[main 838620b] code: добавлен вывод разности + 1 file changed, 2 insertions(+), 1 deletion(-) + +12) Создал список игнорируемых файлов, произвел коммит с ним и проверил состояние рабочей копии репозитария: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add .gitignore + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'git: создан список игнорируемых каталогов' +[main 171d96d] git: создан список игнорируемых каталогов + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +nothing to commit, working tree clean + +13) Просмотрел журнал репозитария 3 разными способами: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --stat +commit 171d96d78c54fb96bb37ce9ae1089071008837e7 (HEAD -> main) +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:33:45 2024 +0300 + + git: создан список игнорируемых каталогов + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 838620b1da018a0498f300a76485c064b38e8e75 +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:27:53 2024 +0300 + + code: добавлен вывод разности + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c4c1a5a037113f22bff3e2ca282566d4660d5a99 +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:26:29 2024 +0300 + + code: добавлен вывод суммы + + main.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 4de8eef6c832f10cc1cf615ce77edf901407cbbc +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:22:12 2024 +0300 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 088d31746f6d74165f6e1a8352324c47c14ad523 +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:18:31 2024 +0300 + + code: заготовка программы + + main.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate +171d96d (HEAD -> main) git: создан список игнорируемых каталогов +838620b code: добавлен вывод разности +c4c1a5a code: добавлен вывод суммы +4de8eef build: добавлен файл проекта +088d317 code: заготовка программы + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 171d96d (HEAD -> main) git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +// git log --stat для последнего коммита показывает, хэш, соответствующий данному коммиту, его автора, время проведения и содержание. В содержании показывается, что изменен 1 файл (.gitignore), и в нём было произведено 3 ввода. + +14) Нашел коммиты сначала по теме build, а затем затрагивающие файл project.cbp: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --grep "build:" +commit 4de8eef6c832f10cc1cf615ce77edf901407cbbc +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:22:12 2024 +0300 + + build: добавлен файл проекта + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log -- project.cbp +commit 4de8eef6c832f10cc1cf615ce77edf901407cbbc +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:22:12 2024 +0300 + + build: добавлен файл проекта + +15) Просмотрел предпоследний коммит 3 разными способами: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show HEAD~1 +commit 838620b1da018a0498f300a76485c064b38e8e75 +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:27:53 2024 +0300 + + code: добавлен вывод разности + +diff --git a/main.cpp b/main.cpp +index 6de6dd2..5371b30 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,6 +7,7 @@ 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'; + return 0; + } + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show main~1 +commit 838620b1da018a0498f300a76485c064b38e8e75 +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:27:53 2024 +0300 + + code: добавлен вывод разности + +diff --git a/main.cpp b/main.cpp +index 6de6dd2..5371b30 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,6 +7,7 @@ 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'; + return 0; + } + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show 838620b +commit 838620b1da018a0498f300a76485c064b38e8e75 +Author: Alice (StepanovAV) +Date: Sat Mar 23 14:27:53 2024 +0300 + + code: добавлен вывод разности + +diff --git a/main.cpp b/main.cpp +index 6de6dd2..5371b30 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,6 +7,7 @@ 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'; + return 0; + } + +// Все три способа показывают один и тот же коммит, в одинаковом виде, различаются только команды для просмотра. + +16) Внёс изменения в main.cpp (печать произведения чисел), но не сделал коммит, просмотрел изменения в рабочей копии: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 5371b30..15a93c2 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,6 +8,8 @@ int main() + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' +- << "A - B = " << a - b << '\n'; ++ << "A - B = " << a - b << '\n' ++ << "A * B = " << a * b << '\n'; ++ + return 0; + } + +// Git показывает отличия между main.cpp (a) в репозитарии и main.cpp (b) в рабочей копии репозитария. Они обозначаются через + (если строчка была добавлена) и - (если трочка была удалена). + +17) Просмотрел изменения между самым первым коммитом и коммитом, добавляющим вывод разности: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff 088d317 838620b +diff --git a/main.cpp b/main.cpp +index b4392ec..5371b30 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,10 @@ 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; + } +diff --git a/project.cbp b/project.cbp +new file mode 100644 +index 0000000..99bb702 +--- /dev/null ++++ b/project.cbp +@@ -0,0 +1,40 @@ ++ ++ ++ ++ ++ ++ + +18) Закоммитил изменения в рабочей копии (вывод произведения), а затем откатил изменения 2 разными способами: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод произведения' +[main b18fe6a] code: добавлен вывод произведения + 1 file changed, 3 insertions(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at 171d96d git: создан список игнорируемых каталогов + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + +19) Создал закрытый и открытый ключи, запустил программу-агент: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/User/.ssh/id_ed25519): +Created directory '/c/Users/User/.ssh'. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/User/.ssh/id_ed25519 +Your public key has been saved in /c/Users/User/.ssh/id_ed25519.pub +The key fingerprint is: +SHA256:+LIatOCCi9cmTi5r6Z3utVVenLNaDiTzx/LSxSolwAQ User@LAPTOP-P2135T49 +The key's randomart image is: ++--[ED25519 256]--+ +| E. | +| . | +| o | +| + . . | +| . . .oSo =. | +|.. o . .B.o.oo | +|o +.o....=+=o | +|oB+ =.oo oOo | +|**=B.o. .oo | ++----[SHA256]-----+ + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 1684 + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-add +Enter passphrase for /c/Users/User/.ssh/id_ed25519: +Identity added: /c/Users/User/.ssh/id_ed25519 (User@LAPTOP-P2135T49) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOLIsvdloqBWXfm3dqI3lG0ijfRNrGrYDI7O47qYnGtq User@LAPTOP-P2135T49 + +20) Создал репозитарий на сервере, отправил в него файлы проекта: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git remote add origin git@uit.mpei.ru:StepanovAV/cs-lab02.git + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push -u origin main +The authenticity of host 'uit.mpei.ru (10.1.6.13)' 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 +Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts. +Enumerating objects: 15, done. +Counting objects: 100% (15/15), done. +Delta compression using up to 12 threads +Compressing objects: 100% (13/13), done. +Writing objects: 100% (15/15), 2.06 KiB | 351.00 KiB/s, done. +Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovAV/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +21) Клонировал проект в каталог Боба, настроил Git от имени Боба: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob +$ git clone origin git@uit.mpei.ru:StepanovAV/cs-lab02.git +fatal: repository 'origin' does not exist + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob +$ git clone git@uit.mpei.ru:StepanovAV/cs-lab02.git project +Cloning into 'project'... +Enter passphrase for key '/c/Users/User/.ssh/id_ed25519': +remote: Enumerating objects: 15, done. +remote: Counting objects: 100% (15/15), done. +remote: Compressing objects: 100% (13/13), done. +remote: Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (15/15), 2.06 KiB | 351.00 KiB/s, done. +Resolving deltas: 100% (1/1), done. + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob +$ cd project + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.name 'Bob (StepanovAV)' + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.email 'StepanovAV@mpei.ru' + +22) От имени Боба добавил в программу печать произведения чисел, сделал коммит и отправил его на сервер: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -m 'code: добавлен вывод произведения' +[main cf3d926] code: добавлен вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git status +On branch main +Your branch is ahead of 'origin/main' by 1 commit. + (use "git push" to publish your local commits) + +nothing to commit, working tree clean + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/User/.ssh/id_ed25519': +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 418 bytes | 418.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovAV/cs-lab02.git + 171d96d..cf3d926 main -> main + +23) От имени Алисы выполнил загрузку изменений, просмотрел историю всех веток и передвинул ветку main к скачанной версии: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 398 bytes | 14.00 KiB/s, done. +From uit.mpei.ru:StepanovAV/cs-lab02 + 171d96d..cf3d926 main -> origin/main + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* cf3d926 (origin/main) code: добавлен вывод произведения +* 171d96d (HEAD -> main) git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull --ff-only +Updating 171d96d..cf3d926 +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* cf3d926 (HEAD -> main, origin/main) code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +24) От имени Алисы добавил в программу вывод частного, сделал коммит и отправил его на сервер: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод частного' +[main 746574e] code: добавлен вывод частного + 1 file changed, 2 insertions(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 431 bytes | 431.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovAV/cs-lab02.git + cf3d926..746574e main -> main + +25) От имени Боба выполнил загрузку изменений, просмотрел историю всех веток и передвинул ветку main к скачанной версии: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git fetch +Enter passphrase for key '/c/Users/User/.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 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 411 bytes | 15.00 KiB/s, done. +From uit.mpei.ru:StepanovAV/cs-lab02 + cf3d926..746574e main -> origin/main + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git pull --ff-only +Enter passphrase for key '/c/Users/User/.ssh/id_ed25519': +Updating cf3d926..746574e +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 746574e (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +26) От имени Алисы добавил в программу вывод максимума, сделал коммит и отправил его на сервер: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен вывод максимума' +[main e62cd6d] code: добавлен вывод максимума + 1 file changed, 3 insertions(+) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 458 bytes | 458.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovAV/cs-lab02.git + 746574e..e62cd6d main -> main + +26) От имени Боба добавил в программу вывод минимума, сделал коммит и попытался отправить его на сервер: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -m 'code: добавлен вывод минимума' +[main 6bdb4f7] code: добавлен вывод минимума + 1 file changed, 3 insertions(+) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/User/.ssh/id_ed25519': +To uit.mpei.ru:StepanovAV/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'uit.mpei.ru:StepanovAV/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. + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git fetch +Enter passphrase for key '/c/Users/User/.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 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 438 bytes | 4.00 KiB/s, done. +From uit.mpei.ru:StepanovAV/cs-lab02 + 746574e..e62cd6d main -> origin/main + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 6bdb4f7 (HEAD -> main) code: добавлен вывод минимума +| * e62cd6d (origin/main, origin/HEAD) code: добавлен вывод максимума +|/ +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +// Так как при попытке загрузить коммит Боба на сервер Git выдал ошибку, то было принято решение загрузить коммиты из удаленного хранилища и просмотреть историю всех веток. Оказалось что ветка main локального репозитария (репозитария на "машине Боба") разошлась с веткой main на сервере (origin/main). + +27) От имени Боба пытаюсь переместить его коммит поверх коммита Алисы, но встречаю ошибку, сообщающую о конфликте в main.cpp: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 6bdb4f7... 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 6bdb4f7... code: добавлен вывод минимума + +// Git сообщает, что не может сам разрешить конфликт и предлагает 3 варианта развития событий: продолжить разрешение конфликта с внесением изменений вручную, пропустить разрешение конфликта или же отменить разрешение конфликта и вернуться к состоянию до вызова команды git rebase. + +28) От имени Боба вношу изменения в программу, разрешающие конфликт, добавляю файл в индекс и продолжаю прерванную операцию rebase. После этого проверяю состояние локального репозитария и отправляю изменения на сервер: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ git rebase --continue +[detached HEAD 12fc23c] code: добавлен вывод минимума и минимума + 1 file changed, 4 insertions(+), 2 deletions(-) +Successfully rebased and updated refs/heads/main. + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 12fc23c (HEAD -> main) code: добавлен вывод минимума и минимума +* e62cd6d (origin/main, origin/HEAD) code: добавлен вывод максимума +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/User/.ssh/id_ed25519': +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 433 bytes | 433.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovAV/cs-lab02.git + e62cd6d..12fc23c main -> main + +29) От имени Алисы создаю дополнительную ветку double, в которой изменяю тип переменных на double и провожу в ней коммит. Перехожу обратно в ветку main на "машине Алисы" и синхронизирую её с веткой main на сервере: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* e62cd6d (HEAD -> main, origin/main) code: добавлен вывод максимума +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git branch double + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (double) +$ git add main.cpp + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (double) +$ git commit -m 'code: тип переменных изменён на double' +[double 23202d5] code: тип переменных изменён на double + 1 file changed, 1 insertion(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 413 bytes | 15.00 KiB/s, done. +From uit.mpei.ru:StepanovAV/cs-lab02 + e62cd6d..12fc23c main -> origin/main + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 23202d5 (double) code: тип переменных изменён на double +| * 12fc23c (origin/main) code: добавлен вывод минимума и минимума +|/ +* e62cd6d (HEAD -> main) code: добавлен вывод максимума +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull --ff-only +Updating e62cd6d..12fc23c +Fast-forward + main.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 23202d5 (double) code: тип переменных изменён на double +| * 12fc23c (HEAD -> main, origin/main) code: добавлен вывод минимума и минимума +|/ +* e62cd6d code: добавлен вывод максимума +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +// При просмотре истории всех веток можно увидеть, что ветки опять разделились, но на этот раз ветка main синхронизирована с веткой main на сервере (origin/main), а отделившаяся ветка double не создает никаких конфликтов. + +30) От имени Алисы объединяю ветки main и double и отправляю измененияя на сервер: + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git merge double +Auto-merging main.cpp +Merge made by the 'ort' strategy. + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* d232b79 (HEAD -> main) merge: объединены ветки main и double +|\ +| * 23202d5 (double) code: тип переменных изменён на double +* | 12fc23c (origin/main) code: добавлен вывод минимума и минимума +|/ +* e62cd6d code: добавлен вывод максимума +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 10, done. +Counting objects: 100% (10/10), done. +Delta compression using up to 12 threads +Compressing objects: 100% (6/6), done. +Writing objects: 100% (6/6), 811 bytes | 811.00 KiB/s, done. +Total 6 (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:StepanovAV/cs-lab02.git + 12fc23c..d232b79 main -> main + +User@LAPTOP-P2135T49 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* d232b79 (HEAD -> main, origin/main) merge: объединены ветки main и double +|\ +| * 23202d5 (double) code: тип переменных изменён на double +* | 12fc23c code: добавлен вывод минимума и минимума +|/ +* e62cd6d code: добавлен вывод максимума +* 746574e code: добавлен вывод частного +* cf3d926 code: добавлен вывод произведения +* 171d96d git: создан список игнорируемых каталогов +* 838620b code: добавлен вывод разности +* c4c1a5a code: добавлен вывод суммы +* 4de8eef build: добавлен файл проекта +* 088d317 code: заготовка программы + +// Из истории всех веток репозитария видно, что ветки объединились в одну, и в результирующей ветке хранятся все окончательные изменения, сделанные Алисой и Бобом, переданные на сервер. \ No newline at end of file