Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ» Институт информационных и вычислительных технологий Кафедра Управления и интеллектуальных технологий Дисциплина: Разработка программного обеспечения систем управления Лабораторная работа №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 ..." 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 ..." to unstage) new file: main.cpp Untracked files: (use "git add ..." 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 ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: main.cpp Untracked files: (use "git add ..." to include in what will be committed) bin/ obj/ no changes added to commit (use "git add" and/or "git commit -a") Появилась строчка, указывающая на измененные файлы, изменения которых не закоммичены. В ситуации с добавлением нового файла строка указывала на файл, который можно коммитить. 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 ..." 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) Date: Sun Mar 30 15:14:59 2025 +0300 git: добавлено игнорирование файлов .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 1881621d244e085c2787531616f4ecb8dc762941 Author: Alice (PakhomovaAY) 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) Date: Sun Mar 30 15:11:21 2025 +0300 code: добавлен вывод суммы двух чисел main.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 9edb9229800acf69d67038b3adcc7b0943bf52b0 Author: Alice (PakhomovaAY) 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) Date: Sun Mar 30 15:06:18 2025 +0300 build: добавлен файл проекта project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit 6799c6741e8f61190e6e6d19d28579a571c0862a Author: Alice (PakhomovaAY) 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) 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) 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) 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 @@ + + + + + + * Откат изменений 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) 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 ", 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 ..." 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: заготовка программы