Отчет по лабораторной работе № 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 <file>..." 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 <file>..." to unstage)
        new file:   main.cpp

Untracked files:
  (use "git add <file>..." 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 <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   main.cpp

Untracked files:
  (use "git add <file>..." 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) <StepanovAV@mpei.ru>
Date:   Sat Mar 23 14:33:45 2024 +0300

    git: создан список игнорируемых каталогов

 .gitignore | 3 +++
 1 file changed, 3 insertions(+)

commit 838620b1da018a0498f300a76485c064b38e8e75
Author: Alice (StepanovAV) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
Date:   Sat Mar 23 14:22:12 2024 +0300

    build: добавлен файл проекта

 project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

commit 088d31746f6d74165f6e1a8352324c47c14ad523
Author: Alice (StepanovAV) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
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) <StepanovAV@mpei.ru>
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 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+       <FileVersion major="1" minor="6" />
+       <Project>
+               <Option title="project" />
+               <Option pch_mode="2" />
+               <Option compiler="gcc" />
+               <Build>
+                       <Target title="Debug">
+                               <Option output="bin/Debug/project" prefix_auto="1" extension_auto="1" />
+                               <Option object_output="obj/Debug/" />
+                               <Option type="1" />
+                               <Option compiler="gcc" />
+                               <Compiler>
+                                       <Add option="-g" />
+                               </Compiler>
+                       </Target>
+                       <Target title="Release">
+                               <Option output="bin/Release/project" prefix_auto="1" extension_auto="1" />
+                               <Option object_output="obj/Release/" />
+                               <Option type="1" />
+                               <Option compiler="gcc" />
+                               <Compiler>
+                                       <Add option="-O2" />
+                               </Compiler>
+                               <Linker>
+                                       <Add option="-s" />
+                               </Linker>
+                       </Target>
+               </Build>
+               <Compiler>
+                       <Add option="-Wall" />
+                       <Add option="-fexceptions" />
+               </Compiler>
+               <Unit filename="main.cpp" />
+               <Extensions>
+                       <lib_finder disable_auto="1" />
+               </Extensions>
+       </Project>
+</CodeBlocks_project_file>

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 <conflicted_files>", 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 description provided
Readme 40 KiB
Languages
C++ 100%