2023-04-24 11:24:34 +03:00
2023-03-27 12:03:26 +03:00
2023-04-24 11:24:34 +03:00

Отчет по лабораторной работе № 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 <file>..." 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 <file>..." 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 <file>..." 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 [<options>]

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 <file>     use given config file
    --blob <blob-id>      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 <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 <value>     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)

Описание
No description provided
Readme 39 KiB
Languages
C++ 100%