Отчет по лабораторной работе № 2 "Система контроля версий Git"

Выполнил: Тарасов Е. Е.
Группа:   А-03-24
Проверил:

Примечание: работа выполнялась на Windows.

1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$

2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ ls

3. Создал каталоги Алисы и Боба, создал каталог "project",
изучил команду "cd" в процессе:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ mkdir alice

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ mkdir bob

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd alice

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ mkdir project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd project

4. Инициализировал репозитарий и поменял название ветки с master на main:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/jonny-junior/Desktop/lab02/alice/pr
oject/.git/

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main

4.1. Посмотрел что находится в каталоге .git:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ ls -A
.git/

4.2. Настроил репозитарий Алисы, чтобы коммиты были от её имени, а также указал свои данные(имя и почта):

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.name 'Alice (TarasovEE)'

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.email 'TarasovYY@mpei.ru'

5. Создал проекты в CodeBlocks и коммиты, проверил каталог .git/ и другие файлы в папке project:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ ls -A
.git/  bin/  main.cpp  obj/  project.cbp

6. Занёс файлы под контроль версий:

6.1 Проверил состояние рабочей версии:

$ git status
On branch main

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)

Все файлы в папке project не отслеживаются Git. 

6.2. Занёс файл под Git:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

6.3. Проверил состояние рабочей копии:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main

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 все остальные файлы, по-прежнему, не отслеживаются.

6.4. Вывел сообщение для заднного коммита:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[main (root-commit) 41192cd] code: заготовка программы
 1 file changed, 9 insertions(+)
 create mode 100644 main.cpp

7. Составил сообщение к коммитам:

7.1. Занёс файл project.cbp под Git и составил к нему сообщение:

jonny-junior@DESKTOP-HPH6RBV 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 touch
es it

Windows вывел сообщение о том, Git хранит этот файл в изменённом виде.

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main 0f9ebab] build: добавлен файл проекта
 1 file changed, 40 insertions(+)
 create mode 100644 project.cbp

7.2. Проверил состояние рабочей копии:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bin/
        obj/

nothing added to commit but untracked files present (use "git add" to track)

На данный момент Git не отслеживает только 2 папки: bin/ и obj/.

8. Создал коммиты с изменениями:

8.1. Проверил состояние репозитория после изменения файла:

jonny-junior@DESKTOP-HPH6RBV 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/
        project.depend
        project.layout

no changes added to commit (use "git add" and/or "git commit -a")

Git вывел, что файл main.cpp был изменён и нужно закоммитить изменения.

8.2. Закоммитил изменения в файле тремя способами:

8.2.1. 1 способ:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен ввод и вывод a и b"
[main 22c9b94] code: добавлен ввод и вывод a и b
 1 file changed, 3 insertions(+), 2 deletions(-)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен вывод суммы a и b"
[main 631ff69] code: добавлен вывод суммы a и b
 1 file changed, 1 insertion(+)

8.2.2. 2 способ:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен вывод разности a и b"
[main 0b83a40] code: добавлен вывод разности a и b
 1 file changed, 1 insertion(+)

8.2.3. 3 способ:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m "code: добавлен вывод разности a и b"
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bin/
        obj/
        project.depend
        project.layout

nothing added to commit but untracked files present (use "git add" to track)

Во время использования 3 способа я не вносил никаких изменений, так как это не трбовалось в лабораторной.

9. Игнорирование файлов:

9.1. Проверил состояние репозитория после создания файла .gitignore и внесения туда папки bin:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        obj/
        project.depend
        project.layout

nothing added to commit but untracked files present (use "git add" to track)

Файл bin отсутствует в списке неотслоеживаемых, вместо него появился файл gitignore.

9.2. Проверил состояние репозитоия после внесения в gitignore файлов obj и *.layout:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        project.depend

nothing added to commit but untracked files present (use "git add" to track)

Остались только два файла.

9.3. Создал коммит с gitignore и проверил репозитарий после этого:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: игнорирование файлов'
[main 88be7b4] git: игнорирование файлов
 1 file changed, 3 insertions(+)
 create mode 100644 .gitignore

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

