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

Выполнил: Никиткин Т. Ю.
Группа:   А-01-22
Проверил: Козлюк Д. А.

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

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

archlinux%





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

archlinux%  ls
archlinux%





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

archlinux%  mkdir alice
archlinux%  mkdir bob
archlinux%  cd alice
archlinux%  mkdir project
archlinux%  cd project
archlinux% pwd
/home/sage/Desktop/lab02/alice/project
archlinux%  cd ..
archlinux% pwd
/home/sage/Desktop/lab02/alice
archlinux%  cd project
archlinux% pwd
/home/sage/Desktop/lab02/alice/project
archlinux%





4. Инициализировал репозитарий и подтвердил командой ls -A наличие папки .git:

archlinux%  git init
подсказка: Using 'master' as the name for the initial branch. This default branch name
подсказка: is subject to change. To configure the initial branch name to use in all
подсказка: of your new repositories, which will suppress this warning, call:
подсказка:
подсказка:      git config --global init.defaultBranch <name>
подсказка:
подсказка: Names commonly chosen instead of 'master' are 'main', 'trunk' and
подсказка: 'development'. The just-created branch can be renamed via this command:
подсказка:
подсказка:      git branch -m <name>
Инициализирован пустой репозиторий Git в /home/sage/Desktop/lab02/alice/project/.git/
archlinux%  git branch -m main
archlinux%  ls -A
.git
archlinux%





5. Настроил репозитарий Алисы, чтобы коммиты были от её имени:

archlinux%  git config user.name 'Alice (NikitkinTY)'
archlinux%  git config user.email 'NikitkinTY@mpei.ru'
archlinux%





6. Запустил CodeBlocks и создал проект в репозитарии Алисы со следующими
настройками:

Project title: project
Folder to create project in: /home/sage/Desktop/lab02/alice/
Project filename: project.cbp
Resulting filename: /home/sage/Desktop/lab02/alice/project/project.cbp





7. Собрал проект, после чего вернулся в git и просмотрел состояние
рабочей копии:

archlinux% git status
Текущая ветка: main

Еще нет коммитов

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
        bin/
        main.cpp
        obj/
        project.cbp

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%


Пояснение к выведенной информации:

Текущая ветка: main                                                                     #Вывод названия текущей ветки

Еще нет коммитов                                                                        #Констатация отсутствия коммитов

Неотслеживаемые файлы:                                                                  #Вывод всех неотслеживаемых файлов с подсказкой о
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)   #git add
        bin/
        main.cpp
        obj/
        project.cbp

индекс пуст, но есть неотслеживаемые файлы                                              #Понятно из содержания

(используйте «git add», чтобы проиндексировать их)                                      #Подсказка о добавление в индекс





8. Добавил main.cpp в индекс, то есть в набор изменений, который войдет 
в очередной коммит:

archlinux% git add main.cpp
archlinux%





9. Ещё раз проверил состояние рабочей копии:

archlinux% git status
Текущая ветка: main

Еще нет коммитов

Изменения, которые будут включены в коммит:
  (используйте «git rm --cached <файл>...», чтобы убрать из индекса)
        новый файл:    main.cpp

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
        bin/
        obj/
        project.cbp

archlinux%


Пояснение к выведенной информации:

Текущая ветка: main                                                                     #Вывод названия текущей ветки

Еще нет коммитов                                                                        #Констатация отсутствия коммитов

Изменения, которые будут включены в коммит:                                             #Вывод файла (main.cpp), который попадёт в
  (используйте «git rm --cached <файл>...», чтобы убрать из индекса)                    #следующий коммит, и подсказка о выводе файла
        новый файл:    main.cpp                                                         #из индекса

Неотслеживаемые файлы:                                                                  #Вывод всех оставшихся неотслеживаемых файлов с
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)   #подсказкой о git add
        bin/
        obj/
        project.cbp

Из изменений - сообщение о пустом индексе и появление списка для нового коммита



10. Выполнил коммит с файлом main.cpp и коротким сообщением:

archlinux% git commit -m 'code: заготовка программы'
[main (корневой коммит) 0f2fab6] code: заготовка программы
 1 file changed, 9 insertions(+)
 create mode 100644 main.cpp
archlinux%





11. Проверил состояние проекта, добавил файл project.cbp в индекс и
сделал коммит с ним, тема — build:

