Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
DeviatovaMY 7aa9db3f93
Изменил(а) на 'README.txt'
1 год назад
.gitignore git: создан файл для игнорирования файлов, производных от кода 1 год назад
README.txt Изменил(а) на 'README.txt' 1 год назад
main.cpp git: ветка double слита в main 1 год назад
project.cbp build: добавлен файл проекта 1 год назад

README.txt

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


Выполнила: Девятова М.Е.
Группа: А-01-23
Проверил: Козлюк Д.А.

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


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

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02
$


2. Просмотрела файлы в рабочем каталоге с помощью команды ls. В рабочем каталоге пусто:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02
$ ls

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02
$


3. Создала каталоги Алисы и Боба для того, чтобы имитировать проект с двумя участниками, с помощью команды mkdir.
С помощью команд cd, cd .., mkdir перешла в каталог alice, создала каталог project, перешла в него, перешла на уровень выше и снова вернулась в него.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02
$ mkdir alice

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02
$ mkdir bob

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02
$ cd alice

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice
$ mkdir project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice
$ cd project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project
$ cd ..

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice
$ cd project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project
$


4. Инициализировала репозитарий в каталоге project с помощью команды git init. Теперь в приглашении есть (master).
Это имя текущей ветви Git. Подсказки о смене имени ветви не было, по умолчанию стоит master. Пока что менять имя ветви не буду.
С помощью команд config user.name и config user.email настроила репозитарий Алисы, чтобы будущие коммиты были от ее имени.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/ASUS X507UF/Desktop/lab02/alice/project/.git/

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.name 'Alice (DeviatovaMY)'

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.email 'DeviatovaMY@mpei.ru'


5. Создала и собрала проект в репозитарии Алисы. Проверила состояние рабочей копии через git status:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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)

On branch master - означает, что я нахожусь на ветке master
No commits yet - еще не было коммитов
Untracked files: - здесь перечислены файлы, которые не отслеживаются Git. В скобках подсказка как это исправить
nothing added to commit but untracked files present - означает, что никакие изменения не добавлены для коммита,
но есть неотслеживаемые файлы

Добавила main.cpp для начала отслеживания через git add и еще раз проверила состояние рабочей копии:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add main.cpp

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master

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

Из изменений:
Changes to be committed: здесь отслеживаемые и проиндексированные файлы.
Если файл проиндексирован, то при выполнении коммита будет добавлена версия файла, существовавшая на момент выполнения команды git add.
В моем случае здесь находится добавленный main.cpp


6. Сделала первый коммит с файлом main.cpp и сообщением: "code: заготовка программы" через git commit -m.
Изменила имя текущей ветки на main через git branch -m.
Добавила project.cbp в индекс и сделала коммит с ним:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 2ff127d] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/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

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main d275a06] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp

Вылезло небольшое предупреждение, но оно безвредно.


7. Изменила код программы. В теле функции main() теперь ввод 2 чисел. Проверила состояние рабочей копии:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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")

Из изменений:
Changes not staged for commit: - здесь измененные, но не проиндексированные файлы.
Если не выполнить команду git add, то новая версия файла не войдет в коммит.
Вместо new file файл main.cpp приобрел статус modified.
no changes added to commit - нет измененных проиндексированных файлов для нового коммита


8. Закоммитила изменения тремя разными способами.
1) Добавила main.cpp в индекс, чтобы его изменения вошли в новый коммит, затем закоммитила его:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен ввод двух чисел'
[main 4bdf8cd] code: добавлен ввод двух чисел
1 file changed, 3 insertions(+), 2 deletions(-)

Это удобно, если нужно в коммит добавить изменения не всех, а только некоторых файлов.

2) Добавила в программу вывод суммы двух чисел.
Добавила в индекс все изменения (к git add вместо имени файла добавляется -u).
После этого сделала коммит:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: добавлен вывод суммы двух чисел'
[main a610fc4] code: добавлен вывод суммы двух чисел
1 file changed, 1 insertion(+)

Этот способ удобен, если в коммит нужно добавить много измененных файлов.
После git add -u можно добавить в индекс новые файлы.

3) Добавила в программу вывод разности двух чисел.
Добавила все изменения и сделала коммит с помощью одной командв git commit -a -m:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлен вывод разности двух чисел'
[main 2b81c3f] code: добавлен вывод разности двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)

Этот способ лучше всего применять, если в коммит должны войти только изменения уже существующих файлов.