nothing added to commit but untracked files present (use "git add" to track)

10. Просмотрел историю:

10.1. Открыл журнал репозитария:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log
commit 88be7b47050d8d9938397ca821ac42ecc1c64925 (HEAD -> main)
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 15:00:44 2025 +0300

    git: игнорирование файлов

commit 0b83a40305a7ebb3d879c5c9cdf67effcdb66de1
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:39:48 2025 +0300

    code: добавлен вывод разности a и b

commit 631ff69bda317d762f70971303beff1e2b75c1e9
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:34:35 2025 +0300

    code: добавлен вывод суммы a и b

commit 22c9b94f7fa567cb161ee1b92fb527b8488bf8a7
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:25:02 2025 +0300

    code: добавлен ввод и вывод a и b

10.2. Посмотрел файлы, изменённые в коммитах:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --stat
commit 88be7b47050d8d9938397ca821ac42ecc1c64925 (HEAD -> main)
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 15:00:44 2025 +0300

    git: игнорирование файлов

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

commit 0b83a40305a7ebb3d879c5c9cdf67effcdb66de1
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:39:48 2025 +0300

    code: добавлен вывод разности a и b

 main.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 631ff69bda317d762f70971303beff1e2b75c1e9
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:34:35 2025 +0300

    code: добавлен вывод суммы a и b

10.3. Посмотрел коммиты компактно:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
88be7b4 (HEAD -> main) git: игнорирование файлов
0b83a40 code: добавлен вывод разности a и b
631ff69 code: добавлен вывод суммы a и b
22c9b94 code: добавлен ввод и вывод a и b
0f9ebab build: добавлен файл проекта
41192cd code: заготовка программы

10.4. Посмотрел коммиты для всех веток: 

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 88be7b4 (HEAD -> main) git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

10.5. Посмотрел коммиты, связанные с main.cpp:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- main.cpp
commit 0b83a40305a7ebb3d879c5c9cdf67effcdb66de1
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:39:48 2025 +0300

    code: добавлен вывод разности a и b

commit 631ff69bda317d762f70971303beff1e2b75c1e9
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:34:35 2025 +0300

    code: добавлен вывод суммы a и b

commit 22c9b94f7fa567cb161ee1b92fb527b8488bf8a7
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:25:02 2025 +0300

    code: добавлен ввод и вывод a и b

commit 41192cddf652cbda07756d971ae8cac2bb021bb5
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sat Apr 5 18:01:31 2025 +0300

    code: заготовка программы

10.6. Посмотрел коммиты с "code" в сообщении:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "code:"
commit 0b83a40305a7ebb3d879c5c9cdf67effcdb66de1
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:39:48 2025 +0300

    code: добавлен вывод разности a и b

commit 631ff69bda317d762f70971303beff1e2b75c1e9
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:34:35 2025 +0300

    code: добавлен вывод суммы a и b

commit 22c9b94f7fa567cb161ee1b92fb527b8488bf8a7
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:25:02 2025 +0300

    code: добавлен ввод и вывод a и b

commit 41192cddf652cbda07756d971ae8cac2bb021bb5
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sat Apr 5 18:01:31 2025 +0300

    code: заготовка программы

10.6. Посмторел поледний коммит:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD
commit 88be7b47050d8d9938397ca821ac42ecc1c64925 (HEAD -> main)
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 15:00:44 2025 +0300

    git: игнорирование файлов

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout

10.7. Внёс изменения в последний коммит, и посмторел их:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index e84d77b..8d75565 100644
--- a/main.cpp
+++ b/main.cpp
@@ -9,4 +9,5 @@ int main()
     cin >> a >> b;
     cout << "A + B = " << a + b << '\n';
     cout << "A - B = " << a - b << '\n';
+    cout << "A * B = " << a * b << '\n';
 }

