# Отчет по лабораторной работе № 2 «Система контроля версий Git» Выполнил: Мордашов С. A \ Группа: А-01-24 \ Проверил: Филатов С.A Примечание: работа выполнялась на Windows. 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ ``` 2. Просмотрел файлы в рабочем каталоге можно командой `ls` — пусто: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ ls Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ ``` 3. Создал каталоги Алисы и Боба, создал каталог `project`, изучил команду `cd` в процессе: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ mkdir alice Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ mkdir bob Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd bob Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ cd .. Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd alice Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ mkdir project Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ ls project/ Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ cd project ``` 4. Инициализировал репозитарий: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/Mi/OneDrive/Рабочий стол/lab02/alice/project/.git/ ``` У меня имя ветки по умолчанию не настроено. Git создал ветку под названием `master`, что видно в приглашении терминала. По описанию из методички должна была появиться подсказка `hint:` для изменения имени, но в моей версии `Git-2.48.1-64-bit` она не высветилась. 5. Изменим имя ветки `master`, на `main` для удобства. Применим команду `git branch -m main`, а затем проверим, создался ли репозиторий, c помощью команды `ls -A`: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) $ git branch -m main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ ls -A .git/ ``` 6. Настроим репозитарий Алисы, чтобы коммиты были от ее имени: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git config user.name 'Alice (MordashovSA)' Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git config user.email 'MordashovSA@mpei.ru' ``` 7. Запустил CodeBlocks и создал проект в репозитарии Алисы: ##### Параметры были выбраны такие: Project title: `project` Folder to create project in: `C:\Users\Mi\OneDrive\Рабочий стол\lab02\alice` Project filename: `project.cbp` Resulting filename: `C:\Users\Mi\OneDrive\Рабочий стол\lab02\alice\project\project.cbp` ##### Структура файлов выглядит таким образом: ``` lab02 ├── alice │ └── project <--------- текущий рабочий каталог │ ├── .git <--------- создан командой "git init" │ ├── bin <--------- создан CodeBlocks при сборке │ ├── obj <--------- (то же самое) │ ├── main.cpp <-- код программы │ └── project.cbp <-- файл проекта └── bob ``` 8. Вернувшись в Git Bash, просмотрим состояние рабочей копии: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git status On branch main - выведена информация о текущей ветке main 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) - чтобы включить неотслеживаемый файл в коммит, нужно использовать команду git add. ``` 9. Добавим файл main.cpp в индекс и закомили его: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp ``` проверили внесение файла: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/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 ``` закоммили: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'code: заготовка программы' [main (root-commit) 1476d9a] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp ``` аналогично с project.cbp: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/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 Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git status On branch main Changes to be committed: (use "git restore --staged ..." to unstage) new file: project.cbp Untracked files: (use "git add ..." to include in what will be committed) bin/ obj/ Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'build: | add project file' [main 0f25a14] build: | add project file 1 file changed, 38 insertions(+) create mode 100644 project.cbp ``` 10. Различия между случаем, когда добавлялся новый файл, и когда изменился существующий ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/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") ``` 11. Закомим main.cpp снова 1 способом (ввод a, b): ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp git commit -m "..." [main f6890c8] ... 1 file changed, 4 insertions(+), 1 deletion(-) ``` 12. Коммим ещё a+b ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/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") Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add -u `git add -u — это команда для подготовки к коммиту только изменённых и удалённых файлов, но не любых неотслеживаемых файлов.` git commit -m "..." [main 014403c] ... 1 file changed, 1 insertion(+) ``` 13. Коммим ещё и a-b : ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/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") Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -a -m "..." - `— это команда в системе контроля версий Git, которая позволяет пропустить этап подготовки (с помощью git add) для изменённых файлов и зафиксировать их за один шаг.` [main cc90111] ... 1 file changed, 2 insertions(+), 2 deletions(-) ``` 14. Игнорирование файлов католога project c помощью .gitignore, и его занесение в git (создание коммита) Содержимое .gitignore: /bin /obj /project.layout /project.depend занесение: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) .gitignore nothing added to commit but untracked files present (use "git add" to track) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add .gitignore Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git status On branch main Changes to be committed: (use "git restore --staged ..." to unstage) new file: .gitignore Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'git' [main c4878e1] git 1 file changed, 4 insertions(+) create mode 100644 .gitignore ``` 15. Просмотрели журнал коммитов 3-мя способами: 1-й: ``` $ git log --stat commit c4878e158000087a27662e5a55388a9cd244ad96 (HEAD -> main) (отображается хэш-номер, а также имя ветки проекта) Author: Alice (MordashovSA) Date: Sun Apr 6 20:24:33 2025 +0300 git .gitignore | 4 ++++ 1 file changed, 4 insertions(+) (1 файл изменён 4 строки добавилось) commit cc90111dc34b722e8e951c1cf0b683e126dfa291 Author: Alice (MordashovSA) Date: Sun Apr 6 20:03:59 2025 +0300 ... main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 014403c534015ce10bf1b4b69d463c01f8f9aa67 Author: Alice (MordashovSA) Date: Sun Apr 6 20:00:49 2025 +0300 ... main.cpp | 1 + 1 file changed, 1 insertion(+) commit f6890c870a1ff096e73560a40678989657bd648a Author: Alice (MordashovSA) Date: Sun Apr 6 19:52:51 2025 +0300 ... main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 0f25a148357a7e6fdf687323837f6ece7069bc1d Author: Alice (MordashovSA) Date: Sun Apr 6 19:40:23 2025 +0300 build: | add project file project.cbp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) commit 1476d9a862ab4e6fb4e1fd013aef853737b4f318 Author: Alice (MordashovSA) Date: Sun Apr 6 19:32:23 2025 +0300 code: заготовка программы main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) ``` 2-ым: ``` $ git log --oneline --decorate c4878e1 (HEAD -> main) git cc90111 ... 014403c ... f6890c8 ... 0f25a14 build: | add project file 1476d9a code: заготовка программы ``` 3-м: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * c4878e1 (HEAD -> main) git * cc90111 ... * 014403c ... * f6890c8 ... * 0f25a14 build: | add project file * 1476d9a code: заготовка программы ``` Несколько полезных функций: 1) ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log -- main.cpp commit cc90111dc34b722e8e951c1cf0b683e126dfa291 Author: Alice (MordashovSA) Date: Sun Apr 6 20:03:59 2025 +0300 ... commit 014403c534015ce10bf1b4b69d463c01f8f9aa67 Author: Alice (MordashovSA) Date: Sun Apr 6 20:00:49 2025 +0300 ... commit f6890c870a1ff096e73560a40678989657bd648a Author: Alice (MordashovSA) Date: Sun Apr 6 19:52:51 2025 +0300 ... commit 1476d9a862ab4e6fb4e1fd013aef853737b4f318 Author: Alice (MordashovSA) Date: Sun Apr 6 19:32:23 2025 +0300 code: заготовка программы ``` 2) ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --grep "code:" commit 1476d9a862ab4e6fb4e1fd013aef853737b4f318 Author: Alice (MordashovSA) Date: Sun Apr 6 19:32:23 2025 +0300 code: заготовка программы ``` коммиты по теме build, затем коммиты, затрагивающие project.cbp: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --grep "build:" commit 0f25a148357a7e6fdf687323837f6ece7069bc1d Author: Alice (MordashovSA) Date: Sun Apr 6 19:40:23 2025 +0300 build: | add project file Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log -- project.cbp commit 0f25a148357a7e6fdf687323837f6ece7069bc1d Author: Alice (MordashovSA) Date: Sun Apr 6 19:40:23 2025 +0300 build: | add project file ``` 17. просмотр в gitbash самих коммитов 1 C помощью HEAD , а потом с помощью названия ветки просмотрим последний коммит ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show HEAD commit c4878e158000087a27662e5a55388a9cd244ad96 (HEAD -> main) Author: Alice (MordashovSA) Date: Sun Apr 6 20:24:33 2025 +0300 git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df212eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show main commit c4878e158000087a27662e5a55388a9cd244ad96 (HEAD -> main) Author: Alice (MordashovSA) Date: Sun Apr 6 20:24:33 2025 +0300 git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df212eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend ``` предпоследний коммит: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show cc90111 commit cc90111dc34b722e8e951c1cf0b683e126dfa291 Author: Alice (MordashovSA) Date: Sun Apr 6 20:03:59 2025 +0300 ... diff --git a/main.cpp b/main.cpp index dec99f2..5371b30 100644 --- a/main.cpp +++ b/main.cpp @@ -7,7 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; - + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show HEAD~1 commit cc90111dc34b722e8e951c1cf0b683e126dfa291 Author: Alice (MordashovSA) Date: Sun Apr 6 20:03:59 2025 +0300 ... diff --git a/main.cpp b/main.cpp index dec99f2..5371b30 100644 --- a/main.cpp +++ b/main.cpp @@ -7,7 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; - + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } ``` 18. Некторые команды git diff: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index 5371b30..15a93c2 100644 --- a/main.cpp +++ b/main.cpp @@ -8,6 +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; } Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git diff HEAD~2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df212eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend diff --git a/main.cpp b/main.cpp index dec99f2..15a93c2 100644 --- a/main.cpp +++ b/main.cpp @@ -7,7 +7,9 @@ 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' + << "A * B = " << a * b << '\n'; return 0; } Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git diff HEAD~2 HEAD diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df212eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend diff --git a/main.cpp b/main.cpp index dec99f2..5371b30 100644 --- a/main.cpp +++ b/main.cpp @@ -7,7 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; - + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git diff HEAD~5 HEAD~1 diff --git a/main.cpp b/main.cpp index b4392ec..5371b30 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,10 @@ 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..c4697a9 --- /dev/null +++ b/project.cbp @@ -0,0 +1,38 @@ + + + + + + ``` 19. Откат изменений 2-мя способами: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp git commit -m "product" [main 9ad4bf4] product 1 file changed, 3 insertions(+), 1 deletion(-) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show HEAD commit 9ad4bf44cfcd517f8c51a1701db2cc6bf9bf861e (HEAD -> main) Author: Alice (MordashovSA) Date: Sun Apr 6 22:38:48 2025 +0300 product diff --git a/main.cpp b/main.cpp index 5371b30..15a93c2 100644 --- a/main.cpp +++ b/main.cpp @@ -8,6 +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; } Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at c4878e1 git Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout HEAD -- main.cpp ``` 20. Выгрузка на сервер ``` ``` 21. Восстание боба ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ git clone git@uit.mpei.ru:MordashovSA/cs-lab02.git project Cloning into 'project'... Enter passphrase for key '/c/Users/Mi/.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. Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ cd project Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git config user.name 'Bob (MordashovSA)' Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git config user.email 'MordashovSA@mpei.ru' ``` 23. Сначала вносит изменения в проект боб , а потом алиса ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git add main.cpp Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git commit -m "product bob" [main 3937477] product bob 1 file changed, 2 insertions(+), 1 deletion(-) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git push Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': 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), 366 bytes | 183.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:MordashovSA/cs-lab02.git c4878e1..3937477 main -> main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd alice Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ cd project Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git fetch Enter passphrase for key '/c/Users/Mi/.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), 346 bytes | 10.00 KiB/s, done. From uit.mpei.ru:MordashovSA/cs-lab02 c4878e1..3937477 main -> origin/main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 3937477 (origin/main, origin/HEAD) product bob * c4878e1 (HEAD -> main) git * cc90111 ... * 014403c ... * f6890c8 ... * 0f25a14 build: | add project file * 1476d9a code: заготовка программы Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git pull --ff-only Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': Updating c4878e1..3937477 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m "delenie bob" [main a484402] delenie bob 1 file changed, 2 insertions(+), 1 deletion(-) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git push Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': 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), 386 bytes | 193.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:MordashovSA/cs-lab02.git 3937477..a484402 main -> main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd bob Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ cd project Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git fetch Enter passphrase for key '/c/Users/Mi/.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), 366 bytes | 8.00 KiB/s, done. From uit.mpei.ru:MordashovSA/cs-lab02 3937477..a484402 main -> origin/main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * a484402 (origin/main, origin/HEAD) delenie bob * 3937477 (HEAD -> main) product bob * c4878e1 git * cc90111 ... * 014403c ... * f6890c8 ... * 0f25a14 build: | add project file * 1476d9a code: заготовка программы Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git pull --ff-only Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': Updating 3937477..a484402 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ``` 24. Разрешение конфликтов правок при совместной работе: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m "max alice" [main ad602cf] max alice 1 file changed, 6 insertions(+) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git push Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': 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), 409 bytes | 409.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:MordashovSA/cs-lab02.git a484402..ad602cf main -> main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd bob Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ cd project Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git add main.cpp Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git commit -m "min bob" [main 5c71966] min bob 1 file changed, 6 insertions(+) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git push Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': To uit.mpei.ru:MordashovSA/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'uit.mpei.ru:MordashovSA/cs-lab02.git' hint: Updates were rejected because the remote contains work that you do not hint: have locally. This is usually caused by another repository pushing to hint: the same ref. If you want to integrate the remote changes, use hint: 'git pull' before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git fetch Enter passphrase for key '/c/Users/Mi/.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), 389 bytes | 38.00 KiB/s, done. From uit.mpei.ru:MordashovSA/cs-lab02 a484402..ad602cf main -> origin/main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * 5c71966 (HEAD -> main) min bob | * ad602cf (origin/main, origin/HEAD) max alice |/ * a484402 delenie bob * 3937477 product bob * c4878e1 git * cc90111 ... * 014403c ... * f6890c8 ... * 0f25a14 build: | add project file * 1476d9a code: заготовка программы Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply 09cc3de... min bob 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". hint: Disable this message with "git config set advice.mergeConflict false" Could not apply 09cc3de... min bob Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|REBASE 1/1) $ git pull --ff-only error: Pulling is not possible because you have unmerged files. hint: Fix them up in the work tree, and then use 'git add/rm ' hint: as appropriate to mark resolution and make a commit. fatal: Exiting because of an unresolved conflict. Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git pull --ff-only Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': hint: Diverging branches can't be fast-forwarded, you need to either: hint: hint: git merge --no-ff hint: hint: or: E325: ATTENTION Found a swap file by the name "~/OneDrive/Рабочий стол/lab02/bob/project/.git/.COMMIT_EDITMSG.swp" owned by: Mi dated: Mon Apr 07 04:23:47 2025 min bob [detached HEAD 0db9b80] min bob 1 file changed, 6 insertions(+) Successfully rebased and updated refs/heads/main. Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git push Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': 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), 382 bytes | 382.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:MordashovSA/cs-lab02.git ad602cf..0db9b80 main -> main ``` 25. Слияние веток: ``` Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout double error: pathspec 'double' did not match any file(s) known to git Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git branch double Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout double Switched to branch 'double' Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double) $ git commit -a -m "double alice" [double a1421a6] double alice 1 file changed, 1 insertion(+), 1 deletion(-) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double) $ git show HEAD commit a1421a61b4c8461165f0df96709de6025aa2a083 (HEAD -> double) Author: Alice (MordashovSA) Date: Thu Apr 10 20:34:10 2025 +0300 double alice diff --git a/main.cpp b/main.cpp index 88e0a14..13d54db 100644 --- a/main.cpp +++ b/main.cpp @@ -5,7 +5,7 @@ using namespace std; int main() { cout << "Enter A and B: "; - int a, b; + double a, b; cin >> a >> b; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double) $ git checkout MAIN Switched to branch 'MAIN' Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (MAIN) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout p error: pathspec 'p' did not match any file(s) known to git Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git fetch Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': From uit.mpei.ru:MordashovSA/cs-lab02 ad602cf..0db9b80 main -> origin/main Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git pull --ff-only Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': Auto-merging main.cpp Merge made by the 'ort' strategy. main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 5a70cef (HEAD -> main) Merge branch 'double' |\ | * a1421a6 (double) double alice * | 0db9b80 (origin/main, origin/HEAD) min bob |/ * ad602cf max alice * a484402 delenie bob * 3937477 product bob * c4878e1 git * cc90111 ... * 014403c ... * f6890c8 ... * 0f25a14 build: | add project file * 1476d9a code: заготовка программы Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log commit 5a70ceff0acfe5152459a231d1ea074cdf4356b6 (HEAD -> main) Merge: 0db9b80 a1421a6 Author: Alice (MordashovSA) Date: Thu Apr 10 20:41:38 2025 +0300 Merge branch 'double' commit a1421a61b4c8461165f0df96709de6025aa2a083 (double) Author: Alice (MordashovSA) Date: Thu Apr 10 20:34:10 2025 +0300 double alice commit 0db9b808ba1f04a89d1c199a54073dd8bc670143 (origin/main, origin/HEAD) Author: Bob (MordashovSA) Date: Mon Apr 7 16:47:23 2025 +0300 min bob commit ad602cf9a45174cc22227cd21c8e7bd9972a9cb6 Author: Alice (MordashovSA) Date: Mon Apr 7 03:23:28 2025 +0300 Mi@DESKTOP-F1KO4G0 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git push Enter passphrase for key '/c/Users/Mi/.ssh/id_ed25519': 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), 691 bytes | 172.00 KiB/s, done. Total 6 (delta 2), reused 1 (delta 0), pack-reused 0 (from 0) remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:MordashovSA/cs-lab02.git 0db9b80..5a70cef main -> main ```