Отчет по лабораторной работе № 2 "Система контроля версий Git" Выполнил: Бушманов Артём Сергеевич Группа: А-01-23 Проверил: Примечание: работа выполнялась на Windows. 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1 $ 2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1 $ ls 3. Создал каталоги Алисы и Боба, создал каталог "project", изучил команду "cd" в процессе: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1 $ mkdir alice Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1 $ mkdir bob Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1 $ cd alice Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice $ mkdir project Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice $ cd project 4. Инициализировал репозитарий: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project $ git init Initialized empty Git repository in C:/Users/Bushk/Desktop/lab02.1/alice/project/.git/ Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ У меня еще нету первого коммита и подсказки, поэтому я не стал его менять. 5. Настроил репозитарий Алисы:gir Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git config user.name 'Alice (BushmanovAS)' Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git config user.email 'BushmanovAS@mpei.ru' 6. Запустил CodeBlocks и создал проект в репозитарии Алисы, а затем собрал его. 7. Просмотрел состояние рабочей копии: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git status On branch mastergit 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) 8. Добавил файл main.cpp в индекс, проверил состояние рабочей копии и выполнил коммит с файлом main.cpp: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git add main.cpp Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/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 В состоянии рабочей копии изменились неотслеживаемые файлы, так как main.cpp начал отслеживаться и будет закоммичен в следующей строке: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git commit -m "code: заготовка программы" [master (root-commit) 2b2150e] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp 9. Добавил файл project.cbp в индекс и сделал коммит с ним: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git add project.cbp warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git commit -m "build: добавлен файл проекта" [master b484123] build: добавлен файл проекта 1 file changed, 40 insertions(+) create mode 100644 project.cbp 10. Заменим тело функции main() на ввод двух чисел, просмотрел состояние репозитория и закоммитил изменения: cout << "Enter A and B: "; int a, b; cin >> a >> b; Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git status On branch master 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") // Добавилась строка о том, что у коммита пока ничего не поменялось Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git add main.cpp Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git commit -m 'code: Ввод чисел a и b' [master d3045ef] code: Ввод чисел a и b 1 file changed, 4 insertions(+), 2 deletions(-) 11. Добавил в программу вывод суммы a и b, а затем закоммитил: int main() { ... cout << "A + B = " << a + b; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git add -u Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git commit -m 'code: вывод суммы a и b' [master c69b7f1] code: вывод суммы a и b 1 file changed, 1 insertion(+) 12. Добавил в программу вывод разности a и b и закоммитил: int main() { ... cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git commit -a -m 'code: вывод разности a и b' [master bb8c89f] code: вывод разности a и b 1 file changed, 3 insertions(+), 1 deletion(-) 13. Поменял имя ветки на main командой git branch -m main: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (master) $ git branch -m main 14. Cоздал в CodeBlocks новый файл (.gitignore) и записал в него строки /bin /obj и /project.layout, проверил его на работоспособность и закоммитил: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/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) .gitignore no changes added to commit (use "git add" and/or "git commit -a") Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git add .gitignore Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git commit -m 'build: git' [main 0fafa07] build: git 1 file changed, 3 insertions(+) create mode 100644 .gitignore 14. Попробовал команду git log и ее опции: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log commit 0fafa0797fd3af00ddc7902c47cd8e91c7a75793 (HEAD -> main) Author: Alice (BushmanovAS) Date: Sat Apr 13 09:21:59 2024 +0300 build: git commit bb8c89f02e579d02ca35e3ed0b11310776d5d671 Author: Alice (BushmgitanovAS) Date: Sat Apr 13 09:13:08 2024 +0300 code: вывод разности a и b commit c69b7f1a0d26770e4643e2d37118f1dec1949d75 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:11:56 2024 +0300 code: вывод суммы a и b commit d3045efff44e771ab811296de83b3e51676e5bd3 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:10:00 2024 +0300 code: Ввод чисел a и b commit b484123f1b9412f11383a0a64812abfdbed8ff28 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:04:21 2024 +0300 build: добавлен файл проекта commit 2b2150e2b13fd8bd54de072ed8b77ea0c3ad2b64 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:01:31 2024 +0300 code: заготовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log --stat // Для последнего коммита: commit 0fafa0797fd3af00ddc7902c47cd8e91c7a75793 (HEAD -> main) // Его хэш Author: Alice (BushmanovAS) // Автор и его email Date: Sat Apr 13 09:21:59 2024 +0300 // Дата build: git // Сообщение .gitignore | 3 +++ // Изменённый(или добавленный) файл | количество изменённых строк (кратко) 1 file changed, 3 insertions(+) // Количество изменённых файлов | количество изменённых строк commit bb8c89f02e579d02ca35e3ed0b11310776d5d671 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:13:08 2024 +0300 code: вывод разности a и b main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit c69b7f1a0d26770e4643e2d37118f1dec1949d75 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:11:56 2024 +0300 code: вывод суммы a и b main.cpp | 1 + 1 file changed, 1 insertion(+) commit d3045efff44e771ab811296de83b3e51676e5bd3 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:10:00 2024 +0300 code: Ввод чисел a и b main.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit b484123f1b9412f11383a0a64812abfdbed8ff28 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:04:21 2024 +0300 build: добавлен файл проекта project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit 2b2150e2b13fd8bd54de072ed8b77ea0c3ad2b64 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:01:31 2024 +0300 code: заготовка программы main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log --oneline --decorate 0fafa07 (HEAD -> main) build: git bb8c89f code: вывод разности a и b c69b7f1 code: вывод суммы a и b d3045ef code: Ввод чисел a и b b484123 build: добавлен файл проекта 2b2150e code: заготовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log --oneline --decorate --all --graph * 0fafa07 (HEAD -> main) build: git * bb8c89f code: вывод разности a и b * c69b7f1 code: вывод суммы a и b * d3045ef code: Ввод чисел a и b * b484123 build: добавлен файл проекта * 2b2150e code: заготовка программы 15. Нашёл коммиты по теме build, а затем коммиты, затргивающие project.cbp: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log --grep 'build:' commit 0fafa0797fd3af00ddc7902c47cd8e91c7a75793 (HEAD -> main) Author: Alice (BushmanovAS) Date: Sat Apr 13 09:21:59 2024 +0300 build: git commit b484123f1b9412f11383a0a64812abfdbed8ff28 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:04:21 2024 +0300 build: добавлен файл проекта Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log -- project.cbp commit b484123f1b9412f11383a0a64812abfdbed8ff28 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:04:21 2024 +0300 build: добавлен файл проекта 16. Просмотрел предпоследний коммит тремя способами: 1) git show HEAD~1 2) git show main~1 3) git show ecc914b 1. Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git show HEAD~1 commit bb8c89f02e579d02ca35e3ed0b11310776d5d671 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:13:08 2024 +0300 code: вывод разности a и b diff --git a/main.cpp b/main.cpp index 3354bf0..fff2af2 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; } 2. Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git show main~1 commit bb8c89f02e579d02ca35e3ed0b11310776d5d671 Author: Alice (BushmanovAS) Date: Sat Apr 13 09:13:08 2024 +0300 code: вывод разности a и b 8cc diff --git a/main.cpp b/main.cpp index 3354bf0..fff2af2 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b; + cout << "A + B = " << a + b << '\n'; + << "A - B = " << a - b << '\n'; + } 3. Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git show bb8c89 commit bb8c89f02e579d02ca35e3ed0b11310776d5d671 Author: Alice (BusbuhmanovAS) Date: Sat Apr 13 09:13:08 2024 +0300 code: вывод разности a и b diff --git a/main.cpp b/main.cpp index 3354bf0..fff2af2 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b; + cout << "A + B = " << a + b << '\n'; + << "A - B = " << a - b << '\n'; + } 17. Добавил в main.cpp печать произведения чисел, а затем просмотрел изменения в рабочей копии с различным количеством аргументов: cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A * B = " << a * b << '\n'; Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index fff2af2..64da2d3 100644 --- a/main.cpp +++ b/main.cpp @@ -7,8 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; // Убранные строки - << "A - B = " << a - b << '\n'; - + cout << "A + B = " << a + b << '\n' // Добавленные строки + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git diff HEAD~2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d72a82 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin +/obj +/project.layout diff --git a/main.cpp b/main.cpp index 3354bf0..64da2d3 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git diff HEAD~2 HEAD diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d72a82 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin +/obj +/project.layout diff --git a/main.cpp b/main.cpp index 3354bf0..fff2af2 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b; + cout << "A + B = " << a + b << '\n'; + << "A - B = " << a - b << '\n'; + } 18. Просмотрел изменения между самым первым коммитом и коммитом, добавляющим вывод разности (перед этим узнал хэши нужных коммитов): Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline bf87a61 (HEAD -> main) build: git 2585311 code: вывод разности a и b 8ccc2ca code: вывод суммы a и b bf5359a code: ввод чисел a и b 9deeaf2 build: добавление файл проекта 33e309e code: загатовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff 33e309 2585311 diff --git a/main.cpp b/main.cpp index b4392ec..9eedbd6 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,9 @@ using namespace std; int main() { - cout << "Hello world!" << endl; - return 0; + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b <<'\n' + << "A - B = " << a - b <<'\n'; } diff --git a/project.cbp b/project.cbp new file mode 100644 index 0000000..99bb702 --- /dev/null +++ b/project.cbp @@ -0,0 +1,40 @@ + + + + + + 19. Закоммитил изменения в рабочей версии: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git commit -a -m 'code: вывод произведения a и b' [main 7edfc07] code: вывод произведения a и b 1 file changed, 3 insertions(+), 3 deletions(-) 20. Откатил изменения двумя способами: 1) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at 0fafa07 build: git 2) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git checkout HEAD -- main.cpp 21. Зарегестрировался на сервере Git УИТ, создал пару ключей, запустил агента, загрузил в него ключ, а затем изобразил открытый ключ: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ ssh-keygen Generating public/private ed25519 key pair. Enter file in which to save the key (/c/Users/Bushk/.ssh/id_ed25519): Created directory '/c/Users/Bushk/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/Bushk/.ssh/id_ed25519 Your public key has been saved in /c/Users/Bushk/.ssh/id_ed25519.pub The key fingerprint is: SHA256:N/v42Ttt6Ivs2cypIWFYxpD0Itc1qWdWyPHH1BBeo6w Bush@DESKTOP-LENOVO The key's randomart image is: +--[ED25519 256]--+ | .o. .++o++| | .= .=+o+o| | . o *. +o o| | o =. = . | | S =E | | o + | | o . o | | = Xo.o| | .oXoX= | +----[SHA256]-----+ Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ eval $(ssh-agent -s) Agent pid 776 Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ ssh-add Enter passphrase for /c/Users/Bushk/.ssh/id_ed25519: Identity added: /c/Users/Bushk/.ssh/id_ed25519 (Bush@DESKTOP-LENOVO) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPRgUXLBXMxwjwobJGfvtd0x1OMBpGar9VBoBejwySiR Bush@DESKTOP-LENOVO 22. Скопировал открытый ключ и добавил его в список открытых ключей своей учетной записи. 23. Создал пустой репозитарий на сервере и добавил в него свои файлы: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git remote add origin git@uit.mpei.ru:BushmanovAS/cs-lab02.git error: remote origin already exists. Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git push -u origin main Enumerating objects: 18, done. Counting objects: 100% (18/18), done. Delta compression using up to 4 threads Compressing objects: 100% (16/16), done. Writing objects: 100% (18/18), 2.27 KiB | 332.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 http://uit.mpei.ru/git/BushmanovAS/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. 24. Скопировал проект в каталоге Боба, перешел в project и настроил Git: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob $ git clone http://uit.mpei.ru/git/BushmanovAS/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), reoject used 0 (delta 0), pack-reusegitd 0 Receiving objects: 100% (18/18), done. Resolving deltas: 100% (2/2), done. Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob $ cd project Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git config user.name 'Bob (BushmanovAS)' Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git config user.email 'BushmanovAS@mpei.ru' 25. «На машине Боба» добавил в программу печать произведения чисел, сделал коммит и отправил его на сервер: int main() { ... << "A * B = " << a * b << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git commit -a -m 'code: печать произвдедения a и b' [main 2246604] code: печать произвдедения a и b 1 file changed, 1 insertion(+) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 423 bytes | 423.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 http://uit.mpei.ru/git/BushmanovAS/cs-lab02.git 0fafa07..2246604 main -> main 26. «На машине Алисы» выполнил загрузку изменений, просмотрел историю всех веток и подвинул ветку main к скачанной версии: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/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), 403 bytes | 9.00 KiB/s, done. From http://uit.mpei.ru/git/BushmanovAS/cs-lab02 0fafa07..2246604 main -> origin/main Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git log --oneline --decorate --all --graph * 2246604 (origin/main) code: печать произвдедения a и b * 0fafa07 (HEAD -> main) build: git * bb8c89f code: вывод разности a и b * c69b7f1 code: вывод суммы a и b * d3045ef code: Ввод чисел a и b * b484123 build: добавлен файл проекта * 2b2150e code: заготовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git pull --ff-only Updating 0fafa07..2246604 Fast-forward main.cpp | 1 + 1 file changed, 1 insertion(+) 27. «На машине Алисы» добавил в программу печать деления чисел, сделал коммит и отправил его на сервер: int main() { ... << "A / B = " << a / b << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git commit -a -m 'code: печать деления a и b' [main a2493d9] code: печать деления a и b 1 file changed, 1 insertion(+), 1 deletion(-) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 413 bytes | 413.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 http://uit.mpei.ru/git/BushmanovAS/cs-lab02.git 2246604..a2493d9 main -> main 28. «На машине Боба» выполнил загрузку изменений, просмотрел историю всех веток и подвинул ветку main к скачанной версии: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/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), 393 bytes | 6.00 KiB/s, done. From http://uit.mpei.ru/git/BushmanovAS/cs-lab02 2246604..a2493d9 main -> origin/main Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git log --oneline --decorate --all --graph * a2493d9 (origin/main, origin/HEAD) code: печать деления a и b * 2246604 (HEAD -> main) code: печать произвдедения a и b * 0fafa07 build: git * bb8c89f code: вывод разности a и b * c69b7f1 code: вывод суммы a и b * d3045ef code: Ввод чисел a и b * b484123 build: добавлен файл проекта * 2b2150e code: заготовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git pull --ff-only Updating 2246604..a2493d9 Fast-forward main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 29. «На машине Алисы» дополнил программу печатью максимума, сделал коммит и отправил его на сервер: int main() { ... << "max(a, b) = " << max(a, b) << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git commit -a -m "code: печать максимума из a и b" [main 2e9c987] code: печать максимума из a и b 1 file changed, 2 insertions(+), 1 deletion(-) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 424 bytes | 424.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 http://uit.mpei.ru/git/BushmanovAS/cs-lab02.git a2493d9..2e9c987 main -> main 30. «На машине Боба» дополнил программу печатью минимума, сделал коммит и попытался отправить его на сервер: int main() { ... << "min(a, b) = " << min(a, b) << '\n'; } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git commit -a -m "code: печать минимума из a и b" [main 9bcde95] code: печать минимума из a и b 1 file changed, 4 insertions(+), 3 deletions(-) git Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git push To http://uit.mpei.ru/git/BushmanovAS/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'http://uit.mpei.ru/git/BushmanovAS/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. 31. «От лица Боба» загрузил коммиты из удаленного хранилища и отобразил историю всех веток: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/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), 404 bytes | 8.00 KiB/s, done. From http://uit.mpei.ru/git/BushmanovAS/cs-lab02 a2493d9..2e9c987 main -> origin/main Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02.1/bob/project (main) $ git log --oneline --all 9bcde95 (HEAD -> main) code: печать минимума из a и b 2e9c987 (origin/main, origin/HEAD) code: печать максимума из a и b a2493d9 code: печать деления a и b 2246604 code: печать произвдедения a и b 0fafa07 build: git bb8c89f code: вывод разности a и b c69b7f1 code: вывод суммы a и b d3045ef code: Ввод чисел a и b b484123 build: добавлен файл проекта 2b2150e code: заготовка программы 32. Попытался переместить коммит Боба поверх коммита Алисы, затем разрешил конфликт, добавил файл в индекс и продолжил прерванную операцию rebase: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/bob/project (main) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply eb185a5... code: печать минимума из a и b 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 eb185a5... code: печать минимума из a и b main.cpp: #include using namespace std; int main() { cout << "Enter A and B: "; 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' <<<<<<< HEAD // Изменения на сервере << "max(a, b) = " << max(a, b) << '\n'; ======= // Изменения в своем проекте << "min(a, b) = " << min(a, b) << '\n'; >>>>>>> eb185a5 (code: печать минимума из a и b) } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) $ git add main.cpp Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) $ git rebase --continue hint: Waiting for your editor to close the file... unix2dos: converting file C:/Users/al/Desktop/lab02/bob/project/.git/COMMIT_EDITMSG to DOS format... dos2unix: converting file C:/Users/al/Desktop/lab02/bob/project/.git/COMMIT_EDITMSG to Unix format... [detached HEAD c977630] code: печать минимума из a и b 1 file changed, 2 insertions(+), 1 deletion(-) Здесь появилась надпись, неуказанная в lab02, которая говорила мне закрыть файл COMMIT_EDITMSG ( code: печать минимума из a и b # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # interactive rebase in progress; onto a80f52d # Last command done (1 command done): # pick eb185a5 code: печать минимума из a и b # No commands remaining. # You are currently rebasing branch 'main' on 'a80f52d'. # # Changes to be committed: # modified: main.cpp # # Untracked files: # project.depend # ), после закрытия которого все пошло по намеченному плану. 33. Убедился, что история хранилища теперь имеет желаемый вид и отправил изменения на сервер: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --all 4c64d5c (origin/main) code: печать минимума из a и b dc761e4 (HEAD -> main) code: печать максимума из a и b 0624bd4 code: печать деления a и b 7a94e35 code: вывод произведения a и b 9b28ce8 build: git 1b8f9d8 code: вывод разности a и b 5bac51a code: выввод суммы a и b 58fa6b1 code: ввод чисел a и b 323a069 build: дабвлен файл проекта 10601d0 code: загатовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 420 bytes | 420.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 http://uit.mpei.ru/git/BushmanovAS/cs-lab02.git dc761e4..4c64d5c main -> main 34. «На машине Алисы» создал ветку double, переключился на нее, заменил тип переменных a и b на double, сделал коммит и переключился на ветку main: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git branch double Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git checkout double Switched to branch 'double' M main.cpp main.cpp: int main() { ... double a, b; ... } Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (double) $ git commit -a -m "code: изменен тип a и b на double" [double b4a8db2] code: изменен тип a и b на double 1 file changed, 3 insertions(+), 2 deletions(-) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) 35. Синхронизировал ветку main «на машине Алисы» с сервером и просмотрел историю всех веток: Bush@DESKTOP-LENOVO 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), 405 bytes | 21.00 KiB/s, done. From http://uit.mpei.ru/git/VeretennikovMA/cs-lab02 a80f52d..c977630 main -> origin/main Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --all --graph * b4a8db2 (double) code: изменен тип a и b на double | * 4c64d5c (origin/main) code: печать минимума из a и b |/ * dc761e4 (HEAD -> main, doucle) code: печать максимума из a и b * 0624bd4 code: печать деления a и b * 7a94e35 code: вывод произведения a и b * 9b28ce8 build: git * 1b8f9d8 code: вывод разности a и b * 5bac51a code: выввод суммы a и b * 58fa6b1 code: ввод чисел a и b * 323a069 build: дабвлен файл проекта * 10601d0 code: загатовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull --ff-only Updating dc761e4..4c64d5c Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --all --graph * b4a8db2 (double) code: изменен тип a и b на double | * 4c64d5c (HEAD -> main, origin/main) code: печать минимума из a и b |/ * dc761e4 (doucle) code: печать максимума из a и b * 0624bd4 code: печать деления a и b * 7a94e35 code: вывод произведения a и b * 9b28ce8 build: git * 1b8f9d8 code: вывод разности a и b * 5bac51a code: выввод суммы a и b * 58fa6b1 code: ввод чисел a и b * 323a069 build: дабвлен файл проекта * 10601d0 code: загатовка программы 36. Слил ветку main в double, просмотрел историю всез веток репозитария, отправил изменения, а затем снова посмотрел изменения: Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git merge double Already up to date. Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --all --graph * 0f93b11 (HEAD -> main) code: максиум из a и b' |\ | * b4a8db2 (double) code: изменен тип a и b на double * | 4c64d5c (origin/main) code: печать минимума из a и b |/ * dc761e4 (doucle) code: печать максимума из a и b * 0624bd4 code: печать деления a и b * 7a94e35 code: вывод произведения a и b * 9b28ce8 build: git * 1b8f9d8 code: вывод разности a и b * 5bac51a code: выввод суммы a и b * 58fa6b1 code: ввод чисел a и b * 323a069 build: дабвлен файл проекта * 10601d0 code: загатовка программы Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enter passphrase for key '/c/Users/Bushk/.ssh/id_ed25519': Enter passphrase for key '/c/Users/Bushk/.ssh/id_ed25519': Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 4 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 535 bytes | 535.00 KiB/s, done. Total 4 (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:BushmanovAS/cs-lab02.git 4c64d5c..0f93b11 main -> main Bush@DESKTOP-LENOVO MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --all --graph * 0f93b11 (HEAD -> main, origin/main) code: максиум из a и b' |\ | * b4a8db2 (double) code: изменен тип a и b на double * | 4c64d5c code: печать минимума из a и b |/ * dc761e4 (doucle) code: печать максимума из a и b * 0624bd4 code: печать деления a и b * 7a94e35 code: вывод произведения a и b * 9b28ce8 build: git * 1b8f9d8 code: вывод разности a и b * 5bac51a code: выввод суммы a и b * 58fa6b1 code: ввод чисел a и b * 323a069 build: дабвлен файл проекта * 10601d0 code: загатовка программы