Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

907 строки
32 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ»
Институт информационных и вычислительных технологий
Кафедра Управления и интеллектуальных технологий
Дисциплина:
Разработка программного обеспечения систем управления
Лабораторная работа №2
Система контроля версий Git
Выполнил студент группы
А-03-24
Пахомова Анна Юрьевна
Вариант: -
Проверил
Козлюк Дмитрий Александрович
Москва 2025
* Вход в терминал и создание структуры каталогов
1. Создала на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02
$
2. Посмотрела файлы в рабочем каталоге командой ls – пусто:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02
$ ls
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02
$
3. Создала каталоги Алисы и Боба, изучила команду cd в процессе:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02
$ mkdir alice
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02
$ mkdir bob
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02
$ cd alice
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice
$ mkdir project
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice
$ cd project
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project
$ cd ..
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice
$ cd project
* Инициализация репозитария и настройка Git
4. Инициализировала хранилище git
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/user/Desktop/lab02/alice/project/.git/
5. Настроила репозитарий Алисы
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.name 'Alice (PakhomovaAY)'
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.email 'PakhomovaAY@mpei.ru'
* Занесение файлов под контроль версий
6. Посмотрела состояние рабочей копии
user@WIN-PNK03JICHSD 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)
1 строка: указывает на ветку
2 строка: говорит о том, что еще не было создано коммитов
3 строка: показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить
4 строка: говорит о том, что нет отслеживаемых файлов, которые можно будет закоммитить
7. Начала отслеживать main.cpp (занесла под git)
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add main.cpp
8. Посмотрела состояние рабочей копии
user@WIN-PNK03JICHSD 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
Появилась строка с файлом, который можно закоммитить, т.к. мы начали его отслеживать.
9. Создала коммит
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 6799c67] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
10. Поменяла название ветки на main
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main
* Составление сообщений к коммитам
11. Занесла под git project.cbp
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add project.cbp
12. Создала коммит
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main 97097c1] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
* Создание коммитов с изменениями
13. Посмотрела состояние после замены на ввод двух чисел
user@WIN-PNK03JICHSD 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")
Появилась строчка, указывающая на измененные файлы, изменения которых не закоммичены. В ситуации с добавлением нового файла строка указывала на файл, который можно коммитить.
14. Сделала коммиты 3 разными способами:
А) Выбрала файл, изменения которого должны войти в коммит, затем сделала коммит:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code; добавлен ввод двух чисел'
[main 9edb922] code; добавлен ввод двух чисел
1 file changed, 3 insertions(+), 1 deletion(-)
Б) Добавила в индекс все изменения, затем сделала коммит:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен вывод суммы двух чисел'
[main 727239e] code: добавлен вывод суммы двух чисел
1 file changed, 2 insertions(+)
В) Добавила все изменения в индекс и сделать коммит в один шаг:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m "code: добавлен вывод разности двух чисел"
[master 1881621] code: добавлен вывод разности двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)
* Игнорирование файлов
15. Создала файл gitignore и сделала коммит:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch master
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)
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: добавлено игнорирование файлов'
[master 5d5062e] git: добавлено игнорирование файлов
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
* Работа с журналом репозитария
16. Посмотрела журнал репозитария 3 способами:
А) git log –stat
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --stat
commit 3ed003b3b82c5a453adbc17304f6bcb45045b4a4 (HEAD -> main)
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:14:59 2025 +0300
git: добавлено игнорирование файлов
.gitignore | 2 ++
1 file changed, 2 insertions(+)
commit 1881621d244e085c2787531616f4ecb8dc762941
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:12:08 2025 +0300
code: добавлен вывод разности двух чисел
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit 727239e04eab296019265b2627bbe1e3698da4ba
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:11:21 2025 +0300
code: добавлен вывод суммы двух чисел
main.cpp | 2 ++
1 file changed, 2 insertions(+)
commit 9edb9229800acf69d67038b3adcc7b0943bf52b0
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:09:12 2025 +0300
code; добавлен ввод двух чисел
main.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
commit 97097c1fc03b1234eb4277b6770f14a384341f89
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:06:18 2025 +0300
build: добавлен файл проекта
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
commit 6799c6741e8f61190e6e6d19d28579a571c0862a
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:04:47 2025 +0300
code: заготовка программы
main.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
Для последнего коммита показывается его хэш; автор; дата; сам коммит; перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.).
В последней стр. приведена статистика изменений данных файлов.
Б) git log --oneline --decorate
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
3ed003b (HEAD -> main) git: добавлено игнорирование файлов
1881621 code: добавлен вывод разности двух чисел
727239e code: добавлен вывод суммы двух чисел
9edb922 code; добавлен ввод двух чисел
97097c1 build: добавлен файл проекта
6799c67 code: заготовка программы
В) git log --oneline --decorate --all --graph
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 3ed003b (HEAD -> main) git: добавлено игнорирование файлов
* 1881621 code: добавлен вывод разности двух чисел
* 727239e code: добавлен вывод суммы двух чисел
* 9edb922 code; добавлен ввод двух чисел
* 97097c1 build: добавлен файл проекта
* 6799c67 code: заготовка программы
17. Поиск коммитов по теме build:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "build:"
commit 97097c1fc03b1234eb4277b6770f14a384341f89
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:06:18 2025 +0300
build: добавлен файл проекта
18. Поиск коммитов, затрагивающих project.cbp
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit 97097c1fc03b1234eb4277b6770f14a384341f89
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:06:18 2025 +0300
build: добавлен файл проекта
* Просмотр коммитов
19. Посмотрела предпоследний коммит
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD~1
commit 1881621d244e085c2787531616f4ecb8dc762941
Author: Alice (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 15:12:08 2025 +0300
code: добавлен вывод разности двух чисел
diff --git a/main.cpp b/main.cpp
index dec99f2..9bade74 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,7 +7,8 @@ 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;
}
* Просмотр изменений
20. Просмотрела изменения в рабочей копии:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index 9bade74..15a93c2 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +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;
}
1 строка. Указывает, что сравниваются две версии файла main.cpp
2 строка. Хеши состояния файлов до и после изменений.
3 строка. Старая версия файла.
4 строка. Новая версия файла.
5 строка. -8,7 означает, что раньше блок кода занимал 7 строк, а теперь занимает 8. Изменение произошло в файле начиная с 8-й строки.
Далее идет код и удаленные и добавленные строки.
21. Просмотрела изменения между самым первым коммитом и коммитом, добавляющим вывод разности.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~5 HEAD~1
diff --git a/main.cpp b/main.cpp
index b4392ec..9bade74 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,11 @@ 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>
* Откат изменений
22. Закоммитила вывод произведения.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m "code: добавлен вывод произведения"
[main f559a6e] code: добавлен вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
23. Сделала откат коммита к состоянию в последнем коммите.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 3ed003b git: добавлено игнорирование файлов
Далее добавила комментарий в коде. Коммит не был сделан.
24. Сделала откат изменений другим способом (к состоянию в последнем коммите).
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp
Этим способом можно откатывать изменения отдельных файлов.
* Обмен кодом через удаленное хранилище
25. Создание пары ключей
user@WIN-PNK03JICHSD 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):
/c/Users/user/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase for "/c/Users/user/.ssh/id_ed25519" (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:DOa8849gHMrX6niEf2kcQdrz40/6NwnWEvwuDecEyw8 user@WIN-PNK03JICHSD
The key's randomart image is:
+--[ED25519 256]--+
| |
| . |
| o+ . |
| +.o+ + |
| .+ S+ . * |
| ..o.+. o E = |
| ooB..+ o.% . |
| +o==..o. O |
| .oooo.oooo . |
+----[SHA256]-----+
26. Запустила агент.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 1999
27. Загрузила ключ
user@WIN-PNK03JICHSD 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@WIN-PNK03JICHSD)
28. Отобразила ключ:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICLtxIDO4cP1TH3nE0pHmm5F3zoR19lTtuOLBFKYHoml user@WIN-PNK03JICHSD
29. Настройка связи с удаленным хранилищем:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote add origin git@uit.mpei.ru:PakhomovaAY/cs-lab02.git
user@WIN-PNK03JICHSD 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.39 KiB | 612.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:PakhomovaAY/cs-lab02.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
30. Отобразила адрес проекта:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote -v
origin git@uit.mpei.ru:PakhomovaAY/cs-lab02.git (fetch)
origin git@uit.mpei.ru:PakhomovaAY/cs-lab02.git (push)
Переключение на машину Боба.
* Получение проекта с сервера
31. Клонирование проекта:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:PakhomovaAY/cs-lab02.git project
Cloning into 'project'...
Enter passphrase for key '/c/Users/user/.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.
32. Переключение на каталог project.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob
$ cd project
33. Настройка хранилища Боба.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (PakhomovaAY)'
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.email 'PakhomovaAY@mpei.ru'
* Совместная работа над проектом без конфликтов правок
34. С машины Боба добавляются изменения в коде и делается коммит:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -a -m "code: добавлен вывод произведения"
[main 1319811] code: добавлен вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git show HEAD
commit 1319811cf80c18e5481649e8fd90dfeb93b96174 (HEAD -> main)
Author: Bob (PakhomovaAY) <PakhomovaAY@mpei.ru>
Date: Sun Mar 30 16:14:28 2025 +0300
code: добавлен вывод произведения
diff --git a/main.cpp b/main.cpp
index 9bade74..15a93c2 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +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;
}
35. Отправка коммита Боба на сервер.
user@WIN-PNK03JICHSD 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 16 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:PakhomovaAY/cs-lab02.git
3ed003b..1319811 main -> main
Переключение на машину Алисы.
36. Загрузка изменений, сделанных Бобом:
user@WIN-PNK03JICHSD 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 | 8.00 KiB/s, done.
From uit.mpei.ru:PakhomovaAY/cs-lab02
3ed003b..1319811 main -> origin/main
37. Посмотрела историю веток:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 1319811 (origin/main, origin/HEAD) code: добавлен вывод произведения
* 3ed003b (HEAD -> main) git: добавлено игнорирование файлов
* 1881621 code: добавлен вывод разности двух чисел
* 727239e code: добавлен вывод суммы двух чисел
* 9edb922 code; добавлен ввод двух чисел
* 97097c1 build: добавлен файл проекта
* 6799c67 code: заготовка программы
Ветка main отстает на один коммит от ветки origin/main.
38. Продвинула ветку main к скачанной версии:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating 3ed003b..1319811
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
39. С машины Алисы добавляется вывод деления в коде и делается коммит:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m "code: добавлен вывод деления"
[main 02de2ce] code: добавлен вывод деления
1 file changed, 2 insertions(+), 1 deletion(-)
40. Коммит Алисы отправляется на сервер:
user@WIN-PNK03JICHSD 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), 430 bytes | 430.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:PakhomovaAY/cs-lab02.git
1319811..02de2ce main -> main
Переключение на машину Боба.
41. Загрузка изменений на машине Боба.
user@WIN-PNK03JICHSD 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), 410 bytes | 21.00 KiB/s, done.
From uit.mpei.ru:PakhomovaAY/cs-lab02
1319811..02de2ce main -> origin/main
42. Продвижение ветки вперед.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull --ff-only
Enter passphrase for key '/c/Users/user/.ssh/id_ed25519':
Updating 1319811..02de2ce
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
* Разрешение конфликтов правок при совместной работе
На машине Алисы:
43. В код добавляется вывод максимума и отправляется на сервер.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m "code: добавлен вывод максимума"
[main 0e95fa5] code: добавлен вывод максимума
1 file changed, 2 insertions(+), 1 deletion(-)
user@WIN-PNK03JICHSD 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), 422 bytes | 422.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
На машине Боба:
44. В код добавляется вывод минимума и происходит попытка отправить коммит на сервер. Но выходит ошибка, т.к. Боб пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -a -m "code: добавлен вывод минимума"
[main b816e19] code: добавлен вывод минимума
1 file changed, 2 insertions(+), 1 deletion(-)
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/user/.ssh/id_ed25519':
To uit.mpei.ru:PakhomovaAY/cs-lab02.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'uit.mpei.ru:PakhomovaAY/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
[detached HEAD 23313f9] code: добавлен вывод минимума
1 file changed, 2 insertions(+), 2 deletions(-)
Successfully rebased and updated refs/heads/main.
45. Загрузка версии с сервера
user@WIN-PNK03JICHSD 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), 410 bytes | 21.00 KiB/s, done.
From uit.mpei.ru:PakhomovaAY/cs-lab02
1319811..02de2ce main -> origin/main
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 23313f9 (HEAD -> main) code: добавлен вывод минимума
|* 0e95fa5 (origin/main, origin/HEAD) code: добавлен вывод максимума
| /
* 02de2ce code: добавлен вывод деления
* 1319811 code: добавлен вывод произведения
* 3ed003b git: добавлено игнорирование файлов
* 1881621 code: добавлен вывод разности двух чисел
* 727239e code: добавлен вывод суммы двух чисел
* 9edb922 code; добавлен ввод двух чисел
* 97097c1 build: добавлен файл проекта
* 6799c67 code: заготовка программы
46. Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase.
$ git rebase origin/main
Auto-merging project/project.cpp
CONFLICT (content): Merge conflict in project/project.cpp
error: could not apply 23313f9... 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 23313f9... code: добавление вывода минимума
Команда завершается ошибкой. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код.
47. Затем загружаем изменения в индекс и продолжаем операцию git rebase –continue.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
(main|REBASE 1/1)
$ git add -u
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git status
interactive rebase in progress; onto 0e95fa5
Last command done (1 command done):
pick 23313f9 code: добавлен вывод минимума
No commands remaining.
You are currently rebasing branch 'main' on '0e95fa5'.
(all conflicts fixed: run "git rebase --continue")
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: main.cpp
$ git rebase --continue
[detached HEAD 23313f9] code: добавлен вывод минимума
1 file changed, 4 insertions(+)
Successfully rebased and updated refs/heads/main.
48. История хранилища:
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 23313f9 (HEAD -> main) code: добавлен вывод минимума
* 0e95fa5 (origin/main, origin/HEAD) code: добавлен вывод максимума
* 02de2ce code: добавлен вывод деления
* 1319811 code: добавлен вывод произведения
* 3ed003b git: добавлено игнорирование файлов
* 1881621 code: добавлен вывод разности двух чисел
* 727239e code: добавлен вывод суммы двух чисел
* 9edb922 code; добавлен ввод двух чисел
* 97097c1 build: добавлен файл проекта
* 6799c67 code: заготовка программы
49. Отправила изменения на сервер.
user@WIN-PNK03JICHSD 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 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 443 bytes | 443.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:PakhomovaAY/cs-lab02.git
0e95fa5..23313f9 main -> main
* Использование веток
Пока Боб синхронизировал изменения, Алиса решила изменить тип чисел с целых на действительные.
50. Создала ветку double и перешла на неё.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git branch double
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'
51. Закоммитила изменения.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m “code: тип данных изменен на double”
[double 4ad6484] code: тип данных изменен на double
1 file changed, 1 insertion(+), 1 deletion(-)
52. Переключилась на ветку main.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
53. Синхронизация ветки main «на машине Алисы» с сервером. 
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/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), 410 bytes | 21.00 KiB/s, done.
From uit.mpei.ru:PakhomovaAY/cs-lab02
1319811..02de2ce main -> origin/main
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Enter passphrase for key '/c/Users/user/.ssh/id_ed25519':
Updating 1319811..02de2ce
Fast-forward
main.cpp | 4 ++++
1 file changed, 4 insertions(+)
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 4ad6484 (double) code: тип данных изменен на double
| * 23313f9 (origin/main, origin/HEAD) code: добавлен вывод минимума
|/
* 0e95fa5 code: добавлен вывод максимума
* 02de2ce code: добавлен вывод деления
* 1319811 code: добавлен вывод произведения
* 3ed003b git: добавлено игнорирование файлов
* 1881621 code: добавлен вывод разности двух чисел
* 727239e code: добавлен вывод суммы двух чисел
* 9edb922 code; добавлен ввод двух чисел
* 97097c1 build: добавлен файл проекта
* 6799c67 code: заготовка программы
54. Объединяем ветки с помощью git merge.
user@WIN-PNK03JICHSD 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(-)
55. Отправляем на сервер.
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 16 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 752 bytes | 752.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:PakhomovaAY/cs-lab02.git
23313f9..9bf29d7 main -> main
56. История всех веток
user@WIN-PNK03JICHSD MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 9bf29d7 (HEAD -> main, origin/main, origin/HEAD) Merge branch 'double'
|\
| * 4ad6484 (double) code: тип данных изменен на double
* | 23313f9 code: добавлен вывод минимума
|/
* 0e95fa5 code: добавлен вывод максимума
* 02de2ce code: добавлен вывод деления
* 1319811 code: добавлен вывод произведения
* 3ed003b git: добавлено игнорирование файлов
* 1881621 code: добавлен вывод разности двух чисел
* 727239e code: добавлен вывод суммы двух чисел
* 9edb922 code; добавлен ввод двух чисел
* 97097c1 build: добавлен файл проекта
* 6799c67 code: заготовка программы