9. Создала новый файл, в котором записана строка: /bin.
Затем сохранила его в каталоге project (он же корень репозитария) под именем .gitignore.
Сделано это для того, чтобы игнорировать каталог bin.
Через git status убедилась, что каталог больше не отображается.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/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/
project.depend

nothing added to commit but untracked files present (use "git add" to track)

Аналогично с obj (в тот же файл .gitignore была добавлена строчка /obj):

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
project.depend

nothing added to commit but untracked files present (use "git add" to track)

Те же действия проделаны для project.depend:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
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)

Добавила файл .gitignore и сделала коммит:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: создан файл для игнорирования файлов, производных от кода'
[main eb72fb4] git: создан файл для игнорирования файлов, производных от кода
1 file changed, 3 insertions(+)
create mode 100644 .gitignore


10. Просмотрела журнал репозитария через git log с разными опциями.
1) git log (без опций):

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log
commit eb72fb489b792d9b6018099d15ab07c331caab9c (HEAD -> main)
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 19:20:58 2024 +0300

git: создан файл для игнорирования файлов, производных от кода

commit 2b81c3fea87a4d5e613d210f4231239cfbb663a3
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:46:26 2024 +0300

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

commit a610fc4ca0839fea9d4e53c1ad9cf5efea8915bf
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:38:56 2024 +0300

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

commit 4bdf8cd2cf2a1ace7ba42eb3184d22fe0e11b180
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:24:54 2024 +0300

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

commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:19:03 2024 +0300

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

commit 2ff127d35a64f19c996fa2eac0baa06dba18566a
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:16:29 2024 +0300

code: заготовка программы

2) git log --stat (показывает файлы, измененные в коммитах):

commit eb72fb489b792d9b6018099d15ab07c331caab9c (HEAD -> main)
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 19:20:58 2024 +0300

git: создан файл для игнорирования файлов, производных от кода

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

commit 2b81c3fea87a4d5e613d210f4231239cfbb663a3
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:46:26 2024 +0300

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

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

commit a610fc4ca0839fea9d4e53c1ad9cf5efea8915bf
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:38:56 2024 +0300

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

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

commit 4bdf8cd2cf2a1ace7ba42eb3184d22fe0e11b180
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:24:54 2024 +0300

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

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

commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:19:03 2024 +0300

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

project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

commit 2ff127d35a64f19c996fa2eac0baa06dba18566a
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:16:29 2024 +0300

code: заготовка программы

main.cpp | 9 +++++++++
1 file changed, 9 insertions(+)

Для последнего коммита показывается следующее:
хэш данного коммита; в скобках показано, что это последний на данный момент коммит ветки main;
имя и почта автора, сделавшого коммит; дата коммита; сообщение в коммите;
имя файла, через вертикальную черту количество добавленных строк в нем;
количество измененных файлов; общее количество добавленных строк.

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

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
eb72fb4 (HEAD -> main) git: создан файл для игнорирования файлов, производных от кода
2b81c3f code: добавлен вывод разности двух чисел
a610fc4 code: добавлен вывод суммы двух чисел
4bdf8cd code: добавлен ввод двух чисел
d275a06 build: добавлен файл проекта
2ff127d code: заготовка программы

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

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* eb72fb4 (HEAD -> main) git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

5) git log --grep "build:" (данная команда показывает коммиты по теме build):

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "build:"
commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:19:03 2024 +0300

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

6) git log -- project.cbp (данная команда показывает коммиты, затрагивающие файл project.cbp):

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:19:03 2024 +0300

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


11. Просмотрела предпоследний коммит тремя способами:
1) git show HEAD~1 (от поледнего коммита отступить на 1)
2) git show main~1 (по имени ветви)
3) git show 2b81c3f (по хэшу данного коммита)

Результат:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD~1
commit 2b81c3fea87a4d5e613d210f4231239cfbb663a3
Author: Alice (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 3 18:46:26 2024 +0300

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

diff --git a/main.cpp b/main.cpp
index 7e12fbf..4688377 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,5 +7,6 @@ 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";
}

Отображается хэш, автор, дата коммита, сообщение, код программы в main.cpp с удаленными (-) и добавленными (+) строками.

12. Добавила в main.cpp вывод произведения двух чисел. Просмотрела изменения в рабочей копии через git diff:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index 4688377..7991f2d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,6 @@ 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";
}

Была удалена строка с печатью разности.
Были добавлены измененная строка с печатью разности и печатью произведения двух чисел.

