Родитель
fe46633344
Сommit
27e67e8051
@ -0,0 +1,742 @@
|
|||||||
|
Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ»
|
||||||
|
Институт информационных и вычислительных технологий
|
||||||
|
Кафедра Управления и интеллектуальных технологий
|
||||||
|
|
||||||
|
Дисциплина:
|
||||||
|
Разработка программного обеспечения систем управления
|
||||||
|
|
||||||
|
Лабораторная работа №2
|
||||||
|
Система контроля версий Git
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Выполнил студент группы
|
||||||
|
А-03-22
|
||||||
|
Соколов Михаил Игоревич
|
||||||
|
Вариант: -
|
||||||
|
Проверил
|
||||||
|
Козлюк Дмитрий Александрович
|
||||||
|
|
||||||
|
Москва 2023
|
||||||
|
|
||||||
|
Цель работы
|
||||||
|
Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними.
|
||||||
|
Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также популярный хостинг репозитариев — GitHub.
|
||||||
|
|
||||||
|
Ход работы:
|
||||||
|
Вход в терминал и создание структуры каталогов
|
||||||
|
● Создаем папки пользователей (mkdir alice, mkdir bob)
|
||||||
|
● В папке пользователя alice создаем папку project
|
||||||
|
Инициализация репозитария и настройка Git
|
||||||
|
● Инициализируем хранилище git (git init)
|
||||||
|
● Настраиваем папки пользователя, с которым будем работать:
|
||||||
|
/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git init
|
||||||
|
Initialized empty Git repository in C:/Users/Михаил/Desktop/РПОСУ_LABS/lab02/alice/project/.git/
|
||||||
|
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git config user.name 'Alice(SokolovMI)'
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git config user.email 'sokolov.mouse@yandex.ru'
|
||||||
|
|
||||||
|
|
||||||
|
Создание коммитов:
|
||||||
|
Занесение файлов под контроль версий
|
||||||
|
● Просматриваем состояние рабочей копии(git status)
|
||||||
|
● $ git status
|
||||||
|
● On branch master
|
||||||
|
●
|
||||||
|
● No commits yet
|
||||||
|
●
|
||||||
|
● Untracked files:
|
||||||
|
● (use "git add <file>..." to include in what will be committed)
|
||||||
|
● project/
|
||||||
|
●
|
||||||
|
● nothing added to commit but untracked files present (use "git add" to track)
|
||||||
|
|
||||||
|
|
||||||
|
В первой строке ссылка HEAD указывает на ветку main
|
||||||
|
Вторая стр. говорит о том, что еще не было создано коммитов
|
||||||
|
Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить
|
||||||
|
Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить
|
||||||
|
● Добавляем файл с кодом и просматриваем изменения
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git add project.cpp
|
||||||
|
|
||||||
|
$ git status
|
||||||
|
On branch master
|
||||||
|
|
||||||
|
No commits yet
|
||||||
|
|
||||||
|
Changes to be committed:
|
||||||
|
(use "git rm --cached <file>..." to unstage)
|
||||||
|
new file: project.cpp
|
||||||
|
|
||||||
|
Untracked files:
|
||||||
|
(use "git add <file>..." to include in what will be committed)
|
||||||
|
.vs/
|
||||||
|
project.sln
|
||||||
|
project.vcxproj
|
||||||
|
project.vcxproj.filters
|
||||||
|
project.vcxproj.user
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Появилась строка с файлами в индексе, стоящими в очереди на коммит
|
||||||
|
|
||||||
|
Составление сообщений к коммитам
|
||||||
|
● Создаем 2 коммита с информацией о коде программы
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git commit -m 'code: заготовка программы'
|
||||||
|
[master (root-commit) d636c51] code: заготовка программы
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
create mode 100644 project/project.cpp
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git add project.vcxproj
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git commit -m 'build: добавлен файл проекта'
|
||||||
|
[master c861f53] build: добавлен файл проекта
|
||||||
|
1 file changed, 147 insertions(+)
|
||||||
|
create mode 100644 project/project.vcxproj
|
||||||
|
|
||||||
|
● После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен
|
||||||
|
|
||||||
|
$ git status
|
||||||
|
On branch master
|
||||||
|
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: project.cpp
|
||||||
|
|
||||||
|
Untracked files:
|
||||||
|
(use "git add <file>..." to include in what will be committed)
|
||||||
|
.vs/
|
||||||
|
Debug/
|
||||||
|
project.sln
|
||||||
|
project.vcxproj.filters
|
||||||
|
project.vcxproj.user
|
||||||
|
|
||||||
|
no changes added to commit (use "git add" and/or "git commit -a")
|
||||||
|
|
||||||
|
|
||||||
|
● Проделываем ряд изменений с кодом программы и делаем коммиты несколькими способами
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git add project.cpp
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git commit -m 'code: добавлен ввод двух чисел'
|
||||||
|
[master 6a5f2f9] code: добавлен ввод двух чисел
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git commit -m 'code: добавлен вывод суммы двух чисел'
|
||||||
|
[master b0cccbb] code: добавлен вывод суммы двух чисел
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git commit -m 'code: добавлен вывод разности двух чисел'
|
||||||
|
[master 6840347] code: добавлен вывод разности двух чисел
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
|
||||||
|
Просмотр истории
|
||||||
|
● С помощью команды git log и различных ее опций просматриваем журнал коммитов
|
||||||
|
Используем команду git log –stat
|
||||||
|
$ git log --stat
|
||||||
|
commit f06ff5f49bf85b52e4e526413339d9b3d73f7fe0
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:24:21 2022 +0300
|
||||||
|
|
||||||
|
code: добавлен вывод суммы двух чисел
|
||||||
|
|
||||||
|
project/project.cpp | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
commit c18ecb8b271394c5de3ca25acb82e191b4cf40e6
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:22:09 2022 +0300
|
||||||
|
|
||||||
|
code: добавлен ввод двух чисел
|
||||||
|
|
||||||
|
project/project.cpp | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
commit 75fb07c2c44a8cfa0acf7333f3605fd06fc64047
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:16:51 2022 +0300
|
||||||
|
|
||||||
|
build: добавлен файл проекта
|
||||||
|
|
||||||
|
project/project.vcxproj | 147 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 147 insertions(+)
|
||||||
|
|
||||||
|
commit e04836eb8008275bbf51e37956c45e55570c2dd5
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:15:09 2022 +0300
|
||||||
|
|
||||||
|
code: заготовка программы
|
||||||
|
|
||||||
|
project/project.cpp | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
|
||||||
|
В последнем коммите первой строкой показывается хэш коммита, по которому можно
|
||||||
|
потом найти этот коммит
|
||||||
|
Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита
|
||||||
|
Далее идет комментарий к коммиту
|
||||||
|
Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.)
|
||||||
|
В последней стр. приведена статистика изменений данных файлов
|
||||||
|
|
||||||
|
(Использование других способов просмотра истории)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git log --oneline --decorate
|
||||||
|
a66d232 (HEAD -> master) code: добавлен вывод разности двух чисел
|
||||||
|
f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
75fb07c build: добавлен файл проекта
|
||||||
|
e04836e code: заготовка программы
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* a66d232 (HEAD -> master) code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Просмотр коммитов
|
||||||
|
● Используем команды для просмотра отдельных коммитов(git log –main.cpp/ git log –grep “code: ”)
|
||||||
|
|
||||||
|
$ git log --grep "build:"
|
||||||
|
commit 75fb07c2c44a8cfa0acf7333f3605fd06fc64047
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:16:51 2022 +0300
|
||||||
|
|
||||||
|
build: добавлен файл проекта
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git log -- project.vcxproj
|
||||||
|
commit 75fb07c2c44a8cfa0acf7333f3605fd06fc64047
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:16:51 2022 +0300
|
||||||
|
|
||||||
|
build: добавлен файл проекта
|
||||||
|
|
||||||
|
(Таким способом мы просмотрели информацию о коммите по измененному файлу и по теме коммита)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
● Далее тремя способами просматриваем информацию о предпоследнем коммите
|
||||||
|
(результат всех способов один, поэтому в отчете не повторялся)
|
||||||
|
$ git show HEAD~1
|
||||||
|
commit f06ff5f49bf85b52e4e526413339d9b3d73f7fe0
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:24:21 2022 +0300
|
||||||
|
|
||||||
|
code: добавлен вывод суммы двух чисел
|
||||||
|
|
||||||
|
diff --git a/project/project.cpp b/project/project.cpp
|
||||||
|
index b5c14f2..32965e8 100644
|
||||||
|
--- a/project/project.cpp
|
||||||
|
+++ b/project/project.cpp
|
||||||
|
@@ -8,5 +8,6 @@ int main()
|
||||||
|
cout << "Enter A and B: ";
|
||||||
|
int a, b;
|
||||||
|
cin >> a >> b;
|
||||||
|
+ cout << "A + B = " << a + b << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$ git show master~1
|
||||||
|
commit f06ff5f49bf85b52e4e526413339d9b3d73f7fe0
|
||||||
|
Author: Alice (SokolovMI) <sokolov.mouse@yandex.ru>
|
||||||
|
Date: Mon Apr 4 00:24:21 2022 +0300
|
||||||
|
|
||||||
|
code: добавлен вывод суммы двух чисел
|
||||||
|
|
||||||
|
diff --git a/project/project.cpp b/project/project.cpp
|
||||||
|
index b5c14f2..32965e8 100644
|
||||||
|
--- a/project/project.cpp
|
||||||
|
+++ b/project/project.cpp
|
||||||
|
@@ -8,5 +8,6 @@ int main()
|
||||||
|
cout << "Enter A and B: ";
|
||||||
|
int a, b;
|
||||||
|
cin >> a >> b;
|
||||||
|
+ cout << "A + B = " << a + b << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
● Добавим изменения в рабочую копию и посмотрим их с помощью команды git diff
|
||||||
|
|
||||||
|
$ git diff
|
||||||
|
diff --git a/project/project.cpp b/project/project.cpp
|
||||||
|
index aaf4408..83a4ad6 100644
|
||||||
|
--- a/project/project.cpp
|
||||||
|
+++ b/project/project.cpp
|
||||||
|
@@ -10,6 +10,6 @@ int main()
|
||||||
|
cin >> a >> b;
|
||||||
|
cout << "A + B = " << a + b << '\n';
|
||||||
|
cout << "A - B = " << a - b << '\n';
|
||||||
|
-
|
||||||
|
+ cout << "A * B = " << a * b << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
В качестве первой стр. мы видим входные данные команды для сравнения файлов
|
||||||
|
Далее идет заголовок с легендой изменения, место измененного кода и измененная функция
|
||||||
|
На след. строке идут строки вокруг измененной части, удаленные и добавленные строки
|
||||||
|
|
||||||
|
Откат изменений
|
||||||
|
● Вносим изменения в кода, а потом откатываем их до состояния в опр. коммите с помощью команды git reset
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
● $ git commit -a -m "code: добавлен вывод произведения двух чисел"
|
||||||
|
● [master 9c8286a] code: добавлен вывод произведения двух чисел
|
||||||
|
● 1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 9c8286a (HEAD -> master) code: добавлен вывод произведения двух чисел
|
||||||
|
* a66d232 code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git reset --hard HEAD~1
|
||||||
|
HEAD is now at a66d232 code: добавлен вывод разности двух чисел
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* a66d232 (HEAD -> master) code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Обмен кодом через удаленное хранилище
|
||||||
|
● Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей.
|
||||||
|
|
||||||
|
$ ssh-keygen
|
||||||
|
Generating public/private rsa key pair.
|
||||||
|
Enter file in which to save the key (/c/Users/Михаил/.ssh/id_rsa):
|
||||||
|
Created directory '/c/Users/\320\234\320\270\321\205\320\260\320\270\320\273/.ssh'.
|
||||||
|
Enter passphrase (empty for no passphrase):
|
||||||
|
Enter same passphrase again:
|
||||||
|
Passphrases do not match. Try again.
|
||||||
|
Enter passphrase (empty for no passphrase):
|
||||||
|
Enter same passphrase again:
|
||||||
|
Your identification has been saved in /c/Users/Михаил/.ssh/id_rsa
|
||||||
|
Your public key has been saved in /c/Users/Михаил/.ssh/id_rsa.pub
|
||||||
|
The key fingerprint is:
|
||||||
|
SHA256:0MzhEBRRk/mrelKrqjfI1UB1Izcb7BS1aYy9V/kcvWc Михаил@DESKTOP-I19EJ7T
|
||||||
|
The key's randomart image is:
|
||||||
|
+---[RSA 3072]----+
|
||||||
|
| oO*@=. |
|
||||||
|
| . X=@ o ..|
|
||||||
|
| . .oB.* o..|
|
||||||
|
| . ..... . oo|
|
||||||
|
| o S ... .E|
|
||||||
|
| . . . .. ..|
|
||||||
|
| . o . o |
|
||||||
|
| o o . + |
|
||||||
|
| .o.oo= |
|
||||||
|
+----[SHA256]-----+
|
||||||
|
|
||||||
|
|
||||||
|
● Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы:
|
||||||
|
|
||||||
|
$ ssh-add
|
||||||
|
Enter passphrase for /c/Users/Михаил/.ssh/id_rsa:
|
||||||
|
Identity added: /c/Users/Михаил/.ssh/id_rsa (Михаил@DESKTOP-I19EJ7T)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ cat~/.ssh/id_rsa.pub
|
||||||
|
bash: cat~/.ssh/id_rsa.pub: No such file or directory
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (master)
|
||||||
|
$ cat ~/.ssh/id_rsa.pub
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6oimev/WI3OQG64daxuBCXf9xGje5LvYfiHMrYSPvUW7KTtue7g5aT+UjyST25yt7yLI51pzC2AMZYWXPBOO+e1U6u1qFOhD5JJ+P7iNUWAVaKpcVD0piy+WZMyxRIRTO9SDHCtEZIN4PKL/vJipvQhKM2OLkiK454gitIoUECXOZcO1WE6/CQy+uXiNyRpEdlweZEyfGuBkh9KfRuS0quw08b4NUeklWIAV5WXNk9alEYaTVMm2539nKCgOA7h3A1Y2geiU4jjn4RU2i99qP3PM1i0Pj1FXJxXpTMd0g/xI50qesEG7aFyxi7BAI1FGuusvX5BUjn7FHLoBQgUfTsgeU44yqnwTGxVQF46B6Yr5y336ktmMFc39jT/6YLmbTu76i0Fs4W9CNF7hx0nqimUXpZ4Wzy29ZeqPPYXROzCciWd0dr3LcOoBbv2SHNq4iZhEzKlzxzqWhxOtnRVdkRrEyVy0lwXNitctkegKkgeP0kaYdiqN41sgCB5N9oyM= Михаил@DESKTOP-I19EJ7T
|
||||||
|
|
||||||
|
Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub.
|
||||||
|
● Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push.
|
||||||
|
|
||||||
|
$ git push -u origin main
|
||||||
|
The authenticity of host 'github.com (140.82.121.3)' can't be established.
|
||||||
|
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
|
||||||
|
This key is not known by any other names
|
||||||
|
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
|
||||||
|
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
|
||||||
|
Enumerating objects: 20, done.
|
||||||
|
Counting objects: 100% (20/20), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (14/14), done.
|
||||||
|
Writing objects: 100% (20/20), 2.95 KiB | 756.00 KiB/s, done.
|
||||||
|
Total 20 (delta 2), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (2/2), done.
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
* [new branch] main -> main
|
||||||
|
branch 'main' set up to track 'origin/main'. Branch 'main' set up to track remote branch 'main' from 'origin'.
|
||||||
|
|
||||||
|
|
||||||
|
● К работе присоединяется боб. Клонируем репозитарий с помощью git clone.
|
||||||
|
|
||||||
|
$ git clone git@github.com:Kra1k/cs-lab02.git
|
||||||
|
Cloning into 'cs-lab02'...
|
||||||
|
Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa':
|
||||||
|
remote: Enumerating objects: 20, done.
|
||||||
|
remote: Counting objects: 100% (20/20), done.
|
||||||
|
remote: Compressing objects: 100% (12/12), done.
|
||||||
|
Receiving objects: 100% (20/20), done.
|
||||||
|
Resolving deltas: 100% (2/2), done.
|
||||||
|
remote: Total 20 (delta 2), reused 20 (delta 2), pack-reused 0
|
||||||
|
|
||||||
|
● Настроим хранилище боба
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git config user.name 'Bob(SokolovMI)'
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git config email.name 'sokolov.mouse@yandex.ru'
|
||||||
|
|
||||||
|
● Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git add project.cpp
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git commit -m 'code: добавление вывода произведения двух чисел'
|
||||||
|
[main 49afd29] code: добавление вывода произведения двух чисел
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 49afd29 (HEAD -> main) code: добавление вывода произведения двух чисел
|
||||||
|
* a66d232 (origin/main, origin/HEAD) code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git push
|
||||||
|
Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa':
|
||||||
|
Enumerating objects: 7, done.
|
||||||
|
Counting objects: 100% (7/7), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (4/4), 456 bytes | 456.00 KiB/s, done.
|
||||||
|
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
a66d232..49afd29 main -> main
|
||||||
|
|
||||||
|
|
||||||
|
● Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен).
|
||||||
|
|
||||||
|
$ git fetch
|
||||||
|
remote: Enumerating objects: 7, done.
|
||||||
|
remote: Counting objects: 100% (7/7), done.
|
||||||
|
remote: Compressing objects: 100% (2/2), done.
|
||||||
|
remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0
|
||||||
|
Unpacking objects: 100% (4/4), 436 bytes | 48.00 KiB/s, done.
|
||||||
|
From github.com:Kra1k/cs-lab02
|
||||||
|
a66d232..49afd29 main -> origin/main
|
||||||
|
)
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 49afd29 (origin/main) code: добавление вывода произведения двух чисел
|
||||||
|
* a66d232 (HEAD -> main) code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/ali
|
||||||
|
$ git pull --ff-only
|
||||||
|
Updating a66d232..49afd29
|
||||||
|
Fast-forward
|
||||||
|
project/project.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
|
||||||
|
● Далее Алиса вносит новое изменение, а Боб его скачивает.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'code: добавлен вывод деления двух чисел'
|
||||||
|
[main 71dc1f0] code: добавлен вывод деления двух чисел
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 7, done.
|
||||||
|
Counting objects: 100% (7/7), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (4/4), 446 bytes | 446.00 KiB/s, done.
|
||||||
|
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
49afd29..71dc1f0 main -> main
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$ git pull
|
||||||
|
Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa':
|
||||||
|
remote: Enumerating objects: 7, done.
|
||||||
|
remote: Counting objects: 100% (7/7), done.
|
||||||
|
remote: Compressing objects: 100% (2/2), done.
|
||||||
|
remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0
|
||||||
|
Unpacking objects: 100% (4/4), 426 bytes | 7.00 KiB/s, done.
|
||||||
|
From github.com:Kra1k/cs-lab02
|
||||||
|
49afd29..71dc1f0 main -> origin/main
|
||||||
|
Updating 49afd29..71dc1f0
|
||||||
|
Fast-forward
|
||||||
|
project/project.cpp | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
● Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'code: добавлен вывод максимума'
|
||||||
|
[main 7e48e49] code: добавлен вывод максимума
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 7, done.
|
||||||
|
Counting objects: 100% (7/7), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (4/4), 449 bytes | 449.00 KiB/s, done.
|
||||||
|
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
71dc1f0..7e48e49 main -> main
|
||||||
|
|
||||||
|
● (боб)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git commit -m 'code: добавление вывода минимума'
|
||||||
|
[main e507b8a] code: добавление вывода минимума
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git push
|
||||||
|
Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa':
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
! [rejected] main -> main (fetch first)
|
||||||
|
error: failed to push some refs to 'github.com:Kra1k/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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub.)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
● Загрузим версию с сервера
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git fetch
|
||||||
|
Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa':
|
||||||
|
remote: Enumerating objects: 7, done.
|
||||||
|
remote: Counting objects: 100% (7/7), done.
|
||||||
|
remote: Compressing objects: 100% (2/2), done.
|
||||||
|
remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0
|
||||||
|
Unpacking objects: 100% (4/4), 429 bytes | 7.00 KiB/s, done.
|
||||||
|
From github.com:Kra1k/cs-lab02
|
||||||
|
71dc1f0..7e48e49 main -> origin/main
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* e507b8a (HEAD -> main) code: добавление вывода минимума
|
||||||
|
| * 7e48e49 (origin/main, origin/HEAD) code: добавлен вывод максимума
|
||||||
|
|/
|
||||||
|
* 71dc1f0 code: добавлен вывод деления двух чисел
|
||||||
|
* 49afd29 code: добавление вывода произведения двух чисел
|
||||||
|
* a66d232 code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
|
||||||
|
(Ветка main раздвоилась.)
|
||||||
|
● Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase.
|
||||||
|
|
||||||
|
$ git rebase origin/main
|
||||||
|
Auto-merging project/project.cpp
|
||||||
|
CONFLICT (content): Merge conflict in project/project.cpp
|
||||||
|
error: could not apply e507b8a... code: добавление вывода минимума
|
||||||
|
hint: Resolve all conflicts manually, mark them as resolved with
|
||||||
|
hint: "git add/rm <conflicted_files>", 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 --abort".
|
||||||
|
Could not apply e507b8a... code: добавление вывода минимума
|
||||||
|
|
||||||
|
● Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main|REBASE 1/1)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main|REBASE 1/1)
|
||||||
|
$ git status
|
||||||
|
interactive rebase in progress; onto 7e48e49
|
||||||
|
Last command done (1 command done):
|
||||||
|
pick e507b8a code: добавление вывода минимума
|
||||||
|
No commands remaining.
|
||||||
|
You are currently rebasing branch 'main' on '7e48e49'.
|
||||||
|
(all conflicts fixed: run "git rebase --continue")
|
||||||
|
|
||||||
|
Changes to be committed:
|
||||||
|
(use "git restore --staged <file>..." to unstage)
|
||||||
|
modified: project.cpp
|
||||||
|
|
||||||
|
|
||||||
|
$ git rebase --continue
|
||||||
|
[detached HEAD 47fca42] code: добавление вывода минимума
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
Successfully rebased and updated refs/heads/main.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 47fca42 (HEAD -> main) code: добавление вывода минимума
|
||||||
|
* 7e48e49 (origin/main, origin/HEAD) code: добавлен вывод максимума
|
||||||
|
* 71dc1f0 code: добавлен вывод деления двух чисел
|
||||||
|
* 49afd29 code: добавление вывода произведения двух чисел
|
||||||
|
* a66d232 code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
(Получили желаемый результат)
|
||||||
|
● Отправим изменения на сервер.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/bob/cs-lab02/project (main)
|
||||||
|
$ git push
|
||||||
|
Enter passphrase for key '/c/Users/Михаил/.ssh/id_rsa':
|
||||||
|
Enumerating objects: 7, done.
|
||||||
|
Counting objects: 100% (7/7), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (4/4), 516 bytes | 516.00 KiB/s, done.
|
||||||
|
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
7e48e49..47fca42 main -> main
|
||||||
|
|
||||||
|
● В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git branch double
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git checkout double
|
||||||
|
Switched to branch 'double'
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (double)
|
||||||
|
$ git add -u
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (double)
|
||||||
|
$ git commit -m 'code: изменен тип переменных на вещественный'
|
||||||
|
[double 091584f] code: изменен тип переменных на вещественный
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
● Затем переключается на ветку main. И синхронизирует её
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (double)
|
||||||
|
$ git checkout main
|
||||||
|
Switched to branch 'main'
|
||||||
|
Your branch is up to date with 'origin/main'.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git pull
|
||||||
|
remote: Enumerating objects: 7, done.
|
||||||
|
remote: Counting objects: 100% (7/7), done.
|
||||||
|
remote: Compressing objects: 100% (2/2), done.
|
||||||
|
remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0
|
||||||
|
Unpacking objects: 100% (4/4), 496 bytes | 8.00 KiB/s, done.
|
||||||
|
From github.com:Kra1k/cs-lab02
|
||||||
|
7e48e49..47fca42 main -> origin/main
|
||||||
|
Updating 7e48e49..47fca42
|
||||||
|
Fast-forward
|
||||||
|
project/project.cpp | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 091584f (double) code: изменен тип переменных на вещественный
|
||||||
|
| * 47fca42 (HEAD -> main, origin/main) code: добавление вывода минимума
|
||||||
|
|/
|
||||||
|
* 7e48e49 code: добавлен вывод максимума
|
||||||
|
* 71dc1f0 code: добавлен вывод деления двух чисел
|
||||||
|
* 49afd29 code: добавление вывода произведения двух чисел
|
||||||
|
* a66d232 code: добавлен вывод разности двух чисел
|
||||||
|
* f06ff5f code: добавлен вывод суммы двух чисел
|
||||||
|
* c18ecb8 code: добавлен ввод двух чисел
|
||||||
|
* 75fb07c build: добавлен файл проекта
|
||||||
|
* e04836e code: заготовка программы
|
||||||
|
|
||||||
|
(Получаем одновременно две ветки)
|
||||||
|
● Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git merge double
|
||||||
|
Auto-merging project/project.cpp
|
||||||
|
Merge made by the 'ort' strategy.
|
||||||
|
project/project.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
.
|
||||||
|
|
||||||
|
Михаил@DESKTOP-I19EJ7T MINGW64 ~/Desktop/РПОСУ_LABS/lab02/alice/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 14, done.
|
||||||
|
Counting objects: 100% (14/14), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (6/6), done.
|
||||||
|
Writing objects: 100% (8/8), 802 bytes | 802.00 KiB/s, done.
|
||||||
|
Total 8 (delta 2), reused 0 (delta 0), pack-reused 0
|
||||||
|
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
|
||||||
|
To github.com:Kra1k/cs-lab02.git
|
||||||
|
47fca42..f8fd08e main -> main
|
Загрузка…
Ссылка в новой задаче