uarchlinux% git add project.cbp
archlinux% git commit -m 'build: добавлен файл проекта'
[main 451a2b6] build: добавлен файл проекта
 1 file changed, 38 insertions(+)
 create mode 100644 project.cbp
archlinux%





12. Заменил тело функции main() на ввод двух чисел и сохранил файл:

cout << "Enter A and B: ";
int a, b;
cin >> a >> b;

13. Просмотрел состоянние репозитария:

archlinux% git status
Текущая ветка: main
Изменения, которые не в индексе для коммита:
  (используйте «git add <файл>...», чтобы добавить файл в индекс)
  (используйте «git restore <файл>...», чтобы отменить изменения в рабочем каталоге)
        изменено:      main.cpp

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
        bin/
        obj/

индекс пуст (используйте «git add» и/или «git commit -a»)
archlinux%


Заметил, что main.cpp больше не находится под "Неотслеживаемые файлы:", теперь
main.cpp отображается выше с припиской "изменено:".

Отличие от случая, когда добавлялся новый файл и изменялся существующий в том,
что новый файл входил в индекс, а изменёный нет.





14. Использовал первый способ для коммита изменений, а именно выбор файла,
изменния в которых должны войти в коммит, после чего сам коммит:

archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен ввод двух чисел'
[main 1a522a3] code: добавлен ввод двух чисел
 1 file changed, 3 insertions(+), 1 deletion(-)
archlinux%





15. Добавил в программу вывод суммы a и b:

cout << "A + B = " << a + b << '\n';





16. Использовал второй способ для коммита изменений, а именно добавить
в индекс все изменения, затем сам коммит:

archlinux% git add -u
archlinux% git commit -m 'code: добавлен вывод суммы чисел'
[main 76b205d] code: добавлен вывод суммы чисел
 1 file changed, 1 insertion(+)
archlinux%





17. Добавил в программу вывод разности a и b:

cout << "A + B = " << a + b << '\n'
     << "A - B = " << a - b << '\n';





18. использовал третий способ для коммита изменений, а именно добавление
всех изменений в индекс и сам коммит в один шаг.

archlinux% git commit -a -m 'code: добавлен вывод разности чисел'
[main 4bf99bf] code: добавлен вывод разности чисел
 1 file changed, 2 insertions(+), 1 deletion(-)
archlinux%





19. Проверил состояние проекта и заметил наличие каталогов bin/ , obj/ :

archlinux% git status
Текущая ветка: main
Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
        bin/
        obj/

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%





20. Создал в CodeBlocks файл .gitignore в корне репозитария со строчкой
/bin , после чего проверил состояние проекта:

archlinux% git status
Текущая ветка: main
Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
        .gitignore
        obj/

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%