Просмотрела изменения между самым первым коммитом и коммитом, добавляющим вывод разности двух чисел.
Для этого использовала два аргумента в виде хэша этих коммитов:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff 2ff127d 2b81c3f
diff --git a/main.cpp b/main.cpp
index b4392ec..4688377 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,9 @@ 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"
+ << "A - B = " << a - b << "\n";
}

Были удалены строки с печатью "Hello world!", добавлены строки вводом чисел и выводом суммы и разности.


13. Закоммитила вывод произведения двух чисел. Откатила этот коммит через git reset --hard HEAD~1
(HEAD~1 - коммит, к которому нужно откатить состояние рабочей копии;
--hard означает, что рабочая копия должна быть приведена к состоянию данного коммита):

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлен вывод произведения двух чисел'
[main 8dc7c91] code: добавлен вывод произведения двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at eb72fb4 git: создан файл для игнорирования файлов, производных от кода

Внесла изменения в файл main.cpp и откатила этот файл к состоянию в последнем коммите через git checkout HEAD -- main.cpp:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp

14. Отправила проект на сервер (), предварительно создав там репозитарий:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote add origin http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push -u origin main
warning: auto-detection of host provider took too long (>2000ms)
warning: see https://aka.ms/gcm/autodetect for more information.
warning: auto-detection of host provider took too long (>2000ms)
warning: see https://aka.ms/gcm/autodetect for more information.
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.42 KiB | 77.00 KiB/s, done.
Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.

15. Начала работать от имени Боба. Через git clone получила проект с сервера:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob
$ git clone http://uit.mpei.ru/git/DeviatovaMY/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.

Перешла в каталог проекта и настроила Git через git config, чтобы коммиты были от имени Боба:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob
$ cd project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (DeviatovaMY)'

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.email 'DeviatovaMY@mpei.ru'


16. Добавила в программу вывод произведения чисел и закоммитила от имени Боба.
Убедилась, что он действительно сделан от имени Боба:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -a -m 'code: добавлен вывод произведения двух чисел'
[main bf9c01e] code: добавлен вывод произведения двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git show HEAD
commit bf9c01edae18cb5d72704cbd548e4ccd9896076d (HEAD -> main)
Author: Bob (DeviatovaMY) <DeviatovaMY@mpei.ru>
Date: Sun Mar 31 15:30:41 2024 +0300

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

diff --git a/main.cpp b/main.cpp
index 4688377..7991f2d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,6 @@ 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";
}

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

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
warning: auto-detection of host provider took too long (>2000ms)
warning: see https://aka.ms/gcm/autodetect for more information.
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), 440 bytes | 110.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
eb72fb4..bf9c01e main -> main


17. Перешла "на машину Алисы", загрузила изменения с сервера (при этом рабочая копия Алисы не изменилась).
Просмотрела историю всех веток, видно, что main отстает от origin/main (на сервере).
Продвинула main к версии, скачанной с сервера, через git pull --ff-only:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ cd ~/Desktop/lab02/alice/project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/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), 420 bytes | 2.00 KiB/s, done.
From http://uit.mpei.ru/git/DeviatovaMY/cs-lab02
eb72fb4..bf9c01e main -> origin/main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* bf9c01e (origin/main) code: добавлен вывод произведения двух чисел
* eb72fb4 (HEAD -> main) git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating eb72fb4..bf9c01e
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)


18. От лица Алисы добавила вывод частного двух чисел, сделала коммит и отправила изменения на сервер.
Проделала аналогичные шаги, что и в предыдущем пункте, поменяв роли Алисы и Боба местами:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлен вывод частного двух чисел'
[main 2c30e66] code: добавлен вывод частного двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ 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), 436 bytes | 436.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
bf9c01e..2c30e66 main -> main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ cd ~/Desktop/lab02/bob/project

ASUS X507UF@LAPTOP-KB81OPAN 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), 416 bytes | 0 bytes/s, done.
From http://uit.mpei.ru/git/DeviatovaMY/cs-lab02
bf9c01e..2c30e66 main -> origin/main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 2c30e66 (origin/main, origin/HEAD) code: добавлен вывод частного двух чисел
* bf9c01e (HEAD -> main) code: добавлен вывод произведения двух чисел
* eb72fb4 git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull --ff-only
Updating bf9c01e..2c30e66
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)


