Отсчёт по лабораторной работе № 2 "Система контроля версий Git"

Выполнил: Огарков И. А.
Группа: А-02-23
Проверил: Козлюк Д. А.


Примечание: работа выполнялась на Windows.

1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02
$ ls


2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто:

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02
$ ls

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02
$


3.  Создал каталоги Алисы и Боба, создал каталог "project",
изучил команду "cd" в процессе:

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02
$ mkdir alice

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02
$ mkdir bob

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02
$ cd alice

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice
$ mkdir project

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice
$ ls
project/

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice
$ cd project


4. Инициализировал репозитарий:

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Александр/Desktop/lab02/alice/project/.git/

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main
Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ ls -A
.git/

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.name 'Alice (OgarkovIA)'

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.email 'OgarkovIA@mpei.ru'


5. Создание коммитов

Запустил CodeBlocks и создал проект в репозитории Алисы

(Говорят, что нужно пояснить каждую строку...)
Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        main.cpp
        project.cbp
        project.layout

nothing added to commit but untracked files present (use "git add" to track)

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[main be8cf41] code: заготовка программы
 1 file changed, 9 insertions(+)
 create mode 100644 main.cpp



6. Составление сообщений к коммитам

Александр@DESKTOP-VHTT7N5 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
Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   project.cbp

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        main.cpp
        project.layout

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main (root-commit) e2c2965] build: добавлен файл проекта
 1 file changed, 38 insertions(+)
 create mode 100644 project.cbp

Заменил тело функции main() на ввод двух чисел:
cout << "Enter A and B: ";
int a, b;
cin >> a >> b;

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   main.cpp

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bin/
        obj/
        project.layout

no changes added to commit (use "git add" and/or "git commit -a")

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: замена тела функции main() на ввод двух чисел'
[main b054ecc] build: замена тела функции main() на ввод двух чисел
 1 file changed, 5 insertions(+), 1 deletion(-)

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен вывод суммы чисел a и b'
[main 1d03b32] build: добавлен вывод суммы чисел a и b
 1 file changed, 3 insertions(+), 2 deletions(-)

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен вывод разности чисел a и b'
[main ae25d74] build: добавлен вывод разности чисел a и b
 1 file changed, 3 insertions(+)


7. Игнорирование файлов

Создал файл '.gitignore' и добавил в него игнорируемые каталоги и файлы

$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   .gitignore

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Empty.c

no changes added to commit (use "git add" and/or "git commit -a")

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout'
[main 8536918] git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout
 1 file changed, 1 insertion(+), 1 deletion(-)



8. Просмотр истории

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log
commit 8536918c1245f46b7fc5a65cb04d5c0f5002cb14 (HEAD -> main)
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:30:48 2024 +0300

    git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout

commit 6ea8a095758e80e6e0e2219e3bf2e8e553bf182b
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:25:57 2024 +0300

    git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout

commit ae25d7438090f0c5b7c27ba5eec200abfce615d7
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:05:04 2024 +0300

    build: добавлен вывод разности чисел a и b

commit 1d03b32a96ebe4050d33193e058616a9165cbbb4
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 21:50:28 2024 +0300

    build: добавлен вывод суммы чисел a и b

commit b054ecc9e38c43592c0f5ec09de2b67a06b2a22d
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 20:06:39 2024 +0300

:

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --stat
commit 8536918c1245f46b7fc5a65cb04d5c0f5002cb14 (HEAD -> main)
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:30:48 2024 +0300

    git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout

 .gitignore | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 6ea8a095758e80e6e0e2219e3bf2e8e553bf182b
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:25:57 2024 +0300

    git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout

 .gitignore | 3 +++
 1 file changed, 3 insertions(+)

commit ae25d7438090f0c5b7c27ba5eec200abfce615d7
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:05:04 2024 +0300

    build: добавлен вывод разности чисел a и b

 main.cpp | 3 +++
 1 file changed, 3 insertions(+)

