Отчет по лабораторной работе № 2 "Система контроля версий Git" Выполнил: Юсуфов Ю.Б Группа: А-01-22 Проверил: 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ 2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ ls Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ 3. Создал каталоги Алисы и Боба, создал каталог "project", изучил команду "cd" в процессе: Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ mkdir alice Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ mkdir bob Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ cd bob Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob $ cd .. Yusuf@YunusLap MINGW64 ~/Desktop/lab02 $ cd alice Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice $ mkdir project Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice $ ls project/ 4. Инициализировал репозитарий Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/Yusuf/Desktop/lab02/alice/project/.git/ Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (master) $ Тут же поменяем master на main Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (master) $ git branch -m main Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ Настроим репозитарий Алисы, чтобы коммиты были от ее имени: Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.name 'Alice (YusufovYB)' Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.email 'YusufovYB@mpei.ru' 5. Создал проект на CodeBlock и поместил в репозитарий Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ ls bin/ main.cpp obj/ project.cbp project.layout Посмотрим состояние рабочей копии Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main No commits yet (нету "коммитов") Untracked files: (Неотслеживаемые файлы) (use "git add ..." to include in what will be committed) (Используйте команду "git add ..." чтобы начать отслеживать файлы) bin/ main.cpp obj/ project.cbp project.layout nothing added to commit but untracked files present (use "git add" to track) (нету ничего для "коммита" но отображаются неотслеживаемые файлы) Занесем под Git main.cpp и снова проверим состояние рабочей копии Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main 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 project.layout Заметим, что файл main.cpp теперь отслеживается, а значит мы теперь его можем "закоммитить" Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: заготовка программы' [main (root-commit) 110ab47] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ Теперь добавим файл project.cbp и отметим это "коммитом" Yusuf@YunusLap 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 Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'buld: добавлен файл проекта' [main 2463abc] buld: добавлен файл проекта 1 file changed, 40 insertions(+) create mode 100644 project.cbp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) bin/ obj/ project.layout nothing added to commit but untracked files present (use "git add" to track) Файл проекта пропал из неотслеживаемых файлов. 6. Внесем изменения в код программы, добавим ввод числе a и б Проверим состояние репозитария Yusuf@YunusLap 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/ project.layout no changes added to commit (use "git add" and/or "git commit -a") Появилась строчка, которая говорит, что файл main.cpp был изменен и при этом он не отслеживается Начнем отслеживать этот файл первым способом и "закоммитем" измененния. Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен ввод чисел а и b' [main e6c9e23] code: добавлен ввод чисел а и b 1 file changed, 3 insertions(+), 2 deletions(-) Снова изменим код программы и добавим вывод суммы чисел a и b Проверим снова статус репозитария Yusuf@YunusLap 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/ project.layout no changes added to commit (use "git add" and/or "git commit -a") Опять видем изменения в файле main.cpp, теперь отследим этот файл вторым способом и "закоммитем" его Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git add -u Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен вывод суммы a и b' [main aa88cf5] code: добавлен вывод суммы a и b 1 file changed, 1 insertion(+) Добавим в код программы вывод разности переменных a и b Проверим статус репозитария Yusuf@YunusLap 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/ project.layout no changes added to commit (use "git add" and/or "git commit -a") Вновь видем изменения в файле main.cpp. В этот раз отследим этот файл третим способом и тут же "закоммитем" его Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: добавлен вывод разности переменных a и b' [main 8eb470b] code: добавлен вывод разности переменных a и b 1 file changed, 1 insertion(+) 7. Добавим bin, obj, project.layout в созданный пустой проект в CodeBlock для игнорирования их git bash'ем при вводе команды git status. Созданный файл сохраним под названием .gitignore, добавим для отслеживания и "закоммитем" его $ git status On branch main Changes to be committed: (use "git restore --staged ..." to unstage) new file: .gitignore Как видим, появился файл .gitignore и пропали каталоги bin, obj и файл project.layout Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: .gitignore Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git add .gitignore Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'git: игнорирование bin obj, project.layout, project.depend' [main a60d166] git: игнорирование bin obj, project.layout, project.depend 1 file changed, 4 insertions(+) create mode 100644 .gitignore 8. Откроем журнал журнал репозитария с помощью команды git log Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log commit a60d1665e7a73b34587bab56f66af527f2d09ce3 (HEAD -> main) Author: Alice (YusufovYB) Date: Sat Mar 25 13:33:25 2023 +0300 git: игнорирование bin obj, project.layout, project.depend commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b commit aa88cf543912ef9204b56f84a2f61f4fb9644e23 Author: Alice (YusufovYB) Date: Sat Mar 25 13:07:11 2023 +0300 code: добавлен вывод суммы a и b commit e6c9e23a35edcbd9b48e642b13afcfa079908252 Author: Alice (YusufovYB) Date: Sat Mar 25 12:59:30 2023 +0300 code: добавлен ввод чисел а и b : Опробуем команду git log --stat Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --stat commit a60d1665e7a73b34587bab56f66af527f2d09ce3 (HEAD -> main) Author: Alice (YusufovYB) Date: Sat Mar 25 13:33:25 2023 +0300 git: игнорирование bin obj, project.layout, project.depend .gitignore | 4 ++++ 1 file changed, 4 insertions(+) commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b main.cpp | 1 + 1 file changed, 1 insertion(+) commit aa88cf543912ef9204b56f84a2f61f4fb9644e23 Author: Alice (YusufovYB) Date: Sat Mar 25 13:07:11 2023 +0300 code: добавлен вывод суммы a и b :...skipping... commit a60d1665e7a73b34587bab56f66af527f2d09ce3 (HEAD -> main) Author: Alice (YusufovYB) Date: Sat Mar 25 13:33:25 2023 +0300 git: игнорирование bin obj, project.layout, project.depend .gitignore | 4 ++++ 1 file changed, 4 insertions(+) commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b main.cpp | 1 + 1 file changed, 1 insertion(+) commit aa88cf543912ef9204b56f84a2f61f4fb9644e23 Author: Alice (YusufovYB) Date: Sat Mar 25 13:07:11 2023 +0300 code: добавлен вывод суммы a и b main.cpp | 1 + 1 file changed, 1 insertion(+) commit e6c9e23a35edcbd9b48e642b13afcfa079908252 Author: Alice (YusufovYB) Date: Sat Mar 25 12:59:30 2023 +0300 code: добавлен ввод чисел а и b main.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 2463abc57d29438cd9a96234289edb04b7fabc47 Author: Alice (YusufovYB) Date: Sat Mar 25 12:44:12 2023 +0300 buld: добавлен файл проекта project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit 110ab47f64e3b20e57dfa0fde1666092976adae2 Author: Alice (YusufovYB) Date: Sat Mar 25 12:38:42 2023 +0300 code: заготовка программы main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) ~ ~ ~ ~ (END) Для последнего коммита показывается его хэш(первая строка), кем он был внесен( вторая строка), дата его внесения (третья строка), его содержание (четвертая строка), файл, для которого внесен "коммит" (пятая строка). Напишем команду git log --oneline --decorate Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate a60d166 (HEAD -> main) git: игнорирование bin obj, project.layout, project.depend 8eb470b code: добавлен вывод разности переменных a и b aa88cf5 code: добавлен вывод суммы a и b e6c9e23 code: добавлен ввод чисел а и b 2463abc buld: добавлен файл проекта 110ab47 code: заготовка программы Напишем команду git log --oneline --decorate --all --graph Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * a60d166 (HEAD -> main) git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Найдем коммиты по теме build Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --grep 'buld:' commit 2463abc57d29438cd9a96234289edb04b7fabc47 Author: Alice (YusufovYB) Date: Sat Mar 25 12:44:12 2023 +0300 buld: добавлен файл проекта Теперь найдем коммиты, касающийся project.cbp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log -- project.cbp commit 2463abc57d29438cd9a96234289edb04b7fabc47 Author: Alice (YusufovYB) Date: Sat Mar 25 12:44:12 2023 +0300 buld: добавлен файл проекта 9. Просмотрим предпоследний коммит первым способом Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git show HEAD~1 commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b diff --git a/main.cpp b/main.cpp index d96d258..eff5715 100644 --- a/main.cpp +++ b/main.cpp @@ -8,4 +8,5 @@ int main() int a,b; cin >> a >> b; cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a - b << '\n'; } Посмотрим коммит вторым способом $ git show main~1 commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b diff --git a/main.cpp b/main.cpp index d96d258..eff5715 100644 --- a/main.cpp +++ b/main.cpp @@ -8,4 +8,5 @@ int main() int a,b; cin >> a >> b; cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a - b << '\n'; } Посмотрим коммит третьим способом $ git show 8eb470b4a12735fed370131bfa0933f58172eeb3 commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b diff --git a/main.cpp b/main.cpp index d96d258..eff5715 100644 --- a/main.cpp +++ b/main.cpp @@ -8,4 +8,5 @@ int main() int a,b; cin >> a >> b; cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a - b << '\n'; } 10. Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит. Восплоьзуемся командой git diff и посмотрим на результат Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index eff5715..7f46857 100644 --- a/main.cpp +++ b/main.cpp @@ -9,4 +9,5 @@ int main() cin >> a >> b; cout << "A + B = " << a + b << '\n'; cout << "A + B = " << a - b << '\n'; + cout << "A * B = " << a * b << '\n'; } Нам выдало код из main.cpp, причем "+" перед строкой показывается, что мы добавили строку кода Просмотрим изменения между первым коммитом и коммитом, добавляющим разность переменных Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git show HEAD~1 HEAD~3 commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b diff --git a/main.cpp b/main.cpp index d96d258..eff5715 100644 --- a/main.cpp +++ b/main.cpp @@ -8,4 +8,5 @@ int main() int a,b; cin >> a >> b; cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a - b << '\n'; } commit e6c9e23a35edcbd9b48e642b13afcfa079908252 Author: Alice (YusufovYB) Date: Sat Mar 25 12:59:30 2023 +0300 code: добавлен ввод чисел а и b : 11. "Закоммитем" вывод произведения a и b Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: Добавлен вывод произведения a и b ' [main 5e795c4] code: Добавлен вывод произведения a и b 1 file changed, 1 insertion(+) Откатим состояние рабочей копии Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at a60d166 git: игнорирование bin obj, project.layout, project.depend Добавим над функцией main() комментарий Уберем изменения в main.cpp другим способом Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git checkout HEAD -- main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ Строчка кода из программы пропала 12. Создадим ключи Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Yusuf/.ssh/id_rsa): Created directory '/c/Users/Yusuf/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/Yusuf/.ssh/id_rsa Your public key has been saved in /c/Users/Yusuf/.ssh/id_rsa.pub The key fingerprint is: SHA256:oVYb/gtW+6V0u5iIspTcrFDEy6KTg9HPDR2rEnN6SDw Yusuf@YunusLap The key's randomart image is: +---[RSA 3072]----+ | | | . | | + + | | o + B + | |. E + O S . | | + % O + o . | |. O * = = o . o | | = o.o o = * . | | oo. o = o. | +----[SHA256]-----+ Запустим агента для для загрузка ключа Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ eval $(ssh-agent -s) Agent pid 2097 Загрузим ключ Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ ssh-add Identity added: /c/Users/Yusuf/.ssh/id_rsa (Yusuf@YunusLap) Отобразим открытый ключ Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiF8irof5XSL6pb8oIzqfOwcSNze1rnDO5nrAclnzprlumxV9hYlOr/UDLIpYGPKwCGdVbvX28jI/tIrGyf1gK6S/CJf+dXS6qnuClWk/iRsfz7FcftomHRTw1cXBtMY5fBDBVCdJiQcveWzLFTzUUmzQIE7KGpp4b+BATRw2K8kkR06liy+iWVMXe5TtqC0nZj7AcCbGTCl/ADddbPvJHTJPkfAd00MGLPfJh9WNtR3jJwozIQHWRpzWSHqZrl9Tl59iVh5NqsKEt8gg6IxF44d3jQVBVdVz6HWoenxbfe1K58ClPBowLHfy7uc3MpXHrTB4RE3Rh5ybUGGE2FS3kIND7lqIpmijDLCKIgk8psU558eOqIZqjPvNnskj+shxjePcr91eeps6eLcvD+Uz3kN15iXaFjDBVGHLl7oB/hSC3XWkYBGt8YlraIad7xBVeRAbVdNEhb/Gg2HjCrZ07Y3YiNnANqv09CfyRVldXFjJQhdGgJG+rirnCB3/bI6s= Yusuf@YunusLap Создал ключ в GIT УИТ 12. Создал репозитарий Выполнил указанные рекомендацией команды Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git remote add origin git@uit.mpei.ru:YusufovYB/cs-lab02.git Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git push -u origin main The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established. ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts. Enumerating objects: 18, done. Counting objects: 100% (18/18), done. Delta compression using up to 12 threads Compressing objects: 100% (16/16), done. Writing objects: 100% (18/18), 2.36 KiB | 403.00 KiB/s, done. Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:YusufovYB/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. 13. Открыл bash в каталоге bob, клонировал туда проект и через git config настроил пользователя Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob $ git clone git@uit.mpei.ru:YusufovYB/cs-lab02.git project Cloning into 'project'... remote: Enumerating objects: 18, done. remote: Counting objects: 100% (18/18), done. remote: Compressing objects: 100% (16/16), done. remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (18/18), done. Resolving deltas: 100% (2/2), done. Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob $ cd project Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.name 'Bob(YusufovYB)' Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.email 'YusufovYB@mpei.ru' 14. От лица Боба добавил в код строку вывода произведение чисел a и b, "закоммител". Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git status On branch main Your branch is up to date with 'origin/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 no changes added to commit (use "git add" and/or "git commit -a") Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -m 'code: добавлен вывод произведения a и b' [main 06dee65] code: добавлен вывод произведения a и b 1 file changed, 1 insertion(+) Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git log commit 06dee65817696673831f8980eb223a1f46e12cfc (HEAD -> main) Author: Bob(YusufovYB) Date: Sat Mar 25 21:22:08 2023 +0300 code: добавлен вывод произведения a и b commit a60d1665e7a73b34587bab56f66af527f2d09ce3 (origin/main, origin/HEAD) Author: Alice (YusufovYB) Date: Sat Mar 25 13:33:25 2023 +0300 git: игнорирование bin obj, project.layout, project.depend commit 8eb470b4a12735fed370131bfa0933f58172eeb3 Author: Alice (YusufovYB) Date: Sat Mar 25 13:14:08 2023 +0300 code: добавлен вывод разности переменных a и b commit aa88cf543912ef9204b56f84a2f61f4fb9644e23 Author: Alice (YusufovYB) Date: Sat Mar 25 13:07:11 2023 +0300 code: добавлен вывод суммы a и b : Отправил "коммит" на сервер Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 12 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 429 bytes | 429.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:YusufovYB/cs-lab02.git a60d166..06dee65 main -> main В удаленном репозитарии обновилась ветка code. На машине Алисы выполнил загрузку изменений Yusuf@YunusLap 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), 409 bytes | 51.00 KiB/s, done. From uit.mpei.ru:YusufovYB/cs-lab02 a60d166..06dee65 main -> origin/main При этом в рабочей копии не произошло изменений Посмотрим на историю всех веток Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 06dee65 (origin/main) code: добавлен вывод произведения a и b * a60d166 (HEAD -> main) git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Действительно, ветка main отстает от ветки origin/main на один "коммит" Продвину ветку main к скачанной версии Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull --ff-only Updating a60d166..06dee65 Fast-forward main.cpp | 1 + 1 file changed, 1 insertion(+) Теперь рабочая версия Алисы соответсвует рабочей копии Боба Добавим от лица Алисы в код вывод деления переменных a и b , сделаем "коммит" и отправим его на удаленный репозитарий $ git status On branch main Your branch is up to date with 'origin/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 no changes added to commit (use "git add" and/or "git commit -a") Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: Добавлен вывод деления переменных a и b' [main b914887] code: Добавлен вывод деления переменных a и b 1 file changed, 1 insertion(+) И отправим на удаленный репозитарий Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 12 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 436 bytes | 436.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:YusufovYB/cs-lab02.git 06dee65..b914887 main -> main Ветка main обновилась Через машину Боба загружаем изменения Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git fetch remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 416 bytes | 24.00 KiB/s, done. From uit.mpei.ru:YusufovYB/cs-lab02 06dee65..b914887 main -> origin/main Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * b914887 (origin/main, origin/HEAD) code: Добавлен вывод деления переменных a и b * 06dee65 (HEAD -> main) code: добавлен вывод произведения a и b * a60d166 git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git pull --ff-only Updating 06dee65..b914887 Fast-forward main.cpp | 1 + 1 file changed, 1 insertion(+) Рабочая копия Боба изменилась 15. Добавим в код от лица Алисы вывод максимального из чисел "Закоммитем" изменения и отправим на удаленный репозитарий Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Your branch is up to date with 'origin/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 no changes added to commit (use "git add" and/or "git commit -a") Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: Добавлен вывод наибольшего числа между a и b ' [main 170256f] code: Добавлен вывод наибольшего числа между a и b 1 file changed, 6 insertions(+) Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 12 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 488 bytes | 488.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:YusufovYB/cs-lab02.git b914887..170256f main -> main Теперь от лица Боба добавим печать минимума из чисел "Закоммитем" и отправим на сервер Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git status On branch main Your branch is up to date with 'origin/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 no changes added to commit (use "git add" and/or "git commit -a") Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -m "code: Добавлено вывод наименьшего числа между a и b " [main 69c3981] code: Добавлено вывод наименьшего числа между a и b 1 file changed, 6 insertions(+) Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git push To uit.mpei.ru:YusufovYB/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'uit.mpei.ru:YusufovYB/cs-lab02.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. Загрузим изменения с сервера Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git fetch remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 468 bytes | 26.00 KiB/s, done. From uit.mpei.ru:YusufovYB/cs-lab02 b914887..170256f main -> origin/main Загружаем историю всех веток $ git log --oneline --decorate --graph * 69c3981 (HEAD -> main) code: Добавлено вывод наименьшего числа между a и b * b914887 code: Добавлен вывод деления переменных a и b * 06dee65 code: добавлен вывод произведения a и b * a60d166 git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Удалили метки конфликта из кода, привел его в рабочее состояние с учетом изменений, сделанных Бобом и Алисой. Продолжил дальше команду rebase. Результат Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) $ git rebase --continue Successfully rebased and updated refs/heads/main. Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) $ git log --oneline --decorate --graph * 0514f65 (HEAD) code: Добавлено вывод наименьшего числа между a и b * 170256f (origin/main, origin/HEAD) code: Добавлен вывод наибольшего числа между a и b * b914887 code: Добавлен вывод деления переменных a и b * 06dee65 code: добавлен вывод произведения a и b * a60d166 git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Отправим на удаленный репозитарий Yusuf@YunusLap MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 12 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 473 bytes | 473.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:YusufovYB/cs-lab02.git 170256f..0514f65 main -> main 16. На машине Алисы создадим ветку double и переключимся на нее Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git branch double Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git checkout double Switched to branch 'double' Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (double) $ Поменяю тип переменных a и b на double и закоммичу изменения Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (double) $ git add main.cpp Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (double) $ git commit -m 'code: тип переменных a и b изменен с int на double' [double 3c76fed] code: тип переменных a и b изменен с int на double 1 file changed, 1 insertion(+), 1 deletion(-) Переключусь на ветку main Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ Синхронизирую ветку main у Алисы с удаленным репозитарием Yusuf@YunusLap 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), 453 bytes | 14.00 KiB/s, done. From uit.mpei.ru:YusufovYB/cs-lab02 170256f..0514f65 main -> origin/main Откроем историю веток Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 3c76fed (double) code: тип переменных a и b изменен с int на double | * 0514f65 (origin/main) code: Добавлено вывод наименьшего числа между a и b |/ * 170256f (HEAD -> main) code: Добавлен вывод наибольшего числа между a и b * b914887 code: Добавлен вывод деления переменных a и b * 06dee65 code: добавлен вывод произведения a и b * a60d166 git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Сделаем слияние веток main и double Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git merge double Updating 170256f..3c76fed Fast-forward main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Посмотрим теперь на историю веток Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 3c76fed (HEAD -> main, double) code: тип переменных a и b изменен с int на double | * 0514f65 (origin/main) code: Добавлено вывод наименьшего числа между a и b |/ * 170256f code: Добавлен вывод наибольшего числа между a и b * b914887 code: Добавлен вывод деления переменных a и b * 06dee65 code: добавлен вывод произведения a и b * a60d166 git: игнорирование bin obj, project.layout, project.depend * 8eb470b code: добавлен вывод разности переменных a и b * aa88cf5 code: добавлен вывод суммы a и b * e6c9e23 code: добавлен ввод чисел а и b * 2463abc buld: добавлен файл проекта * 110ab47 code: заготовка программы Изменения применим к машине Алисы и отправим на сервер Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull Auto-merging main.cpp Merge made by the 'ort' strategy. main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) Yusuf@YunusLap MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 12 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 778 bytes | 389.00 KiB/s, done. Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:YusufovYB/cs-lab02.git 0514f65..e4672c7 main -> main