Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1190 строки
43 KiB
Plaintext

Отчет по лабораторной работе №2
«Система контроля версии Git»
Выполнил: Кузин В.В.
Группа: А-03-22
Проверил: Козлюк Д.А.
Филатов С.А.
Цель работы
Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними.
Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также популярный хостинг репозитариев — GitHub.
Ход работы:
Вход в терминал и создание структуры каталогов
● Создаем папки пользователей (mkdir alice, mkdir bob)
● В папке пользователя alice создаем папку project
Инициализация репозитария и настройка Git
● Инициализируем хранилище git (git init)
● Настраиваем папки пользователя, с которым будем работать:
$ git init
Initialized empty Git repository in C:/Users/жесткий п/Desktop/lab_02/alice/project/.git/
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git config user.name 'Alice(KuzinVV)'
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git config user.email 'KuzinVV@mpei.ru'
Создание коммитов:
Занесение файлов под контроль версий
● Просматриваем состояние рабочей копии(git status)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
main.cpp
obj/
project.cbp
nothing added to commit but untracked files present (use "git add" to track)
В первой строке ссылка HEAD указывает на ветку main
Вторая стр. говорит о том, что еще не было создано коммитов
Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить
Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add main.cpp
Появилась строка с файлами в индексе, стоящими в очереди на коммит
Составление сообщений к коммитам
● Создаем 2 коммита с информацией о коде программы и просматриваем текущий статус:
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 034736f] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add project.cbp
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m 'build: добавлен файл проекта'
[master c07a302] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
● После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ 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: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
no changes added to commit (use "git add" and/or "git commit -a")
● Проделываем ряд изменений с кодом программы и делаем коммиты несколькими способами
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "Ввод двух чисел"
[master 4bba4b5] Ввод двух чисел
1 file changed, 4 insertions(+), 1 deletion(-)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add -u
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "Вывод суммы"
[master 58baa60] Вывод суммы
1 file changed, 1 insertion(+), 1 deletion(-)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -u
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: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/Debug/project.exe
obj/Debug/main.o
no changes added to commit (use "git add" and/or "git commit -a")
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add -u
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "Вывод разности"
[master 12ceb72] Вывод разности
1 file changed, 2 insertions(+), 1 deletion(-)
• Создадим файл .gitignore, необходимый, чтобы скрыть файлы bin/, / obj/, прописываем там это и видим, что по мере заполнения файла, ненужный нам файлы пропали из git status:
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
obj/
nothing added to commit but untracked files present (use "git add" to track)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add .gitignore
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "git"
[master 883899e] git
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
Просмотр истории
● С помощью команды git log и различных ее опций просматриваем журнал коммитов
Используем команду git log –stat
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git log --stat
commit 883899eb12349e2a5cb9c7aea3e83d1c70582e79 (HEAD -> master)
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:19:39 2023 +0300
git
.gitignore | 2 ++
1 file changed, 2 insertions(+)
commit 12ceb72ce75e2a6e37bb112ace06239b906b4dbe
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:16:44 2023 +0300
Вывод разности
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit 58baa60e6e5d5e7f0fd0f1ad24332ab4331bc81f
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:14:38 2023 +0300
Вывод суммы
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 4bba4b52fe5169f122a0f40f6d93b611c5f136e3
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:12:33 2023 +0300
Ввод двух чисел
main.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
commit c07a3027f31e7364ff2e8149f2fa91c292f82f28
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:10:01 2023 +0300
build: добавлен файл проекта
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
commit 034736faafb60a5f98cf6ae17f485a824938ab8f
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:06:50 2023 +0300
code: заготовка программы
main.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
• С помощью команды $ git log --oneline –decorate проведем то же самое действие, получив сокращенный журнал коммитов
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git log --oneline --decorate
883899e (HEAD -> master) git
12ceb72 Вывод разности
58baa60 Вывод суммы
4bba4b5 Ввод двух чисел
c07a302 build: добавлен файл проекта
034736f code: заготовка программы
• Команда
$ git log --oneline --decorate --all –graph позволяет увидеть журнал коммитов с характерными указателями
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git log --oneline --decorate --all --graph
* 883899e (HEAD -> master) git
* 12ceb72 Вывод разности
* 58baa60 Вывод суммы
* 4bba4b5 Ввод двух чисел
* c07a302 build: добавлен файл проекта
* 034736f code: заготовка программы
$ git log --grep "build: команда позволяет выбрать и просмотреть выбранный коммит:
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git log -- project.cbp
commit c07a3027f31e7364ff2e8149f2fa91c292f82f28
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:10:01 2023 +0300
build: добавлен файл проекта
$ git log -- project.cbp показывает коммит из файла:
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git log -- project.cbp
commit c07a3027f31e7364ff2e8149f2fa91c292f82f28
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:10:01 2023 +0300
build: добавлен файл проекта
● Далее тремя способами просматриваем информацию о предпоследнем коммите
(результат всех способов один, поэтому в отчете не повторялся)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show HEAD
commit 883899eb12349e2a5cb9c7aea3e83d1c70582e79 (HEAD -> master)
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:19:39 2023 +0300
git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4c7473d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/obj
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show HEAD~1
commit 12ceb72ce75e2a6e37bb112ace06239b906b4dbe
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:16:44 2023 +0300
Вывод разности
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;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show master HEAD~1
commit 883899eb12349e2a5cb9c7aea3e83d1c70582e79 (HEAD -> master)
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:19:39 2023 +0300
git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4c7473d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/obj
commit 12ceb72ce75e2a6e37bb112ace06239b906b4dbe
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:16:44 2023 +0300
Вывод разности
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;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show ^C
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show 12ceb7
commit 12ceb72ce75e2a6e37bb112ace06239b906b4dbe
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 14:16:44 2023 +0300
Вывод разности
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;
}
● Далее тремя способами просматриваем информацию о предпоследнем коммите
(результат всех способов один, поэтому в отчете не повторялся)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ 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;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git diff HEAD~2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4c7473d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/obj
diff --git a/main.cpp b/main.cpp
index 6de6dd2..fbd9488 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,6 +7,8 @@ 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'
+ << "A * B = " << a * b << '\n';
return 0;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit~5 HEAD
git: 'commit~5' is not a git command. See 'git --help'.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git diff HEAD~5 HEAD
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4c7473d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/obj
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..99bb702
--- /dev/null
+++ b/project.cbp
@@ -0,0 +1,40 @@
master)
$ git diff HEAD~5 HEAD~1
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..99bb702
--- /dev/null
+++ b/project.cbp
@@ -0,0 +1,40 @@
В качестве первой стр. мы видим входные данные команды для сравнения файлов
Далее идет заголовок с легендой изменения, место измененного кода и измененная функция
На след. строке идут строки вокруг измененной части, удаленные и добавленные строки
Откат коммита
Добавляем коммит вывода произведения и командой
$ git reset --hard HEAD~1 удаляем его
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "Вывод произведения"
[master 652d0a6] Вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git reset --hard HEAD~1
HEAD is now at 883899e git
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git checkout HEAD -- main.cpp
Создание ключа для обмена кодом
Обмен кодом через удаленное хранилище
Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/жесткий п/.ssh/id_rsa):
/c/Users/жесткий п/.ssh/id_rsa already exists.
Overwrite (y/n)? y
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:DUKXJtEjr+Hp6Ja2QjeXeMHgLTCxgpnD/TNnWBrrw4o жесткий п@DESKTOP-UVLMK4V
The key's randomart image is:
+---[RSA 3072]----+
| .. oo.. |
|oo+...o.= |
|*..= =.*.. |
| o + @..o |
| @ OS . |
| . * % |
| . . @ |
| o * o |
| E *o. |
+----[SHA256]-----+
Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ eval $(ssh-agent -s)
Agent pid 2253
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ ssh-add
Enter passphrase for /c/Users/жесткий п/.ssh/id_rsa:
Identity added: /c/Users/жесткий п/.ssh/id_rsa (жесткий п@DESKTOP-UVLMK4V)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCe01bfFFoj5jJzCMFztO+qqcbb20izocEYasN7k6zfkURcAEexN62KSLoVq7P99g3+UL4wDm05c5JGOQne32/1bH6p6KrWBnbCO78Y6wC+X7F1mV00+KaoEN05OhhJnpj0lL7N+p6WWa/dhUO/iRL7tY9sMIv9D81qEKnyvoJWN1Ks+qzVJGBEtXl39IAB1DWml727HuZ34MudYA5fzI1mOe2sbmsk5yPD0dzhvG+ccioo77++oYY6KVuufCO7l+2HJN0nVmcyaKC5MtU9vrHlG8kQClSS38CUGmrQjvHxkpn6fn9sU8D6rXwGNyBQ7QrwMPZJbBAugAx+f8XVr/5AsX24Tk5g8Y1eHSZBMsM/bRvXkNLKgqecqJZdnyFoSjtcBh1lcNYQxc9/tzDBMwVE8D3enPW7RNxI5qOBClc1p03u0A4pSb4QvbSiDBWnbQ7apaQrUuPnVcG/q1T3W0IIrL5pTdBeav45ba6kUH+r73EAkZYUk2MOOCrskawaa8k= жесткий п@DESKTOP-UVLMK4V
Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub.
● Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git remote add origin git@uit.mpei.ru:KuzinVV/cs-lab_02.git
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'uit.mpei.ru:KuzinVV/cs-lab_02.git'
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git push --set-upstream origin master
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 4 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 2.23 KiB | 43.00 KiB/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:KuzinVV/cs-lab_02.git
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.
● К работе присоединяется боб. Клонируем репозитарий с помощью git clone.
● $ git clone git@github.com:Kra1k/cs-lab02.git
● Cloning into 'cs-lab_02'...
● 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-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git config user.name 'Bob(KuzinVV)'
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git config user.email 'KuzinVV@mpei.ru'
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git config user.name 'Bob(KuzinVV)'
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git config user.email 'KuzinVV@mpei.ru'
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git show HEAD
commit 2dae335f8a6f484195be4fcfdc4fe7e5a4c45970 (HEAD -> master)
Merge: 27292cf 883899e
Author: Bob (KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 15:24:02 2023 +0300
Merge branch 'master' of uit.mpei.ru:KuzinVV/cs-lab_02
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
Enumerating objects: 9, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 4 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 697 bytes | 348.00 KiB/s, done.
Total 5 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:KuzinVV/cs-lab_02.git
883899e..2dae335 master -> master
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git fetch
Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
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), 389 bytes | 1024 bytes/s, done.
From uit.mpei.ru:KuzinVV/cs-lab_02
2dae335..dda7d4c master -> origin/master
● Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git add project.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git commit -m 'code: добавление вывода произведения двух чисел'
[main 49afd29] code: добавление вывода произведения двух чисел
1 file changed, 1 insertion(+), 1 deletion(-)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ 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-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ 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-lab¬_02.git
a66d232..49afd29 main -> main
● Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен).
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git fetch
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), 677 bytes | 2.00 KiB/s, done.
From uit.mpei.ru:KuzinVV/cs-lab_02
883899e..2dae335 master -> origin/master
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git log --oneline --decorate --all --graph
* 2dae335 (origin/master) Merge branch 'master' of uit.mpei.ru:KuzinVV/cs-lab_02
|\
| * 883899e git
* | 27292cf Вывод произведения
|/
* 12ceb72 (HEAD -> master) Вывод разности
* 58baa60 Вывод суммы
* 4bba4b5 Ввод двух чисел
* c07a302 build: добавлен файл проекта
* 034736f code: заготовка программы
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git pull --ff-only
Updating 12ceb72..2dae335
Fast-forward
.gitignore | 2 ++
main.cpp | 4 +++-
2 files changed, 5 insertions(+), 1 deletion(-)
create mode 100644 .gitignore
● Далее Алиса вносит новое изменение, а Боб его скачивает.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "Вывод деления"
[master dda7d4c] Вывод деления
1 file changed, 2 insertions(+), 1 deletion(-)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show HEAD
commit dda7d4c124d5aeee9fc89c15b5b0b88609496b22 (HEAD -> master)
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 15:36:38 2023 +0300
Вывод деления
diff --git a/main.cpp b/main.cpp
index 427ded3..d601ffe 100644
--- a/main.cpp
+++ b/main.cpp
@@ -9,7 +9,8 @@ int main()
cin >> a >> b;
cout << "A + B = " << a + b << '\n'
<< "A - B = " << a - b << '\n'
- << "A * B = " << a * b << '\n';
+ << "A * B = " << a * b << '\n'
+ << "A / B = " << a / b << '\n';
return 0;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 409 bytes | 409.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:KuzinVV/cs-lab_02.git
2dae335..dda7d4c master -> master
● Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git add main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git commit -m "Вывод максимума"
[master 372c9f3] Вывод максимума
1 file changed, 2 insertions(+)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show HEAD
commit 372c9f385676d09b94f9d6326fa093d60cf56d9b (HEAD -> master)
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 15:40:29 2023 +0300
Вывод максимума
diff --git a/main.cpp b/main.cpp
index d601ffe..d0f3794 100644
--- a/main.cpp
+++ b/main.cpp
@@ -11,6 +11,8 @@ int main()
<< "A - B = " << a - b << '\n'
<< "A * B = " << a * b << '\n'
<< "A / B = " << a / b << '\n';
+ if (a > b) cout << "max = " << a << '\n';
+ else cout << "max = " << b << '\n';
return 0;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 427 bytes | 427.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:KuzinVV/cs-lab_02.git
dda7d4c..372c9f3 master -> master
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
$ git show HEAD
commit 372c9f385676d09b94f9d6326fa093d60cf56d9b (HEAD -> master, origin/master)
Author: Alice(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 15:40:29 2023 +0300
Вывод максимума
diff --git a/main.cpp b/main.cpp
index d601ffe..d0f3794 100644
--- a/main.cpp
+++ b/main.cpp
@@ -11,6 +11,8 @@ int main()
<< "A - B = " << a - b << '\n'
<< "A * B = " << a * b << '\n'
<< "A / B = " << a / b << '\n';
+ if (a > b) cout << "max = " << a << '\n';
+ else cout << "max = " << b << '\n';
return 0;
}
● (боб)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git add main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git commit -m "Вывод минимума"
[master b746bb0] Вывод минимума
1 file changed, 2 insertions(+)
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git show HEAD
commit b746bb090fcbac7e616c41e950b0fbaea78b8760 (HEAD -> master)
Author: Bob(KuzinVV) <KuzinVV@mpei.ru>
Date: Mon Mar 20 15:45:17 2023 +0300
Вывод минимума
diff --git a/main.cpp b/main.cpp
index d601ffe..45306da 100644
--- a/main.cpp
+++ b/main.cpp
@@ -11,6 +11,8 @@ int main()
<< "A - B = " << a - b << '\n'
<< "A * B = " << a * b << '\n'
<< "A / B = " << a / b << '\n';
+ if (a > b) cout << "min = " << b << '\n';
+ else cout << "min = " << a << '\n';
return 0;
}
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
To uit.mpei.ru:KuzinVV/cs-lab_02.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'uit.mpei.ru:KuzinVV/cs-lab_02.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
(Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub.)
● Загрузим версию с сервера
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git fetch
● Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
● Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git show
● commit b746bb090fcbac7e616c41e950b0fbaea78b8760 (HEAD -> master)
● Author: Bob(KuzinVV) <KuzinVV@mpei.ru>
● Date: Mon Mar 20 15:45:17 2023 +0300
● Вывод минимума
● diff --git a/main.cpp b/main.cpp
● index d601ffe..45306da 100644
● --- a/main.cpp
● +++ b/main.cpp
● @@ -11,6 +11,8 @@ int main()
● << "A - B = " << a - b << '\n'
● << "A * B = " << a * b << '\n'
● << "A / B = " << a / b << '\n';
● + if (a > b) cout << "min = " << b << '\n';
● + else cout << "min = " << a << '\n';
● return 0;
● }
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git log --oneline --decorate --all –-graph
● fatal: ambiguous argument '–-graph': unknown revision or path not in the working tree.
● Use '--' to separate paths from revisions, like this:
● 'git <command> [<revision>...] -- [<file>...]'
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git log --oneline --decorate --all --graph
● * b746bb0 (HEAD -> master) Вывод минимума
● | * 372c9f3 (origin/master, origin/HEAD) Вывод максимума
● |/
● * dda7d4c Вывод деления
● * 2dae335 Merge branch 'master' of uit.mpei.ru:KuzinVV/cs-lab_02
● |\
● | * 883899e git
● * | 27292cf Вывод произведения
● |/
● * 12ceb72 Вывод разности
● * 58baa60 Вывод суммы
● * 4bba4b5 Ввод двух чисел
● * c07a302 build: добавлен файл проекта
● * 034736f code: заготовка программы
(Ветка main раздвоилась.)
● Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
● $ git rebase origin/master
● Auto-merging main.cpp
● CONFLICT (content): Merge conflict in main.cpp
● error: could not apply b746bb0... Вывод минимума
● 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 b746bb0... Вывод минимума
● Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master|REBASE 1/1)
$ git add -u
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master|REBASE 1/1)
$ git status
interactive rebase in progress; onto 372c9f3
Last command done (1 command done):
pick b746bb0 Вывод минимума
No commands remaining.
You are currently rebasing branch 'master' on '372c9f3'.
(all conflicts fixed: run "git rebase --continue")
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: main.cpp
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master|REBASE 1/1)
$ git rebase --continue
[detached HEAD 9ebad82] Вывод минимума
1 file changed, 5 insertions(+)
Successfully rebased and updated refs/heads/master.
(Получили желаемый результат)
● Отправим изменения на сервер.
жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/жесткий п/.ssh/id_rsa':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 462 bytes | 462.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:KuzinVV/cs-lab_02.git
372c9f3..9ebad82 master -> master
● В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git pull
● Updating 372c9f3..9ebad82
● Fast-forward
● main.cpp | 5 +++++
● 1 file changed, 5 insertions(+)
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git fetch
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git checkout -b
● error: switch `b' requires a value
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git checkout double
● Switched to branch 'double'
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (double)
● $ git add -u
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (double)
● $ git commit -m "Перевод a, b в double"
● [double c7f3bdf] Перевод a, b в double
● 1 file changed, 6 insertions(+), 1 deletion(
● Затем переключается на ветку main. И синхронизирует её
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (double)
● $ git checkout master
● Switched to branch 'master'
● Your branch is up to date with 'origin/master'.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git fetch
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git add -u
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git commit -m "Изменение типа данных"
● [master 5422fdc] Изменение типа данных
● 1 file changed, 1 insertion(+), 1 deletion(-)
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git fetch
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git pull --ff-only
● Already up to date.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ log --oneline --decorate --all –graph
● bash: log: command not found
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git log --oneline --decorate --all --graph
● * 5422fdc (HEAD -> master) Изменение типа данных
● * 9ebad82 (origin/master) Вывод минимума
● | * c7f3bdf (double) Перевод a, b в double
● |/
● * 372c9f3 Вывод максимума
● * dda7d4c Вывод деления
● * 2dae335 Merge branch 'master' of uit.mpei.ru:KuzinVV/cs-lab_02
● |\
● | * 883899e git
● * | 27292cf Вывод произведения
● |/
● * 12ceb72 Вывод разности
● * 58baa60 Вывод суммы
● * 4bba4b5 Ввод двух чисел
● * c07a302 build: добавлен файл проекта
● * 034736f code: заготовка программы
(Получаем одновременно две ветки)
● Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git merge double
● Merge made by the 'ort' strategy.
● жесткий п@DESKTOP-UVLMK4V MINGW64 ~/Desktop/lab_02/alice/project (master)
● $ git log --oneline --decorate --all --graph
● * e00b9df (HEAD -> master) Merge branch 'double'
● |\
● | * c7f3bdf (double) Перевод a, b в double
● * | 5422fdc Изменение типа данных
● * | 9ebad82 (origin/master) Вывод минимума
● |/
● * 372c9f3 Вывод максимума
● * dda7d4c Вывод деления
● * 2dae335 Merge branch 'master' of uit.mpei.ru:KuzinVV/cs-lab_02
● |\
● | * 883899e git
● * | 27292cf Вывод произведения
● |/
● * 12ceb72 Вывод разности
● * 58baa60 Вывод суммы
● * 4bba4b5 Ввод двух чисел
● * c07a302 build: добавлен файл проек