Сравнить коммиты

..

3 Коммитов

Автор SHA1 Сообщение Дата
Alice (KomkovBN) 02c8da554b report
2 лет назад
Alice (KomkovBN) 2969185213 Merge branch 'double'
2 лет назад
Alice (KomkovBN) f159ef04eb code: a и b double
2 лет назад

@ -0,0 +1,761 @@
Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ»
Институт информационных и вычислительных технологий
Кафедра Управления и интеллектуальных технологий
Дисциплина:
Разработка программного обеспечения систем управления
Лабораторная работа №2
Система контроля версий Git
Выполнил студент группы
А-03-22
Комков Борис Николаевич
Вариант: -
Проверил
Козлюк Дмитрий Александрович
Москва 2023
Цель работы
Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними.
Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также популярный хостинг репозитариев — GitHub.
Ход работы:
Вход в терминал и создание структуры каталогов
● Создаем папки пользователей (mkdir alice, mkdir bob)
● В папке пользователя alice создаем папку project
Инициализация репозитария и настройка Git
● Инициализируем хранилище git (git init)
● Настраиваем папки пользователя, с которым будем работать:
/Desktop/lab02/alice/project (master)
$ git init
Initialized empty Git repository in C:/User/scomko/Desktop/lab02/alice/project/.git
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.name 'Alice (KomkovBN)'
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.email 'komkovBN@mpei.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, и подсказывает как их добавить
Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить
● Добавляем файл с кодом и просматриваем изменения
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ 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
Появилась строка с файлами в индексе, стоящими в очереди на коммит
Составление сообщений к коммитам
● Создаем 2 коммита с информацией о коде программы
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 0e6e8a1] code: заготовка программы
1 file changed, 10 insertions(+)
create mode 100644 project/project.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add project.cbp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[master 4384681] build: добавлен файл проекта
1 file changed, 147 insertions(+)
create mode 100644 project.cbp
● После добавления в программу ввода 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
no changes added to commit (use "git add" and/or "git commit -a")
● Проделываем ряд изменений с кодом программы и делаем коммиты несколькими способами
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add project.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен ввод двух чисел'
[master 2ad265b] code: добавлен ввод двух чисел
1 file changed, 4 insertions(+), 1 deletion(-)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен вывод суммы двух чисел'
[master 72813f6] code: добавлен вывод суммы двух чисел
1 file changed, 1 insertion(+)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен вывод разности двух чисел'
[master bfb4095] code: добавлен вывод разности двух чисел
1 file changed, 1 insertion(+), 1 deletion(-)
Просмотр истории
● С помощью команды git log и различных ее опций просматриваем журнал коммитов
Используем команду git log –stat
$ git log --stat
commit 72813f6549a5115be88700b232edd89742438ef1
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:58:00 2023 +0300
:
code: добавлен вывод суммы двух чисел
:
main.cpp | 1 +
1 file changed, 1 insertion(+)
:
commit 2ad265b38d428b291c9c441585dad2661766f269
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:54:23 2023 +0300
:
code: добавлен вывод суммы двух чисел
:
main.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
:
commit 43846815d2859b234ee4e1fcb7e42c4ec0638436
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:36:25 2023 +0300
:
build: добавлен файл проекта
:
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
:
commit 0e6e8a16771b1040fe34cc3e8ce7805979ffd4f1
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:30:52 2023 +0300
:
code: заготовка программы
:
main.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
В последнем коммите первой строкой показывается хэш коммита, по которому можно
потом найти этот коммит
Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита
Далее идет комментарий к коммиту
Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.)
В последней стр. приведена статистика изменений данных файлов
(Использование других способов просмотра истории)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
bfb4095 (HEAD -> master) code: добавлен вывод разности двух чисел
72813f6 code: добавлен вывод суммы двух чисел
2ad265b code: добавлен вывод суммы двух чисел
4384681 build: добавлен файл проекта
0e6e8a1 code: заготовка программы
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* bfb4095 (HEAD -> master) code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
Просмотр коммитов
● Используем команды для просмотра отдельных коммитов(git log –main.cpp/ git log –grep “code: ”)
$ git log --grep "build:"
commit 43846815d2859b234ee4e1fcb7e42c4ec0638436
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:36:25 2023 +0300
build: добавлен файл проекта
● Далее тремя способами просматриваем информацию о предпоследнем коммите
(результат всех способов один, поэтому в отчете не повторялся)
$ git show HEAD~1
commit 72813f6549a5115be88700b232edd89742438ef1
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:58:00 2023 +0300
code: добавлен вывод суммы двух чисел
diff --git a/main.cpp b/main.cpp
index eac5055..4364dbc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,4 +7,5 @@ int main()
cout << "Enter A and B: ";
int a, b;
cin >> a >> b;
+ cout << "A + B = " << a + b << '\n';
}
$ git show master~1
commit 72813f6549a5115be88700b232edd89742438ef1
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:58:00 2023 +0300
code: добавлен вывод суммы двух чисел
diff --git a/main.cpp b/main.cpp
index eac5055..4364dbc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,4 +7,5 @@ int main()
cout << "Enter A and B: ";
int a, b;
cin >> a >> b;
+ cout << "A + B = " << a + b << '\n';
}
commit 72813f6549a5115be88700b232edd89742438ef1
Author: Alice (KomkovBN) <KomkovBN@mpei.ru>
Date: Fri Aug 25 22:58:00 2023 +0300
code: добавлен вывод суммы двух чисел
diff --git a/main.cpp b/main.cpp
index eac5055..4364dbc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,4 +7,5 @@ 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
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
< git commit -a -m "code: добавлен вывод произведения двух чисел"
[main 9542a79] code: добавлен вывод произведения двух чисел
1 file changed, 1 insertion(+)
$ git log --oneline --decorate --all --graph
* 9542a79 (HEAD -> main) code: добавлен вывод произведения двух чисел
* 612bb65 git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 9542a79 code: добавлен вывод разности двух чисел
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 612bb65 (HEAD -> main) git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
Обмен кодом через удаленное хранилище
● Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/comko/.ssh/id_rsa):
Created directory '/c/Users/comko/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/comko/.ssh/id_rsa
Your public key has been saved in /c/Users/comko/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:UH8jcnaNWZEXCc6x7ngek5NfbZtEPNTDvyRZBUWNk1Y comko@DESKTOP-VQU627S
The key's randomart image is:
+---[RSA 3072]----+
| . o=@E|
| . . o=X.=|
| . . = *=.B.|
| . + +..= o|
| S + =.|
| o * +|
| . O o+|
| o *.+|
| . + |
+----[SHA256]-----+
● Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы:
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-add
Identity added: /c/Users/comko/.ssh/id_rsa (comko@DESKTOP-VQU627S)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 632
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNSGMoTHu2AABUlnGP3mY57Nb2EtVfFMyD+RMHtyIyW/9ILGxYtVp6e5jLVH2lyQU6BXhpY3952pu9bVDubcwrP7BqQ5p1Ov2kOAIs4ykKdn3waz2w1PVgS7yufdMZy7s6OrTZvMSBku1wxqAL78dKLx5GvRPQ+PhDzXN2qGpm3TYgcF/W/K/HfUNC4i0LQjTjP1Oa3uYBasdck4HRraeDLzG0OABjXMpn41fiPG1d6de6XOzOMCXhU1RGj5X7V4eApjKO9MtgtR64nHnnca+IICzQ8/tOTyknFpr4Dt2vPywR6gPkvzIQn9QDzk2qdpknHYRpFbu4uTNRCWJUVI9FqJmglzrCJ0HpbScqa7aZHkJEPHFMbAYOriMfHYd17R3TcyYWhLAwo0uTelODEltHGw9G1ZI2Y3EWZB+eO/yOam5H9knLes/nxxQ0Pf5qUYgpSYzkhJahVM+F+GlcstwA2EC0h65ywMLh/T0B6MT+4x0fc1BioXWan7LrKNu7OEE= comko@DESKTOP-VQU627S
Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub.
● Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push.
$ 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.
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 20 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 2.37 KiB | 2.37 MiB/s, done.
Total 18 (delta 2), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:KomkovBN/cs-lab02.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
● К работе присоединяется боб. Клонируем репозитарий с помощью git clone.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob (master)
$ git clone git@uit.mpei.ru:KomkovBN/cs-lab02.git project
Cloning into 'project'...
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
Receiving objects: 100% (18/18), done.
Resolving deltas: 100% (2/2), done.
● Настроим хранилище боба
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (KomkovBN)'
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.email 'komkovBN@mpei.ru'
● Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m 'code: добавление вывода произведения двух чисел'
[main 89cfe0a] code: добавление вывода произведения двух чисел
1 file changed, 1 insertion(+)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 89cfe0a (HEAD -> main) code: добавление вывода произведения двух чисел
* 612bb65 (origin/main, origin/HEAD) git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 456 bytes | 456.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:KomkovBN/cs-lab02.git
612bb65..89cfe0a main -> main
● Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен).
$ 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
Unpacking objects: 100% (3/3), 436 bytes | 145.00 KiB/s, done.
From uit.mpei.ru:KomkovBN/cs-lab02
612bb65..89cfe0a main -> origin/main
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 89cfe0a (origin/main) code: добавление вывода произведения двух чисел
* 612bb65 (HEAD -> main) git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating 612bb65..89cfe0a
Fast-forward
main.cpp | 1 +
1 file changed, 1 insertion(+)
● Далее Алиса вносит новое изменение, а Боб его скачивает.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен вывод деления двух чисел'
[main f16b5b3] code: добавлен вывод деления двух чисел
1 file changed, 2 insertions(+)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 439 bytes | 439.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:KomkovBN/cs-lab02.git
89cfe0a..f16b5b3 main -> main
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ 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
Unpacking objects: 100% (3/3), 419 bytes | 24.00 KiB/s, done.
From uit.mpei.ru:KomkovBN/cs-lab02
89cfe0a..f16b5b3 main -> origin/main
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull
Updating 89cfe0a..f16b5b3
Fast-forward
main.cpp | 2 ++
1 file changed, 2 insertions(+)
● Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен вывод максимума'
[main 2d3baeb] code: добавлен вывод максимума
1 file changed, 1 insertion(+)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 426 bytes | 426.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:KomkovBN/cs-lab02.git
f16b5b3..2d3baeb main -> main
● (боб)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m 'code: добавление вывода минимума'
[main ff9f933] code: добавление вывода минимума
1 file changed, 1 insertion(+)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
To uit.mpei.ru:KomkovBN/cs-lab02.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'uit.mpei.ru:KomkovBN/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.)
● Загрузим версию с сервера
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ 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
Unpacking objects: 100% (3/3), 406 bytes | 22.00 KiB/s, done.
From uit.mpei.ru:KomkovBN/cs-lab02
f16b5b3..2d3baeb main -> origin/main
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 4e9d2b4(HEAD -> main) code: добавление вывода минимума
| * 2d3baeb (origin/main, origin/HEAD) code: добавлен вывод максимума
|/
* f16b5b3 code: добавлен вывод деления двух чисел
* 89cfe0a code: добавление вывода произведения двух чисел
* 612bb65 git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
(Ветка main раздвоилась.)
● Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git rebase origin/main
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply ff9f933... 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 ff9f933... code: добавление вывода минимума
● Команда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git add -u
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git status
interactive rebase in progress; onto 2d3baeb
Last command done (1 command done):
pick 4e9d2b4code: добавление вывода минимума
No commands remaining.
You are currently editing a commit while rebasing branch 'main' on '2d3baeb'.
(use "git commit --amend" to amend the current commit)
(use "git rebase --continue" once you are satisfied with your changes)
nothing to commit, working tree clean
$ git rebase --continue
[detached HEAD 47fca42] code: добавление вывода минимума
1 file changed, 4 insertions(+)
Successfully rebased and updated refs/heads/main.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 2f66920 (HEAD -> main) code: добавление вывода минимума
* 2d3baeb (origin/main, origin/HEAD) code: добавлен вывод максимума
* f16b5b3 code: добавлен вывод деления двух чисел
* 89cfe0a code: добавление вывода произведения двух чисел
* 612bb65 git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
(Получили желаемый результат)
● Отправим изменения на сервер.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 515 bytes | 515.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:KomkovBN/cs-lab02.git
2d3baeb..2f66920 main -> main
● В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git branch double
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (double)
$ git add main.cpp
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (double)
$ git commit -m 'code: изменен тип переменных на вещественный'
[double d0fc256] code: изменен тип переменных на вещественный
1 file changed, 1 insertion(+), 1 deletion(-)
● Затем переключается на ветку main. И синхронизирует её
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull
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
Unpacking objects: 100% (3/3), 495 bytes | 29.00 KiB/s, done.
From uit.mpei.ru:KomkovBN/cs-lab02
2d3baeb..2f66920 main -> origin/main
Updating 2d3baeb..2f66920
Fast-forward
main.cpp | 4 ++++
1 file changed, 4 insertions(+)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* d0fc256 (double) code: изменен тип переменных на вещественный
| * 4e9d2b4 (origin/main, origin/HEAD) code: вывод минимума
|/
* 2d3baeb code: добавлен вывод максимума
* f16b5b3 code: добавлен вывод деления двух чисел
* 89cfe0a code: добавление вывода произведения двух чисел
* 612bb65 git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы
(Получаем одновременно две ветки)
● Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub.
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/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(-)
comko@DESKTOP-VQU627S MINGW64 ~/Desktop/Lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 2969185 (HEAD -> main) Merge branch 'double'
|\
| * f159ef0 (double) code: a и b double
* | 4e9d2b4 (origin/main, origin/HEAD) code: вывод минимума
|/
* 2d3baeb code: добавлен вывод максимума
* f16b5b3 code: добавлен вывод деления двух чисел
* 89cfe0a code: добавление вывода произведения двух чисел
* 612bb65 git: gitignore занесён под контроль
* bfb4095 code: добавлен вывод разности двух чисел
* 72813f6 code: добавлен вывод суммы двух чисел
* 2ad265b code: добавлен вывод суммы двух чисел
* 4384681 build: добавлен файл проекта
* 0e6e8a1 code: заготовка программы

@ -5,7 +5,7 @@ using namespace std;
int main()
{
cout << "Enter A and B: ";
int a, b;
double a, b;
cin >> a >> b;
cout << "A + B = " << a + b << '\n';
cout << "A - B = " << a - b << '\n';

Загрузка…
Отмена
Сохранить