10.8. Посмотрел изменения между первым и последним коммитом:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~5 HEAD
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
diff --git a/main.cpp b/main.cpp
index b4392ec..e84d77b 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,9 @@ using namespace std;

 int main()
 {
-    cout << "Hello world!" << endl;
-    return 0;
+    cout << "Enter A and B: ";
+    int a, b;
+    cin >> a >> b;
+    cout << "A + B = " << a + b << '\n';
+    cout << "A - B = " << a - b << '\n';
 }

10.9. Закоммитил вывод произведения:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен вывод суммы a и b"
[main a3b52ea] code: добавлен вывод суммы a и b
 1 file changed, 1 insertion(+)

10.10. Откатил изменения и потом вернул их:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 88be7b4 git: игнорирование файлов

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp

11. Отпарвка проекта на сервер:

11.1. Создал ключ:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/jonny-junior/.ssh/id_ed25519):
Enter passphrase for "/c/Users/jonny-junior/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/jonny-junior/.ssh/id_ed25519
Your public key has been saved in /c/Users/jonny-junior/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Wf67BiCbAaN+EPe47aY0c/pRgFDn39cP9UIcHG093mY jonny-junior@DESKTOP-HPH6RBV
The key's randomart image is:
+--[ED25519 256]--+
|  ... .      .oo.|
|  ..++       ..o+|
|   +.=o   .   +.+|
|  o . +o.=   o oE|
| . . o =S.o . +o.|
|  . o +.  .o   + |
|   .+.o    ..   .|
|   . =o.    ..   |
|    o+.    .o.   |
+----[SHA256]-----+

11.2. Запустил агент и загрузил ключ:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ eval $(ssh-agent -s)
Agent pid 2004

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ ssh-add
Enter passphrase for /c/Users/jonny-junior/.ssh/id_ed25519:
Identity added: /c/Users/jonny-junior/.ssh/id_ed25519 (jonny-junior@DESKTOP-HPH6RBV)

11.3. Отобразил для проверки открытый ключ:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhmtVfaNrRl2RQcfj1yfK9qV4fuIhfpyxzQn+tE3P6N jonny-junior@DESKTOP-HPH6RBV