19. Добавила вывод максимума от лица Алисы, закоммитила и отправила на сервер.
Аналогично для Боба, но изменения не были приняты в силу того, что они были основаны не на последнем коммите.
Попробовала через git rebase переместить коммит Боба поверх последнего коммита на сервере, но изменения так же не были приняты.
В файле main.cpp возник конфликт, исправила его, учитывая и правки Боба, и правки Алисы.
Продолжила отправку коммита Боба на сервер через git rebase --continue, добавив перед этим файл с кодом в индекс.
Убедившись, что теперь коммит Боба поверх коммита Алисы, успешно отправила коммит Боба на сервер.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ cd ~/Desktop/lab02/alice/project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлен вывод максимума'
[main db458b4] code: добавлен вывод максимума
1 file changed, 4 insertions(+)

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ 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), 456 bytes | 456.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
2c30e66..db458b4 main -> main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ cd ~/Desktop/lab02/bob/project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -a -m 'code: добавлен вывод минимума'
[main 39b60ec] code: добавлен вывод минимума
1 file changed, 4 insertions(+)

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ASUS X507UF@LAPTOP-KB81OPAN 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), 436 bytes | 2.00 KiB/s, done.
From http://uit.mpei.ru/git/DeviatovaMY/cs-lab02
2c30e66..db458b4 main -> origin/main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 39b60ec (HEAD -> main) code: добавлен вывод минимума
| * db458b4 (origin/main, origin/HEAD) code: добавлен вывод максимума
|/
* 2c30e66 code: добавлен вывод частного двух чисел
* bf9c01e code: добавлен вывод произведения двух чисел
* eb72fb4 git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

ASUS X507UF@LAPTOP-KB81OPAN 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 39b60ec... 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 39b60ec... code: добавлен вывод минимума

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git add main.cpp

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git rebase --continue
[detached HEAD fbe0f36] code: добавлен вывод минимума
1 file changed, 4 insertions(+), 2 deletions(-)
Successfully rebased and updated refs/heads/main.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* fbe0f36 (HEAD -> main) code: добавлен вывод минимума
* db458b4 (origin/main, origin/HEAD) code: добавлен вывод максимума
* 2c30e66 code: добавлен вывод частного двух чисел
* bf9c01e code: добавлен вывод произведения двух чисел
* eb72fb4 git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ 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), 425 bytes | 425.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
db458b4..fbe0f36 main -> main


20. Перешла "на машину Алисы", создала новую ветку double и переключилась на нее.
Изменила тип переменных с int на double и сделала коммит.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main)
$ cd ~/Desktop/lab02/alice/project

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git branch double

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (double)
$ git commit -a -m 'code: изменен тип переменных на double'
[double 3e220e1] code: изменен тип переменных на double
1 file changed, 1 insertion(+), 1 deletion(-)

Переключилась на ветку main, синхронизировала ее с изменениями на сервере, просмотрела историю всех веток:

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating db458b4..fbe0f36
Fast-forward
main.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 3e220e1 (double) code: изменен тип переменных на double
| * fbe0f36 (HEAD -> main, origin/main) code: добавлен вывод минимума
|/
* db458b4 code: добавлен вывод максимума
* 2c30e66 code: добавлен вывод частного двух чисел
* bf9c01e code: добавлен вывод произведения двух чисел
* eb72fb4 git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

Видно, что после коммита с печатью максимума происходит разветвление, в коммите Алисы в скобках указана ветка double.
После этого слила double в main (т.к. в текстовом редакторе оставила пустое сообщение, отдельной командой закоммитила слияние веток).
Затем отправила все изменения на сервер и еще раз просмотрела историю веток.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git merge double
Auto-merging main.cpp
error: Empty commit message.
Not committing merge; use 'git commit' to complete the merge.

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main|MERGING)
$ git commit
[main 01aedfb] git: ветка double слита в main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 803 bytes | 803.00 KiB/s, done.
Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git
fbe0f36..01aedfb main -> main

ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 01aedfb (HEAD -> main, origin/main) git: ветка double слита в main
|\
| * 3e220e1 (double) code: изменен тип переменных на double
* | fbe0f36 code: добавлен вывод минимума
|/
* db458b4 code: добавлен вывод максимума
* 2c30e66 code: добавлен вывод частного двух чисел
* bf9c01e code: добавлен вывод произведения двух чисел
* eb72fb4 git: создан файл для игнорирования файлов, производных от кода
* 2b81c3f code: добавлен вывод разности двух чисел
* a610fc4 code: добавлен вывод суммы двух чисел
* 4bdf8cd code: добавлен ввод двух чисел
* d275a06 build: добавлен файл проекта
* 2ff127d code: заготовка программы

Коммиты fbe0f36 и 3e220e1 находятся на разных ветках (main и double соответственно).
Последний коммит является результатом слияния этих веток