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

880 строки
36 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

rybin@Bomba MINGW64 ~
$ cd C:
rybin@Bomba MINGW64 /c
$ cd Users
rybin@Bomba MINGW64 /c/Users
$ cd Rybin
rybin@Bomba MINGW64 /c/Users/Rybin
$ cd OneDrive
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive
$ cd Desktop
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop
$ cd lab02
Ход работы:
Вход в терминал и создание структуры каталогов
Создаем папки пользователей (mkdir alice, mkdir bob)
В папке пользователя alice создаем папку project
Инициализация репозитария и настройка Git:
Инициализируем хранилище git (git init)
Настраиваем папки пользователя, с которым будем работать:
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02
$ mkdir alice
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02
$ mkdir bob
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02
$ cd alice
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice
$ mkdir project
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice
$ cd project
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project
$ cd ..
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice
$ cd project
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/rybin/OneDrive/Desktop/lab02/alice/project/.git/
Создание коммитов:
Занесение файлов под контроль версий
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (master)
$ git branch -m main
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ ls -A
.git/
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git config user.name 'Alice (StepanovaKY)'
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git config user.email 'StepanovaKY@empei.ru'
Просматриваем состояние рабочей копии(git status)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
main.cpp
obj/
project.cbp
nothing added to commit but untracked files present (use "git add" to track)
В первой строке ссылка HEAD указывает на ветку main
Вторая стр. говорит о том, что еще не было создано коммитов
Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить
Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить
Добавляем файл с кодом и просматриваем изменения
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git add main.cpp
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.cbp
Появилась строка с файлами в индексе, стоящими в очереди на коммит
Составление сообщений к коммитам
Создаем 2 коммита с информацией о коде программы
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[main (root-commit) e6e2269] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git add project.cbp
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: project.cbp
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main 57f1f4f] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
no changes added to commit (use "git add" and/or "git commit -a")
Проделываем ряд изменений с кодом программы и делаем коммиты суммы и разности
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git add main.cpp
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен ввод чисел и вывод их суммы и разности'
[main f35c583] code: добавлен ввод чисел и вывод их суммы и разности
1 file changed, 3 insertions(+), 2 deletions(-)
Игнорирование файлов
Укажем Git игнорировать присутствие каталога bin и obj
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git status
On branch main
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)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git add .gitignore
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'git: игнорирование бинарных файлов'
[main 1dc38fd] git: игнорирование бинарных файлов
1 file changed, 3 insertions(+)
create mode 100644 .gitignore
git: добавлен файл .gitignore для игнорирования каталогов bin и obj
Просмотр истории:
С помощью команды git log и различных ее опций просматриваем журнал коммитов
Используем команду git log –stat
commit f35c5833ccc51b116c8ce1836e365319595d6cdf
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:25:32 2025 +0300
code: добавлен ввод чисел и вывод их суммы и разности
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: добавлен файл проекта
commit e6e22691cdb433025be59b85dd526be2fd0017a4
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:03:57 2025 +0300
code: заготовка программы
В последнем коммите первой строкой показывается хэш коммита, по которому можно
потом найти этот коммит
Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита
Далее идет комментарий к коммиту
Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.)
В последней стр. приведена статистика изменений данных файлов
(Использование других способов просмотра истории)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git log
commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main)
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:34:38 2025 +0300
git: добавлен файл .gitignore для игнорирования каталогов bin и obj
commit f35c5833ccc51b116c8ce1836e365319595d6cdf
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:25:32 2025 +0300
code: добавлен ввод чисел и вывод их суммы и разности
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: добавлен файл проекта
commit e6e22691cdb433025be59b85dd526be2fd0017a4
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:03:57 2025 +0300
code: заготовка программы
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git log --stat
commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main)
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:34:38 2025 +0300
git: добавлен файл .gitignore для игнорирования каталогов bin и obj
.gitignore | 3 +++
1 file changed, 3 insertions(+)
commit f35c5833ccc51b116c8ce1836e365319595d6cdf
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:25:32 2025 +0300
code: добавлен ввод чисел и вывод их суммы и разности
main.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: добавлен файл проекта
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
e10fefc (HEAD -> main) git: добавлен файл .gitignore для игнорирования каталогов bin и obj
f35c583 code: добавлен ввод чисел и вывод их суммы и разности
57f1f4f build: добавлен файл проекта
e6e2269 code: заготовка программы
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* e10fefc (HEAD -> main) git: добавлен файл .gitignore для игнорирования каталогов bin и obj
* f35c583 code: добавлен ввод чисел и вывод их суммы и разности
* 57f1f4f build: добавлен файл проекта
* e6e2269 code: заготовка программы
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git log --grep 'build'
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: добавлен файл проекта
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: добавлен файл проекта
Просмотр коммитов
Используем команды для просмотра отдельных коммитов(git log –main.cpp/ git log –grep “code: ”)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)$
git log --grep 'build:'
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: add project file
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)$
git log -- project.cbp
commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561
Author: Alice (AngelovI) <AngelovI@mpei.ru>
Date: Mon Mar 24 11:07:59 2025 +0300
build: add project file
(Таким способом мы просмотрели информацию о коммите по измененному файлу и по теме коммита)
Далее тремя способами просматриваем информацию о предпоследнем коммите
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git show HEAD
commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main)
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:34:38 2025 +0300
git: добавлен файл .gitignore для игнорирования каталогов bin и obj
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9d83ebf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+*.layout
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git show main
commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main)
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:34:38 2025 +0300
git: добавлен файл .gitignore для игнорирования каталогов bin и obj
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9d83ebf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+*.layout
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git show d2e8af
fatal: ambiguous argument 'd2e8af': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git show 9d83ebf
/bin
/obj
*.layout
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git show HEAD~1
commit f35c5833ccc51b116c8ce1836e365319595d6cdf
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:25:32 2025 +0300
code: добавлен ввод чисел и вывод их суммы и разности
diff --git a/main.cpp b/main.cpp
index b4392ec..eac5055 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,7 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
- return 0;
+ cout << "Enter A and B: ";
+ int a, b;
+ cin >> a >> b;
}
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git show main~1
commit f35c5833ccc51b116c8ce1836e365319595d6cdf
Author: Alice (StepanovaKY) <StepanovaKY@empei.ru>
Date: Mon Mar 24 13:25:32 2025 +0300
code: добавлен ввод чисел и вывод их суммы и разности
diff --git a/main.cpp b/main.cpp
index b4392ec..eac5055 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,7 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
- return 0;
+ cout << "Enter A and B: ";
+ int a, b;
+ cin >> a >> b;
}
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index eac5055..a2358eb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,4 +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';
+ cout << "A * B = " << a * b << '\n';
+
}
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git diff HEAD~2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9d83ebf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+*.layout
diff --git a/main.cpp b/main.cpp
index b4392ec..a2358eb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,11 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
- return 0;
+ cout << "Enter A and B: ";
+ int a, b;
+ cin >> a >> b;
+ cout << "A + B = " << a + b << '\n';
Добавим изменения в рабочую копию и посмотрим их с помощью команды git diff
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index b4392ec..a2358eb 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;
}
В качестве первой стр. мы видим входные данные команды для сравнения файлов
Далее идет заголовок с легендой изменения, место измененного кода и измененная функция
На след. строке идут строки вокруг измененной части, удаленные и добавленные строки
Откат изменений
Вносим изменения в код, а потом откатываем их до состояния в опр. коммите с помощью команды git reset
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'вывод произведения'
[main c41ed97] вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 1dc38fd git: игнорирование бинарных файлов
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp
Обмен кодом через удаленное хранилище
Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей.
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/rybin/.ssh/id_ed25519):
Created directory '/c/Users/rybin/.ssh'.
Enter passphrase for "/c/Users/rybin/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/rybin/.ssh/id_ed25519
Your public key has been saved in /c/Users/rybin/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:YsaIzPpwHTaBQqBGQam9BykmtgY0s12248qTX1MJ7CE rybin@Bomba
The key's randomart image is:
+--[ED25519 256]--+
|+=o |
|+= . o. |
|=o*.+E.+ |
|*B+o *o o . |
|=.=o* *.So |
| +.o.* .. |
|+ o.+ o |
| + = . . |
| . o. |
+----[SHA256]-----+
Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы:
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 760
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ ssh-add
Enter passphrase for /c/Users/rybin/.ssh/id_ed25519:
Identity added: /c/Users/rybin/.ssh/id_ed25519 (rybin@Bomba)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAQ2E0GWYIDA5NLS58pgx1ol7mBFIA2NC2Bs06kyzQmG rybin@Bomba
Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub.
Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push.
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git remote add origin git@uit.mpei.ru:StepanovaKY/project.git
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git push -u origin main
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 12 threads
Compressing objects: 100% (13/13), done.
Writing objects: 100% (15/15), 1.98 KiB | 1015.00 KiB/s, done.
Total 15 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:StepanovaKY/cs-lab02.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)
$ git remote -v
origin git@uit.mpei.ru:StepanovaKY/cs-lab02.git (fetch)
origin git@uit.mpei.ru:StepanovaKY/cs-lab02.git (push)
К работе присоединяется боб. Клонируем репозитарий с помощью git clone.
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:StepanovaKY/cs-lab02.git project
Cloning into 'project'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 15 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (1/1), done.
Настроим хранилище боба
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (StepanovaKY)'
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main)
$ git config user.email 'StepanovaKY@mpei.ru'
Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub.
Вантуз@DESKTOP-RJ2P0PB MINGW64 ~/Desktop/laba02/bob/project (main)
$ git add main.cpp
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main)
$ git commit -m 'code: вывод произведения'
[main b0667fd] code: вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/Rybin/.ssh/id_rsa':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 384 bytes | 384.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:StepanovaKY/cs-lab02.git
1dc38fd..b0667fd main -> main
Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен).
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/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), 364 bytes | 24.00 KiB/s, done.
From uit.mpei.ru:StepanovaKY/cs-lab02
1dc38fd..b0667fd main -> origin/main
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* b0667fd (origin/main) code: вывод произведения
* 1dc38fd (HEAD -> main) git: игнорирование бинарных файлов
* 62b8365 code: вывод разности
* 3b9353a code: вывод суммы
* 9ca7d49 build: add project file
* 9f4438c code: заготовка программы
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating 1dc38fd..b0667fd
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Далее Алиса вносит новое изменение, а Боб его скачивает.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git add main.cpp
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'code: вывод деления'
[main a959899] code: вывод деления
1 file changed, 2 insertions(+), 1 deletion(-)
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 396 bytes | 396.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:StepanovaKY/cs-lab02.git
b0667fd..a959899 main -> main
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ 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), 376 bytes | 18.00 KiB/s, done.
From uit.mpei.ru:StepanovaKY/cs-lab02
b0667fd..a959899 main -> origin/main
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git pull --ff-only
Enter passphrase for key '/c/Users/Вантуз/.ssh/id_rsa':
Updating b0667fd..a959899
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git add main.cpp
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git commit -m 'code: вывод максимума'
[main a262594] code: вывод максимума
1 file changed, 2 insertions(+)
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 434 bytes | 434.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:StepanovaKY/cs-lab02.git
a959899..a262594 main -> main
(боб)
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git add main.cpp
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git commit -m 'code: вывод минимума'
[main 38a334c] code: вывод минимума
1 file changed, 2 insertions(+), 2 deletions(-)
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/rybin/.ssh/id_rsa':
To uit.mpei.ru:AngelovI/cs-lab02.git
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'uit.mpei.ru:StepanovaKY/cs-lab02.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
(Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub.)
Загрузим версию с сервера
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git fetch
Enter passphrase for key '/c/Users/rybin/.ssh/id_rsa':
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 751cb56 (HEAD -> main) code: вывод минимума
| * a262594 (origin/main, origin/HEAD) code: вывод максимума
|/
* a959899 code: вывод деления
* b0667fd code: вывод произведения
* 1dc38fd git: игнорирование бинарных файлов
* 62b8365 code: вывод разности
* 3b9353a code: вывод суммы
* 9ca7d49 build: add project file
* 9f4438c code: заготовка программы
(Ветка main раздвоилась.)
Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git rebase origin/main
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 751cb56... 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 751cb56... code: вывод минимума
Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/bob/project (main|REBASE 1/1)
$ git add main.cpp
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git rebase --continue
[detached HEAD 9dc1bfc] code: вывод минимума
1 file changed, 6 insertions(+)
Successfully rebased and updated refs/heads/main.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 9dc1bfc (HEAD -> main) code: вывод минимума
* a262594 (origin/main, origin/HEAD) code: вывод максимума
* a959899 code: вывод деления
* b0667fd code: вывод произведения
* 1dc38fd git: игнорирование бинарных файлов
* 62b8365 code: вывод разности
* 3b9353a code: вывод суммы
* 9ca7d49 build: add project file
* 9f4438c code: заготовка программы
(Получили желаемый результат)
Отправим изменения на сервер.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main)
$ 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 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 438 bytes | 438.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:StepanovaKY/cs-lab02.git
a262594..9dc1bfc main -> main
В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git branch double
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (double)
$ git add main.cpp
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (double)
$ git commit -m 'code: изменение типа переменных'
[double 04a65b4] code: изменение типа переменных
1 file changed, 1 insertion(+), 1 deletion(-)
Затем переключается на ветку main. И синхронизирует её
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/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), 418 bytes | 41.00 KiB/s, done.
From uit.mpei.ru:StepanovaKY/cs-lab02
a262594..9dc1bfc main -> origin/main
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 04a65b4 (double) code: изменение типа переменных
| * 9dc1bfc (origin/main) code: вывод минимума
|/
* a262594 (HEAD -> main) code: вывод максимума
* a959899 code: вывод деления
* b0667fd code: вывод произведения
* 1dc38fd git: игнорирование бинарных файлов
* 62b8365 code: вывод разности
* 3b9353a code: вывод суммы
* 9ca7d49 build: add project file
* 9f4438c code: заготовка программы
(Получаем одновременно две ветки)
Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub.
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git merge double
Auto-merging main.cpp
Merge made by the 'ort' strategy.
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 12 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 831 bytes | 831.00 KiB/s, done.
Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:StepanovaKY/cs-lab02.git
9dc1bfc..cfe757c main -> main