commit 1d03b32a96ebe4050d33193e058616a9165cbbb4

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
8536918 (HEAD -> main) git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout
6ea8a09 git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout
ae25d74 build: добавлен вывод разности чисел a и b
1d03b32 build: добавлен вывод суммы чисел a и b
b054ecc build: замена тела функции main() на ввод двух чисел
be8cf41 code: заготовка программы
e2c2965 build: добавлен файл проекта

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 8536918 (HEAD -> main) git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout
* 6ea8a09 git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout
* ae25d74 build: добавлен вывод разности чисел a и b
* 1d03b32 build: добавлен вывод суммы чисел a и b
* b054ecc build: замена тела функции main() на ввод двух чисел
* be8cf41 code: заготовка программы
* e2c2965 build: добавлен файл проекта

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- main.cpp
commit ae25d7438090f0c5b7c27ba5eec200abfce615d7
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:05:04 2024 +0300

    build: добавлен вывод разности чисел a и b

commit 1d03b32a96ebe4050d33193e058616a9165cbbb4
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 21:50:28 2024 +0300

    build: добавлен вывод суммы чисел a и b

commit b054ecc9e38c43592c0f5ec09de2b67a06b2a22d
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 20:06:39 2024 +0300

    build: замена тела функции main() на ввод двух чисел

commit be8cf41c0af8cde0b64c35b0f974aeb4cf3d1ba3
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 19:49:33 2024 +0300

    code: заготовка программы

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep 'code:'
commit be8cf41c0af8cde0b64c35b0f974aeb4cf3d1ba3
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 19:49:33 2024 +0300

    code: заготовка программы

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep 'build:'
commit ae25d7438090f0c5b7c27ba5eec200abfce615d7
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:05:04 2024 +0300

    build: добавлен вывод разности чисел a и b

commit 1d03b32a96ebe4050d33193e058616a9165cbbb4
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 21:50:28 2024 +0300

    build: добавлен вывод суммы чисел a и b

commit b054ecc9e38c43592c0f5ec09de2b67a06b2a22d
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 20:06:39 2024 +0300

    build: замена тела функции main() на ввод двух чисел

commit e2c29656fbea656b57631f33c2c7a19a27d81f9d
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 19:46:47 2024 +0300

    build: добавлен файл проекта

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit e2c29656fbea656b57631f33c2c7a19a27d81f9d
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 19:46:47 2024 +0300

    build: добавлен файл проекта

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD~2
commit ae25d7438090f0c5b7c27ba5eec200abfce615d7
Author: Alice (OgarkovIA) <OgarkovIA@mpei.ru>
Date:   Sat Mar 23 22:05:04 2024 +0300

    build: добавлен вывод разности чисел a и b

diff --git a/main.cpp b/main.cpp
index 0789c44..ecca766 100644
--- a/main.cpp
+++ b/main.cpp
@@ -10,5 +10,8 @@ int main() {
     int sum = a + b;
     cout << "Sum of A and B is: " << sum << endl;

+    int difference = a - b;
+    cout << "Difference of A and B is: " << difference << endl;
+
     return 0;
 }

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9d83ebf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+*.layout


9. Отказ изменений

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 6ea8a09 git: добавлен .gitignore для игнорирования каталога bin и obj, а также файлов *.layout

Добавил над функцией main() комментарий: // you may type whatever you want
Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp


10. Обмен кодом через удалённое хранилище

Сделал регистрацию на сайте Git УИТ

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/Александр/.ssh/id_ed25519):
Created directory '/c/Users/\320\220\320\273\320\265\320\272\321\201\320\260\320\275\320\264\321\200/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Александр/.ssh/id_ed25519
Your public key has been saved in /c/Users/Александр/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:cM4BHuYMNX5QKY+NY+w4ovZj8jcYJa3SUntV+J1TBQ0 Александр@DESKTOP-VHTT7N5
The key's randomart image is:
+--[ED25519 256]--+
|    ..B.o.   E=. |
|     B.*..   . . |
|    ..*** . o    |
|   o o*Boo +     |
|  o =+..S   .    |
| o.=o..          |
| .o.+.           |
|.o + o           |
|. =oo .          |
+----[SHA256]-----+

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 2185

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-add
Enter passphrase for /c/Users/Александр/.ssh/id_ed25519:
Identity added: /c/Users/Александр/.ssh/id_ed25519 (Александр@DESKTOP-VHTT7N5)

Александр@DESKTOP-VHTT7N5 MINGW64 ~/Desktop/lab02/alice/project (main)
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICFHv0MW5ahhx8YMeo/JBwqOXU8eSfOShn9+ZqJWxzAc Александр@DESKTOP-VHTT7N5

Скопировал открытый ключ и добавил в список открытых ключейсвоей учётной записи