21. Добавил в файл .gitignore строчки /obj и /*.layout, после чего проверил
состояние проекта.

archlinux% git status
Текущая ветка: main
Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
        .gitignore

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%





22. Создал коммит с .gitignore, тема - git :

archlinux% git add .gitignore
archlinux% git commit -m 'git'
[main 9374e7a] git
 1 file changed, 3 insertions(+)
 create mode 100644 .gitignore
archlinux%





23. Опробовал git log, который показывает журнал репозитария:

archlinux% git log
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:26:50 2023 +0300

    git

commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:17:22 2023 +0300

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

commit 76b205dcf4d398984a32e7749a2c182ba3685b12
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 12:45:17 2023 +0300

    code: добавлен вывод суммы чисел

commit 1a522a3f2ae2dc6ea7b247471898f7543727f2f5
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 12:29:57 2023 +0300

    code: добавлен ввод двух чисел

commit 451a2b6ca5e601babdd5db674769b3324ed25214
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 12:19:37 2023 +0300

archlinux%





24. Опробовал git log --stat показывает файлы, который измененные в коммитах:

archlinux% git log --stat
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:26:50 2023 +0300

    git

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

commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:17:22 2023 +0300

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

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

commit 76b205dcf4d398984a32e7749a2c182ba3685b12
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 12:45:17 2023 +0300

    code: добавлен вывод суммы чисел

 main.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 1a522a3f2ae2dc6ea7b247471898f7543727f2f5
archlinux%



Пояснение к последнему коммиту:
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)     #Вывод хэша коммита и указания на то, что это последний коммит

Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>                    #Имя и почта автора коммита

Date:   Sun Mar 26 14:26:50 2023 +0300                             #Время и дата совершения коммита

    git                                                            #Тема коммита

 .gitignore | 3 +++                                                #Название файла вошедшего в коммит и количество изменений в нём

 1 file changed, 3 insertions(+)                                   #Вывод общего количества изменёных файлов и изменений в них





25. Опробовал git log --oneline --decorate показывает файлы, который
показывает коммиты компактно (--oneline), а также показывает ссылки, концы 
веток и тэги (--decorate):

archlinux% git log --oneline --decorate
9374e7a (HEAD -> main) git
4bf99bf code: добавлен вывод разности чисел
76b205d code: добавлен вывод суммы чисел
1a522a3 code: добавлен ввод двух чисел
451a2b6 build: добавлен файл проекта
0f2fab6 code: заготовка программы
archlinux%





26. Опробовал git log --oneline --decorate --all --graph,
который делает то же для всех веток (--all), причем коммиты отображаются 
в терминале в виде дерева (--graph):

archlinux% git log --oneline --decorate --all --graph
* 9374e7a (HEAD -> main) git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%





27. Нашёл коммиты по теме built:

archlinux% git log --grep "build:"
commit 451a2b6ca5e601babdd5db674769b3324ed25214
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 12:19:37 2023 +0300

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





28. Нашёл коммиты затрагивающие project.cbp:

archlinux% git log -- project.cbp
commit 451a2b6ca5e601babdd5db674769b3324ed25214
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 12:19:37 2023 +0300

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





29. Просмотрел последний коммит, как текущий коммит:

archlinux% git show HEAD
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:26:50 2023 +0300

    git

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
archlinux%





30. Просмотрел последний коммит по имени ветви

archlinux% git show main
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:26:50 2023 +0300

    git

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
archlinux%





31. Просмотрел последний коммит по хэшу нужного коммита

archlinux% git show 9374e7a
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:26:50 2023 +0300

    git

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
archlinux%





32. Просмотрел предпоследний коммит:

archlinux% git show HEAD~1
commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 14:17:22 2023 +0300

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

diff --git a/main.cpp b/main.cpp
index 6de6dd2..5371b30 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,6 +7,7 @@ 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';
     return 0;
 }
archlinux%





33. Добавил вывод произведения чисел:

    cout << "A + B = " << a + b << '\n'
         << "A + B = " << a + b << '\n'
         << "A - B = " << a - b << '\n';




34. Просмотрел изменения рабочей копии:

archlinux% git diff
diff --git a/main.cpp b/main.cpp
index 5371b30..fbd9488 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,6 +8,7 @@ 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';
     return 0;
 }
archlinux%

Пояснение к выведенной информации:

diff --git a/main.cpp b/main.cpp                    #Вывод входных данных сравнения

index 5371b30..fbd9488 100644                       #Метаданные git

--- a/main.cpp                                      #Маркер изменений входных данных

+++ b/main.cpp                                      #Маркер изменений входных данных

@@ -8,6 +8,7 @@ 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';
     return 0;
 }





35. Просмотрел изменения от первого коммита до коммита, добавляющего вывод разности:

archlinux% git diff 0f2fab6 4bf99bf
diff --git a/main.cpp b/main.cpp
index b4392ec..5371b30 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,10 @@ using namespace std;

 int main()
 {
-    cout << "Hello world!" << endl;
+    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
new file mode 100644
index 0000000..c4697a9
--- /dev/null
+++ b/project.cbp
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+       <FileVersion major="1" minor="6" />
+       <Project>
+               <Option title="project" />
+               <Option pch_mode="2" />
archlinux%





36. Выполнил коммит с выводом произведения:

archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод произведения чисел'
[main cf68a51] code: добавлен вывод произведения чисел
 1 file changed, 2 insertions(+), 1 deletion(-)
archlinux%





37. Откатил проект до предыдущего коммита:

archlinux% git reset --hard HEAD~1
Указатель HEAD сейчас на коммите 9374e7a git
archlinux%


В программе остались только вывод суммы и разности чисел.





38. Добавил в main.cpp строчку:

// you may type whatever you want





39. Откатил main.cpp до последнего коммита:

archlinux% git checkout HEAD -- main.cpp
archlinux%


Из программы был убран комментарий.





40. Выполнил регестрацию на Git УИТ





41. Создал пару ключей:

archlinux% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sage/.ssh/id_rsa):
Created directory '/home/sage/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sage/.ssh/id_rsa
Your public key has been saved in /home/sage/.ssh/id_rsa.pub
...
archlinux%





42. Запустил программу-агент и загрузил ключ:

archlinux% eval $(ssh-agent -s)
Agent pid 30472
archlinux% ssh-add
Enter passphrase for /home/sage/.ssh/id_rsa:
Identity added: /home/sage/.ssh/id_rsa (sage@archlinux)





43. Отобразил открытый ключ:

archlinux% cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClkkIgxFNp7UpMQ62HusJpdbiyakrZ9JoP4SsIniUs81/vxBW464KBFsuNPQZnLWheNvOQBH2QPMNPFeIpLUWnJHw5DaivOxpBfglqPK0JKjO5vTvJW7ImDIeGlBt3gjuycnGhotbquhgg0VdQJUXGPc7VgXUiw45B7c8n5bCEuTljMxCioole2SfLdRTBwfLdcevEZR529R6zLmikSURo5H3W1bJ2JyqRbrYP2tfN62q58R78VPwevBmIfx3CJ1wntidQhqLQtL79qiO+yPaJHsRI2+ODheSt+Qn4BKWVXwvWwvRlHg0sJTz2bG0TvRaGYUi7SCd3p+cf6ykxqBZAbiegwtDnBotnR8M72lX9xC5uWzykZKMrQx5wRT3Rq5J8pUZNie2BB/sKJ64ZR4bssYAefwcy3FYMSEhnWAN6vI8LfuD778Y5V72fKuUkQKH5GYfjh6tStMfrvcxe85RcxIK2ILDk9JEaG/U7fuuzzjRMFU+5SbxFRbYrtYp8eR0= sage@archlinux
archlinux%





44. Добавил открытый ключ в SSH keys в список открытых ключей своей учетной записи.





45. Создал на сервере пустой репозитарий cs-lab02, после чего настроил связь с удалённым хранилищем:

archlinux% git remote add origin git@uit.mpei.ru:NikitkinTY/cs-lab02.git
archlinux% git push -u origin main
The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established.
ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts.
Перечисление объектов: 18, готово.
Подсчет объектов: 100% (18/18), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (16/16), готово.
Запись объектов: 100% (18/18), 2.32 КиБ | 2.32 МиБ/с, готово.
Всего 18 (изменений 2), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.
archlinux%





46. Клонировал проект в папке Боба и выполнил переход в каталог проекта:

archlinux% git clone git@uit.mpei.ru:NikitkinTY/cs-lab02.git project
Клонирование в «project»...
Enter passphrase for key '/home/sage/.ssh/id_rsa':
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
Получение объектов: 100% (18/18), готово.
Определение изменений: 100% (2/2), готово.
archlinux% cd project
archlinux%





47. Выполнил настройку Git "на машине Боба":

archlinux% git config user.name 'Bob (NikitkinTY)'
archlinux% git config user.email 'NikitkinTY@mpei.ru'
archlinux%





48. Добавил в main.cpp вывод произведения чисел и закоммитил, после чего убедился, что коммит сделан от имени Боба:

archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод произведения чисел'
[main c2aa84d] code: добавлен вывод произведения чисел
 1 file changed, 2 insertions(+), 1 deletion(-)
archlinux% git log
commit c2aa84da3b1fd033a51f9591960daa5ec93961b4 (HEAD -> main)
Author: Bob (NikitkinTY) <NikitkinTY@mpei.ru>
Date:   Sun Mar 26 18:14:10 2023 +0300

    code: добавлен вывод произведения чисел
...





49. Отправил коммит на сервер:

archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 428 байтов | 428.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
   9374e7a..c2aa84d  main -> main
archlinux%





50. «На машине Алисы» выполнил загрузку изменений:

archlinux% 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
Распаковка объектов: 100% (3/3), 408 байтов | 408.00 КиБ/с, готово.
Из uit.mpei.ru:NikitkinTY/cs-lab02
   9374e7a..c2aa84d  main       -> origin/main
archlinux%





51. Посмотрел историю всех веток:

archlinux% git log --oneline --decorate --all --graph
* c2aa84d (origin/main) code: добавлен вывод произведения чисел
* 9374e7a (HEAD -> main) git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%

Заметил, что ветка main отстает на один коммит от ветки origin/main




52. Продвинул ветку main к скаченной версии:

archlinux% git pull --ff-only
Обновление 9374e7a..c2aa84d
Fast-forward
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
archlinux%





53. Убедился, что рабочая копия проекта «у Алисы» соответствует версии «у Боба»:

archlinux% git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

нечего коммитить, нет изменений в рабочем каталоге
archlinux%





54. Добавил в программу печать разности чисел, сделал коммит, отправил его на сервер и получил новую версию «на машине Боба»:

     << "A / B = " << a / b << '\n';


archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод частного двух чисел'
[main 70fe935] code: добавлен вывод частного двух чисел
 1 file changed, 2 insertions(+), 1 deletion(-)
archlinux% git push
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 449 байтов | 449.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
   c2aa84d..70fe935  main -> main
archlinux%


archlinux% git pull
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Обновление c2aa84d..70fe935
Fast-forward
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
archlinux% git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

нечего коммитить, нет изменений в рабочем каталоге
archlinux%





55. «На машине Алисы» дополнил программу печатью максимума, сделал коммит и отправил его на сервер:

Примечание:
Я добавил вывод и максимума и минимума, что позже исправил следующим коммитом.

if(a > b) {cout << "Maximum from A and B = " << a << '\n';}
    else {cout << "Minimum from A and B = " << b << '\n';


archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод максимума из чисел'
[main 020760b] code: добавлен вывод максимума из чисел
 1 file changed, 2 insertions(+)
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 476 байтов | 476.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
   70fe935..020760b  main -> main
archlinux%


if(a > b) {cout << "Maximum from A and B = " << a << '\n';}


archlinux% git add main.cpp
archlinux% git commit -m 'code: исправлен вывод максимального значения'
[main 5e40d05] code: исправлен вывод максимального значения
 1 file changed, 1 deletion(-)
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 424 байта | 424.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
   020760b..5e40d05  main -> main
archlinux%



56. «На машине Боба» дополнил программу печатью минимума, сделал коммит и попытался отправить его на сервер.

archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод минимального минимального значения'
[main a89f6b6] code: добавлен вывод минимального минимального значения
 1 file changed, 1 insertion(+)
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
To uit.mpei.ru:NikitkinTY/cs-lab02.git
 ! [rejected]        main -> main (fetch first)
error: не удалось отправить некоторые ссылки в «uit.mpei.ru:NikitkinTY/cs-lab02.git»
подсказка: Обновления были отклонены, так как внешний репозиторий содержит
подсказка: изменения, которых у вас нет в вашем локальном репозитории.
подсказка: Обычно, это связанно с тем, что кто-то уже отправил изменения в
подсказка: то же место. Перед повторной отправкой ваших изменений, вам нужно
подсказка: забрать и слить изменения из внешнего репозитория себе
подсказка: (например, с помощью «git pull ...»).
подсказка: Для дополнительной информации, смотрите «Заметку о быстрой перемотке»
подсказка: в «git push --help».
archlinux%
archlinux%





57. «От лица Боба» загрузил коммиты из удаленного хранилища и отобразил историю всех веток:

archlinux% git fetch

Enter passphrase for key '/home/sage/.ssh/id_rsa':
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
Распаковка объектов: 100% (6/6), 829 байтов | 829.00 КиБ/с, готово.
Из uit.mpei.ru:NikitkinTY/cs-lab02
   70fe935..5e40d05  main       -> origin/main
archlinux% git log --oneline --decorate --all --graph
* a89f6b6 (HEAD -> main) code: добавлен вывод минимального минимального значения
| * 5e40d05 (origin/main, origin/HEAD) code: исправлен вывод максимального значения
| * 020760b code: добавлен вывод максимума из чисел
|/
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%





58. Попытался от лица Боба переместить свой коммит поверх коммита Алисы:

archlinux% git rebase origin/main
Автослияние main.cpp
КОНФЛИКТ (содержимое): Конфликт слияния в main.cpp
error: не удалось применить коммит a89f6b6... code: добавлен вывод минимального минимального значения
подсказка: Resolve all conflicts manually, mark them as resolved with
подсказка: "git add/rm <conflicted_files>", then run "git rebase --continue".
подсказка: You can instead skip this commit: run "git rebase --skip".
подсказка: To abort and get back to the state before "git rebase", run "git rebase --abort".
Не удалось применить коммит a89f6b6... code: добавлен вывод минимального минимального значения
archlinux% git status
интерактивное перемещение в процессе; над 5e40d05
Last command done (1 command done):
   pick a89f6b6 code: добавлен вывод минимального минимального значения
Команд больше не осталось.
Вы сейчас перемещаете ветку «main» над «5e40d05».
  (разрешите конфликты, затем запустите «git rebase --continue»)
  (используйте «git rebase --skip», чтобы пропустить этот патч)
  (используйте «git rebase --abort», чтобы перейти на оригинальную ветку)

Не слитые пути:
  (используйте «git restore --staged <файл>...», чтобы убрать из индекса)
  (используйте «git add <файл>...», чтобы пометить разрешение конфликта)
        оба изменены:   main.cpp

индекс пуст (используйте «git add» и/или «git commit -a»)
archlinux%


Пояснение к выведенной информации:

интерактивное перемещение в процессе; над 5e40d05                               #Констатирование попытки переместится к последнему
                                                                                #коммиту Алисы

Last command done (1 command done):                                             #Вывод комманд сделанных в текущей ветке
   pick a89f6b6 code: добавлен вывод минимального минимального значения
Команд больше не осталось.

Вы сейчас перемещаете ветку «main» над «5e40d05».                               #Констатация перемещения текущей ветки на новую
  (разрешите конфликты, затем запустите «git rebase --continue»)                #с подсказками о разрешении конфликтов
  (используйте «git rebase --skip», чтобы пропустить этот патч)
  (используйте «git rebase --abort», чтобы перейти на оригинальную ветку)

Не слитые пути:                                                                 #Вывод конфликтного файла
  (используйте «git restore --staged <файл>...», чтобы убрать из индекса)
  (используйте «git add <файл>...», чтобы пометить разрешение конфликта)
        оба изменены:   main.cpp

индекс пуст (используйте «git add» и/или «git commit -a»)





59. «На машине Боба» в CodeBlocks исправил код, добавил файл в индекс и продолжить прерванную операцию:

archlinux% git add main.cpp
archlinux% git rebase --continue
[отделённый HEAD 59c71d0] code: добавлен вывод минимального минимального значения
 1 file changed, 1 insertion(+)
Успешно перемещён и обновлён refs/heads/main.
archlinux%





60. Убедился, что история хранилища имеет желательный вид:

archlinux% git log --oneline --decorate --all --graph
* 59c71d0 (HEAD -> main) code: добавлен вывод минимального минимального значения
* 5e40d05 (origin/main, origin/HEAD) code: исправлен вывод максимального значения
* 020760b code: добавлен вывод максимума из чисел
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%





61. "На машине Алисы" создал ветку double, переключился на неё, изменил в main.cpp тип переменных,
сделал коммит и вернулся облратно на ветку origin/main.

archlinux% git add main.cpp
archlinux% git commit -m 'code: изменен тип чисел с целых на действительные'
[double c2288f3] code: изменен тип чисел с целых на действительные
 1 file changed, 1 insertion(+), 1 deletion(-)
archlinux% git checkout main
Переключились на ветку «main»
Эта ветка соответствует «origin/main».
archlinux%





62. Синхронизировал ветку main «на машине Алисы» с сервером. Просмотрел историю всех веток.

archlinux% git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

нечего коммитить, нет изменений в рабочем каталоге
archlinux% git log --oneline --decorate --all --graph

* c2288f3 (double) code: изменен тип чисел с целых на действительные
* 5e40d05 (HEAD -> main, origin/main) code: исправлен вывод максимального значения
* 020760b code: добавлен вывод максимума из чисел
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%





63. Сделал слияние ветки double и main:

archlinux% git merge double
Обновление 5e40d05..c2288f3
Fast-forward
 main.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

archlinux% git log --oneline --decorate --all --graph
* c2288f3 (HEAD -> main, origin/main, double) code: изменен тип чисел с целых на действительные
* 5e40d05 code: исправлен вывод максимального значения
* 020760b code: добавлен вывод максимума из чисел
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы




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