Отчет по лабораторной работе № 2 "Система контроля версий Git" Выполнил: Кривобоков Н. С. Группа: А-03-24 Проверил: Козлюк Д. А. Примечание: работа выполнялась на Windows 11. ______________________________________________________________________ 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash kolya@Nikolay MINGW64 ~/Desktop/lab02 $ ______________________________________________________________________ 2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: kolya@Nikolay MINGW64 ~/Desktop/lab02 $ ls kolya@Nikolay MINGW64 ~/Desktop/lab02 $ ______________________________________________________________________ 3. Создал каталоги Алисы и Боба, создал каталог "project", изучил команду "cd" в процессе: kolya@Nikolay MINGW64 ~/Desktop/lab02 $ mkdir alice kolya@Nikolay MINGW64 ~/Desktop/lab02 $ mkdir bob kolya@Nikolay MINGW64 ~/Desktop/lab02 $ cd alice kolya@Nikolay MINGW64 ~/Desktop/lab02/alice $ mkdir project kolya@Nikolay MINGW64 ~/Desktop/lab02/alice $ cd project kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project $ cd .. kolya@Nikolay MINGW64 ~/Desktop/lab02/alice $ cd project ____________________________________________________________________________________ 4. Инициализировал репозитарий: Infinioka@MSI MINGW64 ~/Рабочий стол/lab02/alice/project $ git init Initialized empty Git repository in C:\Users\kolya\Desktop\lab02\alice\project\.git 4.1 Поменял имя ветки на main: kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (master) $ git branch -m main kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.name 'Alice (KrivobokovNS)' kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.email 'KrivobokovNS@mpei.ru' __________________________________________________________________________________ 5. Создал проект в репозитарии Алисы Просмотрел состояние рабочей папки: kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main No commits yet nothing to commit (create/copy files and use "git add" to track) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main No commits yet Untracked files: (use "git add ..." to include in what will be committed) main.cpp project.cbp nothing added to commit but untracked files present (use "git add" to track) 5.1 Добавил файл main.cpp в индекс: kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main No commits yet Changes to be committed: (use "git rm --cached ..." to unstage) new file: main.cpp Untracked files: (use "git add ..." to include in what will be committed) project.cbp Теперь появился новый файл, который git просит зафиксировать 5.2 Выполнил коммит с файлом main.cpp: kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: заготовка программы' [main (root-commit) 27fad3a] code: загатовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add project.cbp warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it ___________________________________________________________________________________________________________________ 6. Заменил тело функции main() на ввод двух чисел kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'build: добавлен файл проекта' [main 7aeb695] build: добавлен файл проекта 1 file changed, 38 insertions(+) create mode 100644 project.cbp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: main.cpp no changes added to commit (use "git add" and/or "git commit -a") Здесь чётко видно, что файл main.cpp был изменён __________________________________________________________________________ 7. Добавил в программу вывод разности и суммы a и b kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен вывод суммы' [main b7700a9] code: добавлен вывод суммы 1 file changed, 8 insertions(+), 1 deletions(-) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен вывод разности' [main b7700a9] code: добавлен вывод суммы 1 file changed, 2 insertions(+), 1 deletions(-) _______________________________________________________________________ 8.1 Использовал команду git log --oneline --decorate kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate 038615f (HEAD -> main) code: добавлен вывод разности 4002dc2 code: добавлен вывод суммы 2d3889d build: добавлен файл проекта bf0b295 code: заготовка программы 8.2 Использовал команду git log --oneline --decorate --all kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 038615f (HEAD -> main) code: добавлен вывод разности * 4002dc2 code: добавлен вывод суммы * 2d3889d build: добавлен файл проекта * bf0b295 code: заготовка программы _________________________________________________________________________ 9. Просмотрел предпоследний коммит kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git show HEAD~1 commit 038615f801a06bf6bf7dff32a906c5e23e017af4 Author: Alice (KrivobokovNS) Date: Sun Apr 27 17:44:10 2025 +0300 code: добавлен вывод разности diff --git a/main.cpp b/main.cpp index b4392ec..c486466 100644 --- a/main.cpp +++ b/main.cpp @ -3,6 +3,7 @@ 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'; return 0; } kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline 038615f (HEAD -> main) code: добавлен вывод разности 4002dc2 code: добавлен вывод суммы 2d3889d build: добавлен файл проекта bf0b295 code: заготовка программы kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git show 038615f commit 038615f801a06bf6bf7dff32a906c5e23e017af4 Author: Alice (KrivobokovNS) Date: Sun Apr 27 17:44:10 2025 +0300 code: добавлен вывод разности diff --git a/main.cpp b/main.cpp index b4392ec..c486466 100644 --- a/main.cpp +++ b/main.cpp @ -3,6 +3,7 @@ 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'; return 0; } __________________________________________________________________________________ 10.Добавил печать произведения чисел и просмотрел изменения в рабочей копии kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add -u kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен вывод произведения' [main bb26101] code: добавлен вывод произведения 2 files changed, 4 insertions(+), 2 deletions(-) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index 3b0a2eb..dc88e77 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,6 @@ int main() cin >> a >> b; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; - << "A * B = " << a * b << '\n'; + << "A * B = " << a * b << '\n'; } Предпоследняя строчка была выдела зелёным цветом, что показывает её как добавленную 10.1 Просмотрел разницу между самым первым коммитом и коммитом, добавляющим вывод разности $ git diff HEAD~5 HEAD~8 diff --git a/main.cpp b/main.cpp index 48bb4d6..8b13789 100644 --- a/main.cpp +++ b/main.cpp @@ -1,9 +1 @@ -#include -int main () { - 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 deleted file mode 100644 index 84bd34a..0000000 --- a/project.cbp +++ /dev/null @@ -1,38 +0,0 @@ ______________________________________________________________________ 11.1 Создал пару ключей, запустил клиент, загрузил ключ (история данных команд утеряна) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ ssh-keygen kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ eval $(ssh-agent -s) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ ssh-add kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ cat ~/.ssh/id_ed25519.pub 11.2 Создал репозитраий под названием cs-lab02 _______________________________________________________________________ 12 Клонировал проект в каталог bob kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git init Reinitialized existing Git repository in C:\Users\kolya\Desktop\lab02\alice\project\.git kolya@Nikolay MINGW64 ~/Desktop/lab02/bob $ git clone origin git@uit.mpei.ru:KrivobokovNS/cs-lab02.git project Cloning into 'project'... remote: Enumerating objects: 18, done. remote: Counting objects: 100% (18/18), done. remote: Compressing objects: 100% (15/15), 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. kolya@Nikolay MINGW64 ~/Desktop/lab02/bob $ cd project kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.name 'Bob (KrivobokovNS)' kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.email 'KrivobokovNS@mpei.ru' kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -m 'code: добавлен вывод произведения' [main a7aa100] code: добавлен вывод произведения 1 file changed, 2 insertion(+), 1 deletion(-) kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Delta compression using up to 20 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 542 bytes | 542.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 http://uit.mpei.ru/git/KrivobokovNS/cs-lab02.git f06184c..37a1e7a main -> main ___________________________________________________________________ 13 На машине Алисы выполнил загрузку изменений kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git fetch remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (4/4), done. remote: Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (4/4), 522 bytes | 43.00 KiB/s, done. From http://uit.mpei.ru/git/KrivobokovNS/cs-lab02 f06184c..37a1e7a main -> origin/main 13.1 Убедился, что в рабочей копии изменений не произошло kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * f06184c (origin/main, origin/HEAD) code: добавлен вывод произведения * 038615f code: добавлен вывод разности * 4002dc2 code: добавлен вывод суммы * 2d3889d build: добавлен файл проекта * bf0b295 code: заготовка программы 13.2 Продвинул ветку main к скачанной версии kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull --ff-only Updating f06184c..37a1e7a Fast-forward 13.3 От имени Алисы добавил печать деления, сделал коммит и отправил его на сервер и получил новую версию на машине Боба kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен вывод частного' [main 13d6b0c] code: добавлен вывод частного 1 file changed, 1 insertion(+), 1 deletion(-) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 20 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 356 bytes | 356.00 KiB/s, done. Total 3 (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/KrivobokovNS/cs-lab02.git 13d6b0c..e976796 main -> main _______________________________________________________________________ 14 Сделал поиск максимума у Алисы и минимума у Боба kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: Добавлен вывод максимума' [main e9b63fb] code: Добавлен вывод максимума 1 file changed, 6 insertions(+) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 20 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 391 bytes | 391.00 KiB/s, done. Total 3 (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/KrivobokovNS/cs-lab02.git e9b63fb..a326ffd main -> main kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -m 'code: Добавлен вывод минимума' [main 70d6c8e] code: Добавлен вывод минимума 1 file changed, 9 insertions(+) kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git push To uit.mpei.ru:KrivobokovNS/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'uit.mpei.ru:KrivobokovNS/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. Появление ошибки kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git fetch remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 513 bytes | 64.00 KiB/s, done. From uit.mpei.ru:KrivobokovNS/cs-lab02 13d6b0c..e9b63fb main -> origin/main kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorare --all --graph fatal: unrecognized argument: --decorare kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * 70d6c8e (HEAD -> main) code: Добавлен вывод минимума | * e9b63fb (origin/main, origin/HEAD) code: Добавлен вывод максимума |/ * 13d6b0c code: добавлен вывод частного * f06184c code: добавлен вывод произведения * 038615f code: добавлен вывод разности * 4002dc2 code: добавлен вывод суммы * 2d3889d build: добавлен файл проекта * bf0b295 code: заготовка программы 14.1 Переместил коммит Боба поверх коммита Алисы kolya@Nikolay 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 33f8fee... 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 -- hint: Disable this message with "git config set advice.mergeConflict false" Could not apply 33f8fee... code: Добавлен вывод минимума удалил пометки конфликта и отредактировал код, чтобы он включал правки и Алисы, и Боба. | git add main.cpp | данная часть утеряна, поэтому указаны только используемые команды и действия. git rebase --continue | [detached HEAD 33f8fee] code: Добавлен вывод минимума 1 file changed, 19 insertions(+), 7 deletions(-) Successfully rebased and updated refs/heads/main. kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * 33f8fee (HEAD -> main) code: Добавлен вывод минимума * e9b63fb (origin/main, origin/HEAD) code: Добавлен вывод максимума * 13d6b0c code: добавлен вывод частного * f06184c code: добавлен вывод произведения * 038615f code: добавлен вывод разности * 4002dc2 code: добавлен вывод суммы * 2d3889d build: добавлен файл проекта * bf0b295 code: заготовка программы kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 16 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 576 bytes | 576.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:KrivobokovNS/cs-lab02.git e9b63fb..33f8fee main -> main На машине Алисы: kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project ((33f8fee...)) $ git branch double fatal: a branch named 'double' already exists kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project ((33f8fee...)) $ git checkout double Previous HEAD position was 33f8fee code: Добавлен вывод минимума Switched to branch 'double' Изменил тип переменных в коде kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (double) $ git add main.cpp kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (double) $ git commit -m 'code: Изменён тип переменных' [main 20dc1e5] code: Изменён тип переменных 1 file changed, 5 insertions(+), 4 deletions(-) kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. kolya@Nikolay 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 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 556 bytes | 69.00 KiB/s, done. From uit.mpei.ru:KrivobokovNS/cs-lab02 e9b63fb..33f8fee main -> origin/main kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull Updating e9b63fb..33f8fee kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 6d0fc52 Merge branch 'double' |\ | * 20dc1e5 (double) Изменён тип переменных * | 33f8fee (origin/main, origin/HEAD) code: Добавлен вывод минимума |/ * e9b63fb code: Добавлен вывод максимума * 13d6b0c code: добавлен вывод частного * f06184c code: добавлен вывод произведения * 038615f code: добавлен вывод разности * 4002dc2 code: добавлен вывод суммы * 2d3889d build: добавлен файл проекта * bf0b295 code: заготовка программы kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git add .gitignore kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'Build: добавлен gitignore' [main 201bfef] Build: добавлен gitignore 1 file changed, 2 insertions(+) create mode 100644 .gitignore kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Your branch is ahead of 'origin/main' by 3 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 201bfef (HEAD -> main) Build: добавлен gitignore * 6d0fc52 Merge branch 'double' |\ | * 20dc1e5 (double) Изменён тип переменных * | 33f8fee (origin/main, origin/HEAD) code: Добавлен вывод минимума |/ * e9b63fb code: Добавлен вывод максимума * 13d6b0c code: добавлен вывод частного * f06184c code: добавлен вывод произведения * 038615f code: добавлен вывод разности * 4002dc2 code: добавлен вывод суммы * 2d3889d build: добавлен файл проекта * bf0b295 code: заготовка программы kolya@Nikolay MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 13, done. Counting objects: 100% (13/13), done. Delta compression using up to 16 threads Compressing objects: 100% (8/8), done. Writing objects: 100% (9/9), 1.07 KiB | 1.07 MiB/s, done. Total 9 (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:KrivobokovNS/cs-lab02.git 33f8fee..201bfef main -> main