Отчет по лабораторной работе № 2 "Система контроля версий Git" Выполнил: Антонович А. Н. Группа: А-03-23 Проверил: Козлюк Д. А. Примечание: работа выполнялась на Windows. 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ 2. Просмотрел файлы в рабочем каталоге можно командой "ls" - пусто: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ ls sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ 3. Создал каталоги Алисы и Боба, создал каталог "project", изучил команду "cd" в процессе: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ mkdir alice sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ mkdir bob sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd bob sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ cd .. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02 $ cd alice sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ mkdir project sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ ls project/ sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice $ cd project 4. Инициализировал репозитарий: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/sanya/OneDrive/Рабочий стол/lab02/alice/project/.git/ sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) $ 5. Поменял имя ветки с master на main: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) $ git branch -m main sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ 6. Настроил репозитарий Алисы: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git config user.name 'Alice (AntonovichAN)' sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git config user.email 'AntonovichAN@mpei.ru' 7. Запустил CodeBlocks и создал проект в репозитарии Алисы. 8. Проверил статус: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git status On branch 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) строка "On branch main" означает, что сейчас мы находимся на ветке main строка "No commits yet" означает, что еще не существует коммитов строка "untracked files: (...)" перечисляет, какие файлы не отслеживаются коммитами и подсказывает команду для отслеживания файлов строка "nothing added to commit ..." показывает, что еще ни один файл не добавлен в коммит и присутствуют неотслеживаемые файлы и подсказывает команду для отслеживания файлов 9. Начинаю отслеживать файл main.cpp, и проверяю изменения: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp sanya@DESKTOP-M9EDCFL 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 строка "Changes to be committed:" перечисляет произошедшие изменения - новый отслеживаемый файл main.cpp 10. Выполнил коммит: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'code: заготовка программы' [main (root-commit) c52bc42] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp 11. Добавил файл project.cbp в индекс и сделал с ним коммит: sanya@DESKTOP-M9EDCFL 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 sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'build: добавлен файл проекта' [main c41f6c7] build: добавлен файл проекта 1 file changed, 40 insertions(+) create mode 100644 project.cbp 12. Заменил тело функции main() на ввод двух чисел и проверил статус: sanya@DESKTOP-M9EDCFL 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") строка "Changes not staged for commit:" перечисляет произведенные изменения и подсказывает комманды для коммита изменений или отмены изменений 13. Использовал три способа для коммита измененинй: #первый: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m "code: первое изменение" [main 2b8ab7b] code: первое изменение 1 file changed, 3 insertions(+), 2 deletions(-) #второй: добавил в программу вывод суммы a и b sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add -u sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'code: вывод суммы' [main 88c5c69] code: вывод суммы 1 file changed, 1 insertion(+) #третий: добавил в программу вывод разности a и b sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -a -m 'code: вывод разности' [main 546e058] code: вывод разности 1 file changed, 2 insertions(+), 1 deletion(-) 14. Создал пустой файл в CodeBlocks и занес в список файлы для игнорирования, добавил .gitignore в список отслеживаемых файлов и закоммитил изменения: sanya@DESKTOP-M9EDCFL 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) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add .gitignore sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m 'git: игнорирование файлов' [main 6a362f0] git: игнорирование файлов 1 file changed, 4 insertions(+) create mode 100644 .gitignore 15. Просмотрел историю коммитов разными вариантами: #первый: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log commit 6a362f026be35ff22b92b51dd420b59f59c574f7 (HEAD -> main) Author: Alice (AntonovichAN) Date: Wed Aug 28 20:10:17 2024 +0300 git: игнорирование файлов commit 546e058c9dcc717142c3a95a84cedf6aaa49e900 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:09:22 2024 +0300 code: вывод разности commit 88c5c69583bcde4b9a44f8e7323d61347c3fe3d9 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:08:24 2024 +0300 code: вывод суммы commit 2b8ab7b028c8257a6bc58a238704c91c48b45fc3 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:07:14 2024 +0300 code: первое изменение commit c41f6c70d0b2b343662a0c2ebf3f2438407d6cb8 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:05:47 2024 +0300 build: добавлен файл проекта commit c52bc425786c33d24d55c4c4d00c7bf7f095a351 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:04:43 2024 +0300 code: заготовка программы (END) #второй: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 6a362f0 (HEAD -> main) git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы #третий: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --stat commit 6a362f026be35ff22b92b51dd420b59f59c574f7 (HEAD -> main) Author: Alice (AntonovichAN) Date: Wed Aug 28 20:10:17 2024 +0300 git: игнорирование файлов .gitignore | 4 ++++ 1 file changed, 4 insertions(+) commit 546e058c9dcc717142c3a95a84cedf6aaa49e900 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:09:22 2024 +0300 code: вывод разности main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 88c5c69583bcde4b9a44f8e7323d61347c3fe3d9 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:08:24 2024 +0300 code: вывод суммы main.cpp | 1 + 1 file changed, 1 insertion(+) commit 2b8ab7b028c8257a6bc58a238704c91c48b45fc3 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:07:14 2024 +0300 code: первое изменение main.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit c41f6c70d0b2b343662a0c2ebf3f2438407d6cb8 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:05:47 2024 +0300 build: добавлен файл проекта project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit c52bc425786c33d24d55c4c4d00c7bf7f095a351 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:04:43 2024 +0300 code: заготовка программы main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (END) Комманда git log --stat выводит: Полный хеш коммита, автора коммита, дата создания, название, отслеживаемый файл и изменения данного файла. 16. Отфильтровал коммиты по теме build, потом затрагивающие project.cbp: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --grep "build:" commit c41f6c70d0b2b343662a0c2ebf3f2438407d6cb8 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:05:47 2024 +0300 build: добавлен файл проекта sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log -- project.cbp commit c41f6c70d0b2b343662a0c2ebf3f2438407d6cb8 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:05:47 2024 +0300 build: добавлен файл проекта 17. Просмотрел последний комиит 3 разными способами и просмотрел предпоследний коммит: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show main commit 6a362f026be35ff22b92b51dd420b59f59c574f7 (HEAD -> main) Author: Alice (AntonovichAN) Date: Wed Aug 28 20:10:17 2024 +0300 git: игнорирование файлов diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa24a77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend \ No newline at end of file sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show HEAD commit 6a362f026be35ff22b92b51dd420b59f59c574f7 (HEAD -> main) Author: Alice (AntonovichAN) Date: Wed Aug 28 20:10:17 2024 +0300 git: игнорирование файлов diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa24a77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend \ No newline at end of file sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show 6a362f0 commit 6a362f026be35ff22b92b51dd420b59f59c574f7 (HEAD -> main) Author: Alice (AntonovichAN) Date: Wed Aug 28 20:10:17 2024 +0300 git: игнорирование файлов diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa24a77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/bin +/obj +/project.layout +/project.depend \ No newline at end of file sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git show HEAD~1 commit 546e058c9dcc717142c3a95a84cedf6aaa49e900 Author: Alice (AntonovichAN) Date: Wed Aug 28 20:09:22 2024 +0300 code: вывод разности diff --git a/main.cpp b/main.cpp index 4364dbc..8435233 100644 --- a/main.cpp +++ b/main.cpp @@ -7,5 +7,6 @@ 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'; } 18.Внес изменения в main.cpp, после просмотрел изменения между самым первым коммитом и коммитом, добавляющим вывод разности: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index 8435233..f372c78 100644 --- a/main.cpp +++ b/main.cpp @@ -8,5 +8,6 @@ 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'; } В первой строке "diff" отображены файлы для сравнения Во втрой строке "index" отображаются внутренние метаданные git, номера в этих выходных данных соответствуют хеш-идентификаторам версий объектов git В следующих двух строках выводятся обозначения изменений В пятой строке заголовок врагмента, заголовок визуально описывает изменения в файле: В нашем случае было извлечено 8 строк начиная со строки 7, после извлечения было добавлено 8 строк начиная с 8 Остальное содержимое фрагмента сравнения — это недавние изменения. Каждой измененной строке предшествует символ + или -, указывающий на источник входных данных сравнения. + для b/main.cpp и - для a/main.cpp sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git diff HEAD~5 HEAD~1 diff --git a/main.cpp b/main.cpp index b4392ec..8435233 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 @@ + + + + + + (END) 19. Коммит произведения и откат изменений: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git add main.cpp sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -m "code: вывод произведения" [main 997d912] code: вывод произведения 1 file changed, 2 insertions(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at 6a362f0 git: игнорирование файлов 20. Добавлю комментарий в программу и откачу изменения: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -a -m 'code: комментарий' [main b89482c] code: комментарий 1 file changed, 1 insertion(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout HEAD -- main.cpp sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at 6a362f0 git: игнорирование файлов sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 6a362f0 (HEAD -> main) git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы 21. Зарегестрировался на сервере и создал ключи: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ ssh-keygen Generating public/private ed25519 key pair. Enter file in which to save the key (/c/Users/sanya/.ssh/id_ed25519): /c/Users/sanya/.ssh/id_ed25519 already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/sanya/.ssh/id_ed25519 Your public key has been saved in /c/Users/sanya/.ssh/id_ed25519.pub The key fingerprint is: SHA256:J9ulN6EA6cfydpJ0zdhN8HhG0esOJOTkOxY6Wat4j8Y sanya@DESKTOP-M9EDCFL The key's randomart image is: +--[ED25519 256]--+ | . oo | | . o = .| | o = . = .| | . o @ * . | | o S B % o | | = % O o . | | O O + o | | o E.. . . | | o... | +----[SHA256]-----+ 22. Запустил агента и дал доступ к ключам: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ eval $(ssh-agent -s) Agent pid 1610 sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ ssh-add Enter passphrase for /c/Users/sanya/.ssh/id_ed25519: Identity added: /c/Users/sanya/.ssh/id_ed25519 (sanya@DESKTOP-M9EDCFL) 23. Подключился к репозиторию по SSH - не вышло, подключаюсь по HTTP: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git remote add origin http://uit.mpei.ru/git/AntonovichAN/cs-lab02.git sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/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.31 KiB | 395.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/AntonovichAN/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. 24. Открыл git bush в каталоге боба и скопировал проект. После отредактировал профиль боба sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ git clone http://uit.mpei.ru/git/AntonovichAN/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. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob $ cd project sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git config user.name 'Bob (AntonovichAN)' sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git config user.email 'AntonovichAN@mpei.ru' 25. Добавил вывод произведения и сделал коммит: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git add main.cpp sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git commit -m 'code: печать произведения' [main e1c9396] code: печать произведения 1 file changed, 2 insertions(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * e1c9396 (HEAD -> main) code: печать произведения * 6a362f0 (origin/main, origin/HEAD) git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы 26. Отправил коммит на сервер: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/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), 417 bytes | 417.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/AntonovichAN/cs-lab02.git 6a362f0..e1c9396 main -> main 27. В каталоге Алисы выполнил загрузку изменений: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/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), 397 bytes | 39.00 KiB/s, done. From http://uit.mpei.ru/git/AntonovichAN/cs-lab02 6a362f0..e1c9396 main -> origin/main В рабочей копии изменений еще не произошло 28. Просмотрел историю всех веток: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * e1c9396 (origin/main) code: печать произведения * 6a362f0 (HEAD -> main) git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы 29. Продвинул ветку main к версии на сервере: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git pull --ff-only Updating 6a362f0..e1c9396 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * e1c9396 (HEAD -> main, origin/main) code: печать произведения * 6a362f0 git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы 30. Делаю обратные действия только от имени Алисы: вписал в программу печать деления, сделал коммит и отправил на сервер sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -a -m 'code: печать деления' [main f4d8519] code: печать деления 1 file changed, 2 insertions(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/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), 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 http://uit.mpei.ru/git/AntonovichAN/cs-lab02.git e1c9396..f4d8519 main -> main 31. От имени Боба: $ 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), 389 bytes | 27.00 KiB/s, done. From http://uit.mpei.ru/git/AntonovichAN/cs-lab02 e1c9396..f4d8519 main -> origin/main В рабочей копии изменений еще не произошло 32. Просмотрел историю всех веток и продвинул ветку main к версии на сервере: $ git log --oneline --decorate --all --graph * 316accc (origin/main, origin/HEAD) code: вывод деления * 5c3930e (HEAD -> main) code: печать произведения * 7271cff git: игнорирование файлов * 6b53fb2 code: вывод разности * c4242e9 code: вывод суммы * d026106 code: первое изменение * 64dd879 build: добавлен файл проекта * e1a7a5b code: заготовка программы sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git pull --ff-only Updating e1c9396..f4d8519 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * f4d8519 (HEAD -> main, origin/main, origin/HEAD) code: печать деления * e1c9396 code: печать произведения * 6a362f0 git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы 33. «На машине Алисы» дополнил программу вывода максимума, сделал коммит и отправил на сервер. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -a -m 'code: печать максимума' [main 8c0136e] code: печать максимума 1 file changed, 5 insertions(+) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/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), 418 bytes | 418.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) remote: . Processing 1 references remote: Processed 1 references in total To http://uit.mpei.ru/git/AntonovichAN/cs-lab02.git f4d8519..8c0136e main -> main 34. «На машине Боба» дополнил программу печатью минимума, сделал коммит и попытался отправить его на сервер. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git commit -a -m 'code: печать минимума' [main 9926341] code: печать минимума 1 file changed, 5 insertions(+) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git push To http://uit.mpei.ru/git/AntonovichAN/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'http://uit.mpei.ru/git/AntonovichAN/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. 35. Загрузил коммиты из удаленного хранилища и отобразил историю всех веток: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/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), 398 bytes | 22.00 KiB/s, done. From http://uit.mpei.ru/git/AntonovichAN/cs-lab02 f4d8519..8c0136e main -> origin/main sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|MERGING) $ git log --oneline --decorate --all --graph * 9926341 (HEAD -> main) code: печать минимума | * 8c0136e (origin/main, origin/HEAD) code: печать максимума |/ * f4d8519 code: печать деления * e1c9396 code: печать произведения * 6a362f0 git: игнорирование файлов * 546e058 code: вывод разности * 88c5c69 code: вывод суммы * 2b8ab7b code: первое изменение * c41f6c7 build: добавлен файл проекта * c52bc42 code: заготовка программы 36. Попытался переместить коммит Боба поверх коммита Алисы. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|MERGING) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply 9926341... code: печать минимума hint: Resolve all conflicts manually, mark them as resolved with hint: "git add/rm ", then run "git rebase --continue". hint: You can instead skip this commit: run "git rebase --skip". hint: To abort and get back to the state before "git rebase", run "git rebase --abort". hint: Disable this message with "git config advice.mergeConflict false" Could not apply 9926341... code: печать минимума 37. Проверил статус. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|MERGING) $ git status interactive rebase in progress; onto 8c0136e Last command done (1 command done): pick 9926341 code: печать минимума No commands remaining. You are currently rebasing branch 'main' on '8c0136e'. (fix conflicts and then run "git rebase --continue") (use "git rebase --skip" to skip this patch) (use "git rebase --abort" to check out the original branch) Unmerged paths: (use "git restore --staged ..." to unstage) (use "git add ..." to mark resolution) both modified: main.cpp Untracked files: (use "git add ..." to include in what will be committed) main.exe main.o no changes added to commit (use "git add" and/or "git commit -a") сатус выводит, что сейчас выполняется rebase c коммитом(печаь максимума) и выдает предупреждение о том, что произошло расхождение текущей ветки и ветки на сервере и предлагает пути решения проблемы 38. Изменил код и продолжил операцию rebase: sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|MERGING) $ git add main.cpp sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|MERGING) $ git rebase origin/main fatal: It seems that there is already a rebase-merge directory, and I wonder if you are in the middle of another rebase. If that is the case, please try git rebase (--continue | --abort | --skip) If that is not the case, please rm -fr ".git/rebase-merge" and run me again. I am stopping in case you still have something valuable there. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|MERGING) $ git rebase --continue code: печать минимума # Conflicts: # main.cpp # 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 8c0136e # Last command done (1 command done): # pick 9926341 code: печать минимума # No commands remaining. # You are currently rebasing branch 'main' on '8c0136e'. # # Changes to be committed: # modified: main.cpp # # Untracked files: # main.exe # main.o Сделал коммит и продолжил операцию rebase sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|REBASE 1/1) $ git commit -a -m 'code: печать минимума' [detached HEAD ae118a9] code: печать минимума 1 file changed, 5 insertions(+) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|REBASE 1/1) $ git rebase --continue Successfully rebased and updated refs/heads/main. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git log --oneline ae118a9 (HEAD -> main) code: печать минимума 8c0136e (origin/main, origin/HEAD) code: печать максимума f4d8519 code: печать деления e1c9396 code: печать произведения 6a362f0 git: игнорирование файлов 546e058 code: вывод разности 88c5c69 code: вывод суммы 2b8ab7b code: первое изменение c41f6c7 build: добавлен файл проекта c52bc42 code: заготовка программы $ 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), 393 bytes | 393.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/AntonovichAN/cs-lab02.git 8c0136e..ae118a9 main -> main sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main) $ git log --oneline ae118a9 (HEAD -> main, origin/main, origin/HEAD) code: печать минимума 8c0136e code: печать максимума f4d8519 code: печать деления e1c9396 code: печать произведения 6a362f0 git: игнорирование файлов 546e058 code: вывод разности 88c5c69 code: вывод суммы 2b8ab7b code: первое изменение c41f6c7 build: добавлен файл проекта c52bc42 code: заготовка программы 39. Изменяю тип данных от лица Алисы. sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git branch double sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout double Switched to branch 'double' изменил тип данных в коде sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git commit -a -m 'code: тип double' [double 89573ea] code: тип double 1 file changed, 1 insertions(+), 1 deletion(-) sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git checkout main Switched to branch 'main' sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git fetch ~ ~ ~ ~ ~ ~ ~ sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git pull ~ ~ ~ ~ ~ ~ ~ sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git merge double [main a00075b] code merge double sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git push Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 4 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 696 bytes | 232.00 KiB/s, done. Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) remote: . Processing 1 references remote: Processed 1 references in total To http://uit.mpei.ru/git/AntonovichAN/cs-lab02.git ae118a9..a00075b main -> main sanya@DESKTOP-M9EDCFL MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) $ git log --oneline a00075b (HEAD -> main, origin/main) code merge double 89573ea (double) code: тип double ae118a9 code: печать минимума 8c0136e code: печать максимума f4d8519 code: печать деления e1c9396 code: печать произведения 6a362f0 git: игнорирование файлов 546e058 code: вывод разности 88c5c69 code: вывод суммы 2b8ab7b code: первое изменение c41f6c7 build: добавлен файл проекта c52bc42 code: заготовка программы