11.4. Отправил проект на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote add origin git@uit.mpei.ru:TarasovYY/cs-lab02.git

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push -u origin main
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
Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts.
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 4 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 2.35 KiB | 401.00 KiB/s, done.
Total 18 (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:TarasovYY/cs-lab02.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

11.5. Получил адрес и каталог:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote -v
origin  git@uit.mpei.ru:TarasovYY/cs-lab02.git (fetch)
origin  git@uit.mpei.ru:TarasovYY/cs-lab02.git (push)

Необходимо было получить их, так как заранее я их не знал.

11.6. Перешёл в каталог Боба и получил проект с сервера:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd bob

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:TarasovYY/cs-lab02.git project
Cloning into 'project'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (18/18), done.
Resolving deltas: 100% (2/2), done.

11.7. Перешёл в каталог project и настроил Git Боба:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (TarasovEE)'

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.email 'TarasovYY@mpei.ru'

11.8. От лица Боба добавил изменения в файл(вывод произведения) и закоммитил их:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m "code: добавлен вывод произведения a и b"
[main 130ff05] code: добавлен вывод произведения a и b
 1 file changed, 1 insertion(+)

11.9. Прверил, что изменения были именно от лица Боба:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --stat
commit 130ff0511696137c69cd5b57ada65544f31c8651 (HEAD -> main)
Author: Bob (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 13 21:09:39 2025 +0300

    code: добавлен вывод произведения a и b

 main.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 88be7b47050d8d9938397ca821ac42ecc1c64925 (origin/main, origin/HEAD)
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 15:00:44 2025 +0300

    git: игнорирование файлов

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

commit 0b83a40305a7ebb3d879c5c9cdf67effcdb66de1
Author: Alice (TarasovEE) <TarasovYY@mpei.ru>
Date:   Sun Apr 6 10:39:48 2025 +0300

    code: добавлен вывод разности a и b

12. Совместная работа над проектом без конфликтов и правок:

12.1. Отправил коммит Боба на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 435 bytes | 435.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:TarasovYY/cs-lab02.git
   88be7b4..130ff05  main -> main

12.2. Перешёл в каталог Алисы и загрузил изменения:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd alice

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd project

jonny-junior@DESKTOP-HPH6RBV 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), 415 bytes | 6.00 KiB/s, done.
From uit.mpei.ru:TarasovYY/cs-lab02
   88be7b4..130ff05  main       -> origin/main

12.3. Проверил на соответствие рабочие копии Алисы и Боба:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 130ff05 (origin/main, origin/HEAD) code: добавлен вывод произведения a и
 b
* 88be7b4 (HEAD -> main) git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

Ветка main отстаёт от ветки origin/main на один коммит.

12.4. Продвинул ветку на один коммит:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating 88be7b4..130ff05
Fast-forward
 main.cpp | 1 +
 1 file changed, 1 insertion(+)

Ещё раз проверил истрию веток:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 130ff05 (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод пр
оизведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

Теперь ветка не отстаёт.

12.5. Добавил изменения(вывод деления) и закоммитил их:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен вывод деления a и b"
[main 1a0469d] code: добавлен вывод деления a и b
 1 file changed, 1 insertion(+)
12.6. Снова проверил историю ветки:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 1a0469d (HEAD -> main) code: добавлен вывод деления a и b
* 130ff05 (origin/main, origin/HEAD) code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

origin/main отстаёт от main.

12.7. Загрузил изменеия на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 421 bytes | 421.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:TarasovYY/cs-lab02.git
   130ff05..1a0469d  main -> main

12.8. Зашёл в каталог Боба и загрузил изменеия с сервера:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd bob

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 401 bytes | 3.00 KiB/s, done.
From uit.mpei.ru:TarasovYY/cs-lab02
   130ff05..1a0469d  main       -> origin/main

12.9. Проверил историю веток:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 1a0469d (origin/main, origin/HEAD) code: добавлен вывод деления a и b
* 130ff05 (HEAD -> main) code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

Ветка main отстаёт от ветки origin/main.

12.10. Продвинул ветку и проверил историю:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull --ff-only
Updating 130ff05..1a0469d
Fast-forward
 main.cpp | 1 +
 1 file changed, 1 insertion(+)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 1a0469d (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод деления a и b
* 130ff05 code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

Теперь положения веток совпадают.

13. Разрешение конфликтов правок при совместной работе:

13.1. Перешёл в каталог Алисы и добавил вывод максимума и отправил его на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd alice

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен вывод максимума"
[main 9e7f23c] code: добавлен вывод максимума
 1 file changed, 4 insertions(+)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enter passphrase for key '/c/Users/jonny-junior/.ssh/id_ed25519':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 447 bytes | 223.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:TarasovYY/cs-lab02.git
   1a0469d..9e7f23c  main -> main

13.2. Добавил переход на следующую строку:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd alice

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлен вывод максимума и переход на следущую строку"
[main febb8eb] code: добавлен вывод максимума и переход на следущую строку
 1 file changed, 2 insertions(+), 2 deletions(-)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enter passphrase for key '/c/Users/jonny-junior/.ssh/id_ed25519':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 446 bytes | 446.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:TarasovYY/cs-lab02.git
   9e7f23c..febb8eb  main -> main

13.3. Перешёл в каталог Боба и добавил вывод минимума, после чего отправил его на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd bob

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m "code: добавлен вывод минимума"
[main f992b5a] code: добавлен вывод минимума
 1 file changed, 4 insertions(+)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/jonny-junior/.ssh/id_ed25519':
To uit.mpei.ru:TarasovYY/cs-lab02.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'uit.mpei.ru:TarasovYY/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.

Из-за расхождения версий Алисы и Боба, это не удалось сделать.

13.3. От лица Боба загрузил коммиты:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git fetch
Enter passphrase for key '/c/Users/jonny-junior/.ssh/id_ed25519':
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 818 bytes | 2.00 KiB/s, done.
From uit.mpei.ru:TarasovYY/cs-lab02
   1a0469d..febb8eb  main       -> origin/main

13.4. Попытался перенести коммит Боба вверх:

jonny-junior@DESKTOP-HPH6RBV 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 f992b5a... 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".
hint: Disable this message with "git config set advice.mergeConflict false"
Could not apply f992b5a... code: добавлен вывод минимума

Не удалось это сделать, так как версия Боба расходится с версией Алисы:

13.5. Изменил код и закоммитил его, после чего продолжил перемещение:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m "code: добавлен вывод минимума и максимума"
[detached HEAD b17bfa6] code: добавлен вывод минимума и максимума
 1 file changed, 4 insertions(+)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git rebase --continue
Successfully rebased and updated refs/heads/main.

13.6. отправил изменения на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/jonny-junior/.ssh/id_ed25519':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 434 bytes | 434.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:TarasovYY/cs-lab02.git
   febb8eb..b17bfa6  main -> main

13.7. Посмотрел историю веток:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* b17bfa6 (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод минимума
 и максимума
* febb8eb code: добавлен вывод максимума и переход на следущую строку
* 9e7f23c code: добавлен вывод максимума
* 1a0469d code: добавлен вывод деления a и b
* 130ff05 code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

14. Оспользование веток:

14.1. Перешёл в каталог Алисы, добавил ветку double и переключился на неё:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob/project (main)
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/bob
$ cd ..

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02
$ cd alice

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice
$ cd project

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git branch double

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'

14.2. Закоммитил изменения целочисленного типа на вещественный:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (double)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (double)
$ git commit -m "code: тип переменных изменён на вещественный"
[double 58b7444] code: тип переменных изменён на вещественный
 1 file changed, 1 insertion(+), 1 deletion(-)

14.3. Переключился на ветку main и проверил историю веток:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 58b7444 (double) code: тип переменных изменён на вещественный
* febb8eb (HEAD -> main, origin/main, origin/HEAD) code: добавлен вывод максимум
а и переход на следущую строку
* 9e7f23c code: добавлен вывод максимума
* 1a0469d code: добавлен вывод деления a и b
* 130ff05 code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

Ветки расходятся.

14.4. Слил веткку double c main:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git merge double
Updating febb8eb..58b7444
Fast-forward
 main.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main|MERGING)
$ git log --oneline --decorate --all --graph
* 58b7444 (HEAD -> main, double) code: тип переменных изменён на вещественный
| * b17bfa6 (origin/main, origin/HEAD) code: добавлен вывод минимума и максимума
|/
* febb8eb code: добавлен вывод максимума и переход на следущую строку
* 9e7f23c code: добавлен вывод максимума
* 1a0469d code: добавлен вывод деления a и b
* 130ff05 code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

14.5. Создал коммит и отправил его на сервер:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main|MERGING)
$ git add main.cpp

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main|MERGING)
$ git commit -m "#code: слияние веток"
[main 7ff6a9d] #code: слияние веток

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enter passphrase for key '/c/Users/jonny-junior/.ssh/id_ed25519':
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 778 bytes | 778.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:TarasovYY/cs-lab02.git
   b17bfa6..7ff6a9d  main -> main

14.6. Проверил историю веток:

jonny-junior@DESKTOP-HPH6RBV MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
*   7ff6a9d (HEAD -> main, origin/main, origin/HEAD) #code: слияние веток
|\
| * b17bfa6 code: добавлен вывод минимума и максимума
* | 58b7444 (double) code: тип переменных изменён на вещественный
|/
* febb8eb code: добавлен вывод максимума и переход на следущую строку
* 9e7f23c code: добавлен вывод максимума
* 1a0469d code: добавлен вывод деления a и b
* 130ff05 code: добавлен вывод произведения a и b
* 88be7b4 git: игнорирование файлов
* 0b83a40 code: добавлен вывод разности a и b
* 631ff69 code: добавлен вывод суммы a и b
* 22c9b94 code: добавлен ввод и вывод a и b
* 0f9ebab build: добавлен файл проекта
* 41192cd code: заготовка программы

Всё сошлось.