Отчет по лабораторной работе № 2 "Система контроля версий Git" Выполнил: Киселёв М. И. Группа: А-01-22 Проверил: Козлюк Д. А. Примечание: работа выполнялась на Windows. 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02 $ 2. Создал каталоги Алисы и Боба, создал каталог "project": Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02 $ mkdir alice Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02 $ mkdir bob Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02 $ cd alice Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice $ mkdir project Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice $ cd project 3. Инициализировал репозитарий: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/Anchovy/Desktop/lab02/alice/project/.git/ 4. Настроил репозитарий Алисы, чтобы коммиты были от ее имени: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.name 'Alice (KiseliovMI)' Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.email 'kiseliovmi@mpei.ru' 5. После создания проекта в репозитарии Алисы, добавил файл main.cpp в индекс: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp 6. Выполнил коммит с файлом main.cpp: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: заготовка программы' [main (root-commit) d4143d0] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "project.cbp" [main 5c79b2a] project.cbp 1 file changed, 3 insertions(+), 2 deletions(-) 7. Просмотрел состояние рабочей копии: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main (в ветке main) Untracked files: (список файлов не включённых в коммит) (use "git add ..." to include in what will be committed) bin/ obj/ project.cbp nothing added to commit but untracked files present (use "git add" to track) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "project.cbp" [main 054e84d] project.cbp 1 file changed, 2 insertions(+) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) .gitignore project.cbp project.depend nothing added to commit but untracked files present (use "git add" to track) 8. Создал закрытый ключ: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Anchovy/.ssh/id_rsa): /c/Users/Anchovy/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/Anchovy/.ssh/id_rsa Your public key has been saved in /c/Users/Anchovy/.ssh/id_rsa.pub The key fingerprint is: SHA256:URcf+uwNrBmXSPoQEd0b+dxC0/4p5T7wLZNF1Qd/L9o Anchovy@DESKTOP-RK8AGV4 The key's randomart image is: +---[RSA 3072]----+ | +oooo+.| | . o.o*o=| | . . o..B*| | . + =ooO| | S o o @o+| | o @ *o| | = Eoo| | ++.| | o.| +----[SHA256]-----+ Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ eval $(ssh-agent -s) Agent pid 127 9. Загрузил ключ: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ ssh-add Enter passphrase for /c/Users/Anchovy/.ssh/id_rsa: Identity added: /c/Users/Anchovy/.ssh/id_rsa (Anchovy@DESKTOP-RK8AGV4) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqlim4Qjhpk242c7c01B2splOrJKtyC1rDsokDlew17NCC/jqAruKjdi+UFrDBkqHZCu25TYhdqASQEHECkX8GAdPDhqHxPMsYHrwyVnuzTtbWHBB/wigDfJx02PxbFLNwJpCSGOag/x3ReqjBa+XClRJ8VRiO9SGBMs2zziZ1fJagc0SGVtV5Bd4+EyTQnl0ZU0lwIa/sSW0BLyObmSuyKSPddBTVT7XwjImNmmoccOa+jkYiFfHiuDJ+I1vGAAqEtqV5jBx1noLaZWN6Mh2yTzAinYbdAxR+SN64C8u3mNHG/4P95nvmac7v5i1xZdrpXMuCCIAFn7pkTR7s/jY8oDyqXJoGXptdJ3JIeLfzEYD42reGHxtvyke4MpIwXvhayzAVtY3ujE0vBECoHgdZG0+QQ0gFR5aq6O86rw3c3hhkr1qldtzzdn4qULk5Q2pk3iso93a8IZNx7k2bxfI5YkAActla9ZsZ3JynWxBI/q9SaMJBjK7+9MCetu2i+GE= Anchovy@DESKTOP-RK8AGV4 Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp 10. Выполнил коммит с .gitignore: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'git: игнорирование' On branch main Untracked files: (use "git add ..." to include in what will be committed) .gitignore project.cbp project.depend nothing added to commit but untracked files present (use "git add" to track) 11. Сделал push существующего репозитория из командной строки: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git remote add origin git@uit.mpei.ru:KiseliovMI/cs-lab02.git Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git push -u origin main Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 8 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (9/9), 927 bytes | 231.00 KiB/s, done. Total 9 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:KiseliovMI/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ gir remote -v bash: gir: command not found Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git remote -v origin git@uit.mpei.ru:KiseliovMI/cs-lab02.git (fetch) origin git@uit.mpei.ru:KiseliovMI/cs-lab02.git (push) 12. Выполнил загрузку изменений: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git fetch remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 309 bytes | 28.00 KiB/s, done. From uit.mpei.ru:KiseliovMI/cs-lab02 054e84d..6820e91 main -> origin/main 13. Просмотрел историю всех веток: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 6820e91 (origin/main) code: умножение * 054e84d (HEAD -> main) project.cbp * 5c79b2a project.cbp * d4143d0 code: заготовка программы 14. Продвинул ветку main к скачанной версии: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull --ff-only Updating 054e84d..6820e91 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp 15. Выполнил коммит с делением и отправил его на сервер: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: деление' [main 2c5da37] code: деление 1 file changed, 2 insertions(+), 1 deletion(-) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 321 bytes | 321.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:KiseliovMI/cs-lab02.git 6820e91..2c5da37 main -> main Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp 16. Выполнил коммит с поиском максимума и отправил его на сервер: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: максимум' [main afac10a] code: максимум 1 file changed, 6 insertions(+) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 340 bytes | 340.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:KiseliovMI/cs-lab02.git 2c5da37..afac10a main -> main 17. Создал ветку double и переключился на неё: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git branch double Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git checkout double Switched to branch 'double' Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (double) $ git add main.cpp 18. Выполнил коммит с заменой типа перемнных: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (double) $ git commit -m 'code: дабл' [double 7080e44] code: дабл 1 file changed, 1 insertion(+), 1 deletion(-) 19. Переключился на ветку main и выполнил загрузку изменений: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git fetch 20. Слил ветку double в main: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git merge double Updating afac10a..7080e44 Fast-forward main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 21. Отправил измения на сервер: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 296 bytes | 296.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:KiseliovMI/cs-lab02.git afac10a..7080e44 main -> main Компьютер Боба: 1. Клонировал проект: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob $ git clone git@uit.mpei.ru:KiseliovMI/cs-lab02.git project Cloning into 'project'... Enter passphrase for key '/c/Users/Anchovy/.ssh/id_rsa': remote: Enumerating objects: 9, done. remote: Counting objects: 100% (9/9), done. remote: Compressing objects: 100% (6/6), done. remote: Total 9 (delta 1), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (9/9), done. Resolving deltas: 100% (1/1), done. Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob $ cd project Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git config git config user.name 'Bob (KiseliovMI)' usage: git config [] Config file location --global use global config file --system use system config file --local use repository config file --worktree use per-worktree config file -f, --file use given config file --blob read config from given blob object Action --get get value: name [value-pattern] --get-all get all values: key [value-pattern] --get-regexp get values for regexp: name-regex [value-pattern] --get-urlmatch get value specific for the URL: section[.var] URL --replace-all replace all matching variables: name value [value-pattern] --add add a new variable: name value --unset remove a variable: name [value-pattern] --unset-all remove all matches: name [value-pattern] --rename-section rename section: old-name new-name --remove-section remove a section: name -l, --list list all --fixed-value use string equality when comparing values to 'value-pattern' -e, --edit open an editor --get-color find the color configured: slot [default] --get-colorbool find the color setting: slot [stdout-is-tty] Type -t, --type value is given this type --bool value is "true" or "false" --int value is decimal number --bool-or-int value is --bool or --int --bool-or-str value is --bool or string --path value is a path (file or directory name) --expiry-date value is an expiry date Other -z, --null terminate values with NUL byte --name-only show variable names only --includes respect include directives on lookup --show-origin show origin of config (file, standard input, blob, command line) --show-scope show scope of config (worktree, local, global, system, command) --default with --get, use default value when missing entry 2. Настроил репозитарий Боба: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.name 'Bob (KiseliovMI)' Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.email 'kiseliovmi@mpei.ru' Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp 3. Выполнил коммит с добавлением умножения: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -m 'code: умножение' [main 6820e91] code: умножение 1 file changed, 2 insertions(+), 1 deletion(-) 4. Отправил коммит на сервер: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enter passphrase for key '/c/Users/Anchovy/.ssh/id_rsa': Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 329 bytes | 329.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:KiseliovMI/cs-lab02.git 054e84d..6820e91 main -> main 5. Выполнил загрузку изменений: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git fetch Enter passphrase for key '/c/Users/Anchovy/.ssh/id_rsa': remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 301 bytes | 13.00 KiB/s, done. From uit.mpei.ru:KiseliovMI/cs-lab02 6820e91..2c5da37 main -> origin/main 6. Просмотрел историю всех веток: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * 2c5da37 (origin/main, origin/HEAD) code: деление * 6820e91 (HEAD -> main) code: умножение * 054e84d project.cbp * 5c79b2a project.cbp * d4143d0 code: заготовка программы 7. Продвинул ветку main к скачанной версии: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git pull --ff-only Enter passphrase for key '/c/Users/Anchovy/.ssh/id_rsa': Updating 6820e91..2c5da37 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git add main.cpp 8. Выполнил коммит с поиском минимума: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -m 'code: минимум' [main a6f6022] code: минимум 1 file changed, 6 insertions(+) 9. Отправил коммит на сервер: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enter passphrase for key '/c/Users/Anchovy/.ssh/id_rsa': To uit.mpei.ru:KiseliovMI/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'uit.mpei.ru:KiseliovMI/cs-lab02.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 10. Выполнил загрузку изменений: Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main) $ git fetch Enter passphrase for key '/c/Users/Anchovy/.ssh/id_rsa': remote: Enumerating objects: 5, done. [detached HEAD 5f3a51c] code: минимум 1 file changed, 6 insertions(+)% (2/2), done. Successfully rebased and updated refs/heads/main. Unpacking objects: 100% (3/3), 320 bytes | 13.00 KiB/s, done. Anchovy@DESKTOP-RK8AGV4 MINGW64 ~/Desktop/lab02/bob/project (main)