From 5502514a0a8113524d5fdb06939769bca4e3af83 Mon Sep 17 00:00:00 2001
From: DmitriyevDM <dmitriyevdm@mpei.ru>
Date: Mon, 24 Mar 2025 11:17:36 +0000
Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D1=87=D0=B5=D1=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 отчетИ.txt | 1113 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1113 insertions(+)
 create mode 100644 отчетИ.txt

diff --git a/отчетИ.txt b/отчетИ.txt
new file mode 100644
index 0000000..0f18d1b
--- /dev/null
+++ b/отчетИ.txt
@@ -0,0 +1,1113 @@
+Отчет по лабораторной работе № 2 "Система контроля версий Git"
+
+Выполнил: Дмитриев Д. М.
+Группа:   А-03-24
+Проверил: Козлюк Д. А.
+
+Примечание: работа выполнялась на Windows.
+
+1. Вход в терминал и создание структуры каталогов.
+
+Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$
+
+Просмотрел файлы в рабочем каталоге:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$ ls
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$
+
+Создал каталоги Алисы и Боба, изучил команду "cd", создал каталог project в каталоге Алисы:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$ mkdir alice
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$ mkdir bob
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$ cd bob
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob
+$ cd ..
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02
+$ cd alice
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice
+$ mkdir project
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice
+$ cd project
+
+2. Инициализация репозитария и настройка Git.
+
+Инициализируем репозитарий в текущем каталоге (project):
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project
+$ git init
+Initialized empty Git repository in C:/Users/Юля Д/Desktop/lab02/alice/project/.git/
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (master)
+$
+
+Поменяем имя ветки main:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (master)
+$ git branch -m main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Посмотрим данные папки, где сделано git init:
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ ls -A
+.git/
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Настроим репозитарий Алисы, чтобы коммиты были от ее имени:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git config user.name 'Alice (DmitriyevDM)'
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git config user.email 'dmitriyevdm@mpei.ru'
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+3. Создание коммитов
+
+Запустим CodeBlocks и создадим проект в репозитарии Алисы.
+
+Имеем следующую структуру файлов и каталогов: 
+
+lab02
+├── alice
+│   └── project  <--------- текущий рабочий каталог
+│       ├── .git <--------- создан командой "git init"
+│       ├── bin  <--------- создан CodeBlocks при сборке
+│       ├── obj  <--------- (то же самое)
+│       ├── main.cpp    <-- код программы
+│       └── project.cbp <-- файл проекта
+└── bob
+
+Вернемся в Git Bash, просмотрим состояние рабочей копии:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git status
+On branch main <------- ветка на которой находимся
+
+No commits yet <------- сообщается, что нет коммитов
+
+Untracked files: <------- git обнаружил файлы, но он их не отслеживает
+  (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) <---- ничего не было добавлено в область подготовленных файлов, но есть не отслеживаемые файлы.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Добавим файл main.cpp в индекс:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git add main.cpp
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ 
+
+Посмотрим изменения:
+
+Юля Д@JuliaNote 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
+
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Выполним коммит с файлом main.cpp:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -m 'code: заготовка программы'
+[main (root-commit) aacbacc] code: заготовка программы
+ 1 file changed, 9 insertions(+)
+ create mode 100644 main.cpp
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Добавим файл project.cbp в индекс и сделаем коммит с ним:
+
+Юля Д@JuliaNote 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
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -m 'build: добавлен файл проекта'
+[main 2f7477c] build: добавлен файл проекта
+ 1 file changed, 40 insertions(+)
+ create mode 100644 project.cbp
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+4. Создание коммитов с изменениями.
+
+Заменим тело функции main() на ввод двух чисел.
+
+Юля Д@JuliaNote 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  <------- файл 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")
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Cпособ 1. Сначала выбрем файлы, изменения которых должны войти в коммит, затем сделаем коммит:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git add main.cpp
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -m 'code; вывод двух чисел'
+[main 190e4bf] code; вывод двух чисел
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Добавим в программу вывод суммы a и b.
+
+Способ 2. Добавим в индекс все изменения, затем сделаем коммит.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git add -u
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -m 'code: вывод суммы'
+[main 7e1a6b6] code: вывод суммы
+ 1 file changed, 1 insertion(+)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Добавим в программу вывод разности a и b.
+
+Способ 3. Добавим все изменения в индекс и сделаем коммит в один шаг.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -a -m 'code: вывод разности'
+[main a2812cc] code: вывод разности
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+5. Игнорирование файлов.
+
+Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: /bin.
+
+Выполнив git status, можно видеть, что каталог bin не отображается:
+
+Юля Д@JuliaNote 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/
+
+nothing added to commit but untracked files present (use "git add" to track)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Занесем в список игнорируемых каталоги bin и git и файлы *.layout:
+
+Юля Д@JuliaNote 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
+
+nothing added to commit but untracked files present (use "git add" to track)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Создадим коммит с .gitignore:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git add .gitignore
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -a -m 'git: игнорирование'
+[main eb56849] git: игнорирование
+ 1 file changed, 2 insertions(+)
+ create mode 100644 .gitignore
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+6. Просмотр истории.
+
+Пробуем команду git log:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log
+commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main)
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:45:18 2025 +0300
+
+    git: игнорирование
+
+commit a2812cc067a457303cb7513962b4ddaf2137f6f9
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:42:52 2025 +0300
+
+    code: вывод разности
+
+commit 7e1a6b64366d9d5089fe2fdb5c79e174f8c7c43b
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:41:32 2025 +0300
+
+    code: вывод суммы
+
+commit 190e4bf98c1e6895a2e97f7464969d8c5f62a42e
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:40:20 2025 +0300
+
+    code; вывод двух чисел
+
+commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:38:34 2025 +0300
+
+    build: добавлен файл проекта
+
+commit aacbacc4af7c2cb7f57648a1dc668becc0c518ed
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:37:55 2025 +0300
+
+    code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Пробуем команду git log --stat:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --stat
+commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main) <--- хэш коммита, HEAD указывает на main
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru> <--- Автор
+Date:   Wed Mar 19 21:45:18 2025 +0300 <--- Дата
+
+
+    git: игнорирование   <--- Сообщение коммита
+
+ .gitignore | 2 ++  <--- Изменен в gitignore, добавлено 2 строчки
+ 1 file changed, 2 insertions(+) <--- Изменен один файл.
+
+commit a2812cc067a457303cb7513962b4ddaf2137f6f9
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:42:52 2025 +0300
+
+    code: вывод разности
+
+ main.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 7e1a6b64366d9d5089fe2fdb5c79e174f8c7c43b
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:41:32 2025 +0300
+
+    code: вывод суммы
+
+ main.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 190e4bf98c1e6895a2e97f7464969d8c5f62a42e
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:40:20 2025 +0300
+
+    code; вывод двух чисел
+
+ main.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:38:34 2025 +0300
+
+    build: добавлен файл проекта
+
+ project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+commit aacbacc4af7c2cb7f57648a1dc668becc0c518ed
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:37:55 2025 +0300
+
+    code: заготовка программы
+
+ main.cpp | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Пробуем команду git log --oneline --decorate:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --oneline --decorate
+eb56849 (HEAD -> main) git: игнорирование
+a2812cc code: вывод разности
+7e1a6b6 code: вывод суммы
+190e4bf code; вывод двух чисел
+2f7477c build: добавлен файл проекта
+aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Пробуем команду git log --oneline --decorate --all --graph:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --oneline --decorate --all --graph
+* eb56849 (HEAD -> main) git: игнорирование
+* a2812cc code: вывод разности
+* 7e1a6b6 code: вывод суммы
+* 190e4bf code; вывод двух чисел
+* 2f7477c build: добавлен файл проекта
+* aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Коммиты по теме build:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --grep "build:"
+commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:38:34 2025 +0300
+
+    build: добавлен файл проекта
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Коммиты затрагивающие project.cbp:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log -- project.cbp
+commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:38:34 2025 +0300
+
+    build: добавлен файл проекта
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Посмотрим коммит тремя способами:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git show HEAD
+commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main)
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:45:18 2025 +0300
+
+    git: игнорирование
+
+diff --git a/.gitignore b/.gitignore
+new file mode 100644
+index 0000000..4c7473d
+--- /dev/null
++++ b/.gitignore
+@@ -0,0 +1,2 @@
++/bin
++/obj
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git show main
+commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main)
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:45:18 2025 +0300
+
+    git: игнорирование
+
+diff --git a/.gitignore b/.gitignore
+new file mode 100644
+index 0000000..4c7473d
+--- /dev/null
++++ b/.gitignore
+@@ -0,0 +1,2 @@
++/bin
++/obj
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Посмотрим предпоследний коммит:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git show a2812cc
+commit a2812cc067a457303cb7513962b4ddaf2137f6f9
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:42:52 2025 +0300
+
+    code: вывод разности
+
+diff --git a/main.cpp b/main.cpp
+index 1967dd8..984c3d6 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';
+
+ }
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит.
+
+Используем команду git diff:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git diff
+diff --git a/main.cpp b/main.cpp <--- показывает, что сравниваются два файла
+index 984c3d6..ef525e5 100644  <--- хэши версии файла до и после, права доступа к файлу
+--- a/main.cpp  <--- версия файла до изменений
++++ b/main.cpp  <--- версия файла после изменений
+@@ -8,6 +8,7 @@ int main() <--- контекст изменения, в старой версии изменения с 8 строки и затрагиваются 6 строк. в новой версии файла с 8 строки и затрагивают 7 строк.
+     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'; <--- строки начинающиеся с - показывают удаленные строки, строки с + показывают добавленные
+
+
+ }
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git diff HEAD~3 HEAD~1
+diff --git a/main.cpp b/main.cpp
+index 842760d..984c3d6 100644
+--- a/main.cpp
++++ b/main.cpp
+@@ -7,5 +7,7 @@ int main()
+     cout << "Enter A and B: ";
+     int a, b;
+     cin >> a >> b;
++    cout << "A + B = " << a + b << '\n'
++    << "A - B = " << a - b << '\n';
+
+ }
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+7. Откат изменений.
+
+Выполним коммит произведения:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -a -m 'code: вывод произведения'
+[main 5e34991] code: вывод произведения
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Выполним откат изменений:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git reset --hard HEAD~1
+HEAD is now at eb56849 git: игнорирование
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Добавим над функцией main() комментарий:
+// you may type whatever you want
+
+Откатим этот файл к состоянию в последнем коммите:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git checkout HEAD -- main.cpp
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+8. Обмен кодом через удаленное хранилище.
+
+Зарегестрируемся на Git УИТ.
+
+Создал пару ключей:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ ssh-keygen
+Generating public/private ed25519 key pair.
+Enter file in which to save the key (/c/Users/Юля Д/.ssh/id_ed25519):
+/c/Users/Юля Д/.ssh/id_ed25519 already exists.
+Overwrite (y/n)? y
+Enter passphrase for "/c/Users/Юля Д/.ssh/id_ed25519" (empty for no passphrase):
+Enter same passphrase again:
+Your identification has been saved in /c/Users/Юля Д/.ssh/id_ed25519
+Your public key has been saved in /c/Users/Юля Д/.ssh/id_ed25519.pub
+The key fingerprint is:
+SHA256:H7EbOSgDNypJxezP0TuZhLEijHpI7Ud6XoAJLUWyz0w Юля Д@JuliaNote
+The key's randomart image is:
++--[ED25519 256]--+
+| .+=.            |
+| oooo .          |
+| +=E+ o=  .      |
+|.oB=o*+.o. +     |
+|o.+=+++oS+*      |
+|o .+ oo+=. =     |
+| .  + .  .o      |
+|     .           |
+|                 |
++----[SHA256]-----+
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ eval $(ssh-agent -s)
+Agent pid 993
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ ssh-add
+Enter passphrase for /c/Users/Юля Д/.ssh/id_ed25519:
+Identity added: /c/Users/Юля Д/.ssh/id_ed25519 (Юля Д@JuliaNote)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Открытый ключ:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ cat ~/.ssh/id_ed25519.pub
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINlSlTGkxZBE+5YR4YGxyPwRWIHxCiZbNWwAOVScd8B+ Юля Д@JuliaNote
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Скопировал открытый ключ и добавил в список открытых ключей своей учетной записи.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git remote add origin git@uit.mpei.ru:DmitriyevDM/cs-lab02.git
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git push -u origin main
+Enumerating objects: 18, done.
+Counting objects: 100% (18/18), done.
+Delta compression using up to 16 threads
+Compressing objects: 100% (16/16), done.
+Writing objects: 100% (18/18), 2.29 KiB | 234.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:DmitriyevDM/cs-lab02.git
+ * [new branch]      main -> main
+branch 'main' set up to track 'origin/main'.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+8. Клонирование проекта сервера.
+
+Клонируем проект:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob
+$ git clone git@uit.mpei.ru:DmitriyevDM/cs-lab02.git project
+Cloning into 'project'...
+Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519':
+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.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob
+$
+
+"На машине Боба" настроим Git, как это делалось для Алисы:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git config user.name 'Bob (DmitriyevDM)'
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git config user.email 'dmitriyevdm@mpei.ru'
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+«На машине Боба» добавим в программу печать произведения чисел и сделаем коммит. Просмотрим последний коммит и убедимся, что он сделан от имени Боба.
+
+no changes added to commit (use "git add" and/or "git commit -a")
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git commit -a -m 'code: печать произведения двух чисел'
+[main 5008498] code: печать произведения двух чисел
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git log
+commit 5008498cb68167ac1a314668d5db04f58032ae26 (HEAD -> main)
+Author: Bob (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 22:29:50 2025 +0300
+
+    code: печать произведения двух чисел
+
+commit eb568497b89756165bf95582a5c687cc6a958502 (origin/main, origin/HEAD)
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:45:18 2025 +0300
+
+    git: игнорирование
+
+commit a2812cc067a457303cb7513962b4ddaf2137f6f9
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:42:52 2025 +0300
+
+    code: вывод разности
+
+commit 7e1a6b64366d9d5089fe2fdb5c79e174f8c7c43b
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:41:32 2025 +0300
+
+    code: вывод суммы
+
+commit 190e4bf98c1e6895a2e97f7464969d8c5f62a42e
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:40:20 2025 +0300
+
+    code; вывод двух чисел
+
+commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:38:34 2025 +0300
+
+    build: добавлен файл проекта
+
+commit aacbacc4af7c2cb7f57648a1dc668becc0c518ed
+Author: Alice (DmitriyevDM) <dmitriyevdm@mpei.ru>
+Date:   Wed Mar 19 21:37:55 2025 +0300
+
+    code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+Отправим коммит на сервер:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git push
+Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519':
+Enumerating objects: 5, done.
+Counting objects: 100% (5/5), done.
+Delta compression using up to 16 threads
+Compressing objects: 100% (3/3), done.
+Writing objects: 100% (3/3), 436 bytes | 218.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:DmitriyevDM/cs-lab02.git
+   eb56849..5008498  main -> main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+«На машине Алисы» выполним загрузку изменений:
+
+Юля Д@JuliaNote 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), 416 bytes | 41.00 KiB/s, done.
+From uit.mpei.ru:DmitriyevDM/cs-lab02
+   eb56849..5008498  main       -> origin/main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Просмотрим историю всех веток:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --oneline --decorate --all --graph
+* 5008498 (origin/main, origin/HEAD) code: печать произведения двух чисел
+* eb56849 (HEAD -> main) git: игнорирование
+* a2812cc code: вывод разности
+* 7e1a6b6 code: вывод суммы
+* 190e4bf code; вывод двух чисел
+* 2f7477c build: добавлен файл проекта
+* aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Продвинем ветку main к скачанной версии:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git pull --ff-only
+Updating eb56849..5008498
+Fast-forward
+ main.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+«От имени Алисы» добавим в программу печать деления, сделаем коммит, отправим его на сервер и получим новую версию «на машине Боба»:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -a -m 'code: деление двух чисел'
+[main b736caf] code: деление двух чисел
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git push
+Enumerating objects: 5, done.
+Counting objects: 100% (5/5), done.
+Delta compression using up to 16 threads
+Compressing objects: 100% (3/3), done.
+Writing objects: 100% (3/3), 417 bytes | 208.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:DmitriyevDM/cs-lab02.git
+   5008498..b736caf  main -> main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git fetch
+Enter passphrase for key '/c/Users/Юля Д/.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), 397 bytes | 18.00 KiB/s, done.
+From uit.mpei.ru:DmitriyevDM/cs-lab02
+   5008498..b736caf  main       -> origin/main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git log --oneline --decorate --all --graph
+* b736caf (origin/main, origin/HEAD) code: деление двух чисел
+* 5008498 (HEAD -> main) code: печать произведения двух чисел
+* eb56849 git: игнорирование
+* a2812cc code: вывод разности
+* 7e1a6b6 code: вывод суммы
+* 190e4bf code; вывод двух чисел
+* 2f7477c build: добавлен файл проекта
+* aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git pull --ff-only
+Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519':
+Updating 5008498..b736caf
+Fast-forward
+ main.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+9. Разрешение конфликтов правок при совместной работе.
+
+«На машине Алисы» дополним программу печатью максимума, сделаем коммит и отправим его на сервер:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git commit -a -m 'code: печать максимума'
+[main 406555c] code: печать максимума
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git push
+Enumerating objects: 5, done.
+Counting objects: 100% (5/5), done.
+Delta compression using up to 16 threads
+Compressing objects: 100% (3/3), done.
+Writing objects: 100% (3/3), 421 bytes | 210.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:DmitriyevDM/cs-lab02.git
+   b736caf..406555c  main -> main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+«На машине Боба» дополним программу печатью минимума, сделаем коммит и попытаемся отправить его на сервер:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git commit -a -m 'code: печать минимума'
+[main ca785f5] code: печать минимума
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git push
+Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519':
+To uit.mpei.ru:DmitriyevDM/cs-lab02.git
+ ! [rejected]        main -> main (fetch first)
+error: failed to push some refs to 'uit.mpei.ru:DmitriyevDM/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.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+Как можно видеть, удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.
+
+«От лица Боба» загрузим коммиты из удаленного хранилища и отобразим историю всех веток:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git fetch
+Enter passphrase for key '/c/Users/Юля Д/.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), 401 bytes | 28.00 KiB/s, done.
+From uit.mpei.ru:DmitriyevDM/cs-lab02
+   b736caf..406555c  main       -> origin/main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git log --oneline --decorate --all --graph
+* ca785f5 (HEAD -> main) code: печать минимума
+| * 406555c (origin/main, origin/HEAD) code: печать максимума
+|/
+* b736caf code: деление двух чисел
+* 5008498 code: печать произведения двух чисел
+* eb56849 git: игнорирование
+* a2812cc code: вывод разности
+* 7e1a6b6 code: вывод суммы
+* 190e4bf code; вывод двух чисел
+* 2f7477c build: добавлен файл проекта
+* aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+Нужно поместить коммит Боба, поверх коммита Алисы:
+
+Юля Д@JuliaNote 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 ca785f5... 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 ca785f5... code: печать минимума
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
+$
+
+Эта команда завершается с ошибкой, сообщающей о конфликте в main.cpp. Посмотрим состояние хранилища:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
+$ git status
+interactive rebase in progress; onto 406555c <---- в данный момент выполняется rebase
+Last command done (1 command done):
+   pick ca785f5 code: печать минимума
+No commands remaining.
+You are currently rebasing branch 'main' on '406555c'.
+  (fix conflicts and then run "git rebase --continue")
+  (use "git rebase --skip" to skip this patch)
+  (use "git rebase --abort" to check out the original branch)
+
+Unmerged paths:  <----- конфликт слияния
+  (use "git restore --staged <file>..." to unstage)
+  (use "git add <file>..." to mark resolution)
+        both modified:   main.cpp
+
+Untracked files:
+  (use "git add <file>..." to include in what will be committed)
+        
+
+no changes added to commit (use "git add" and/or "git commit -a")
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
+$
+
+
+Git status говорит нам, что мы находимся в середине rebase, возник конфликт в main.cpp.
+
+Удалим метки конфликта, отредактируем код(включает правки Алисы и Боба), программа компилируется и работает.
+
+Добавил файл в индекс и продолжил прерваннуб операцию rebase:
+[detached HEAD cc3acbc] code: печать минимума
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+Successfully rebased and updated refs/heads/main.
+
+Юля Д@JuliaNote 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)
+
+Untracked files:
+  (use "git add <file>..." to include in what will be committed)
+        
+
+nothing added to commit but untracked files present (use "git add" to track)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$ git push
+Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519':
+Enumerating objects: 5, done.
+Counting objects: 100% (5/5), done.
+Delta compression using up to 16 threads
+Compressing objects: 100% (3/3), done.
+Writing objects: 100% (3/3), 419 bytes | 209.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:DmitriyevDM/cs-lab02.git
+   406555c..cc3acbc  main -> main
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/bob/project (main)
+$
+
+10. Использование веток.
+
+Создадим ветку double:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git branch double
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Переключимся на нее:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git checkout double
+Switched to branch 'double'
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (double)
+$
+
+В коде заменим тип переменных a и b на double и сделаем коммит:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (double)
+$ git commit -a -m 'code: переменные типа double'
+[double d79a012] code: переменные типа double
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Переключимся на ветку main:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (double)
+$ git checkout main
+Switched to branch 'main'
+Your branch is up to date with 'origin/main'.
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Посмотрим историю всех веток:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --graph --decorate --oneline --all
+* d79a012 (double) code: переменные типа double
+* 406555c (HEAD -> main, origin/main, origin/HEAD) code: печать максимума
+* b736caf code: деление двух чисел
+* 5008498 code: печать произведения двух чисел
+* eb56849 git: игнорирование
+* a2812cc code: вывод разности
+* 7e1a6b6 code: вывод суммы
+* 190e4bf code; вывод двух чисел
+* 2f7477c build: добавлен файл проекта
+* aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+Сольем ветку double в main:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git merge double
+Updating 406555c..d79a012
+Fast-forward
+ main.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+
+История всех веток:
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$ git log --graph --decorate --oneline --all
+* d79a012 (HEAD -> main, double) code: переменные типа double
+* 406555c (origin/main, origin/HEAD) code: печать максимума
+* b736caf code: деление двух чисел
+* 5008498 code: печать произведения двух чисел
+* eb56849 git: игнорирование
+* a2812cc code: вывод разности
+* 7e1a6b6 code: вывод суммы
+* 190e4bf code; вывод двух чисел
+* 2f7477c build: добавлен файл проекта
+* aacbacc code: заготовка программы
+
+Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main)
+$
+