Работа с Git
git
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
Артем Рогозин 44c07da123
Upload files to ''
1 год назад
.gitignore build: добавлен .gitignore 1 год назад
main.cpp code: изменен тип на double 1 год назад
project.cbp build: добавлено игнорирование файлов 1 год назад
readme.md Upload files to '' 1 год назад

readme.md

Лабораторная работа №2

Применение системы контроля версий Git.

1. Цель работы

Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними. Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также типовой web-интерфейс Gitea.

2. Создание директорий

Создадим каталог /Project/lab02 для данной ЛР и запустим в нем Git Bash.

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02

Также создаем каталоги /Project/lab02/alice и /Project/lab02/bob

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
$ mkdir alice
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
$ mkdir bob

Проверяем только что созданные дирректории:

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
$ ls
alice/  bob/

Создадим директорию alice/project

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
$ mkdir project

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
$ ls
project/

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
$ cd project

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project
$ cd ..

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
$ cd project

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project
$

Инициализация репозитория и настройка Git.

Инициализируем репозиторий в текущем каталоге project:

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Артем/Project/lab02/alice/project/.git/

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
$

К приглашению командной строки добавилось (master): имя текущий ветви Git.
Перед началом работы следует выполнить некоторые настройки:

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
$ git config --global user.name "rogozinay"

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
$ git config --global user.email "rogozinay@mpei.ru"

Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
$ git config --global core.autocrlf true

Укажем имя, которым будут подписаны коммиты. Укажем электронную почту, которая будет в описании коммитера. Зададим преобразование окончаний при котором Git будет всегда преобразовывать окончания строк в LF при извлечении. Этот вариант следует использовать для файлов, которые должны поддерживать окончания LF.

Занесение файлов под контроль версий

Запустим CodeBlocks и создадим проект в репозитории Алисы:

Project title: project
Folder to create project in: C:\Users\Артем\Project\lab02\alice\project
Project filename: project.cbp
Resulting filename: C:\Users\user\Desktop\lab02\alice\project\project.cbp

Соберите проект.

На этом этапе имеем следующую структуру файлов и каталогов:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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)

Вывод демонстрирует нам адрес репозитория, имя ветки, список файлов, наличие коммитов и статус отслеживания файлов.
Добавим файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит. Так как этот файл ранее не отслеживался Git, то с этого момента Git начнет его отслеживать.

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git add main.cpp

Просмотрим состояние рабочей копии и отметим изменения:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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

Из вывода видно, что Git начал отслеживать файл main.cpp, при этом все остальные файлы не отслеживаются.

Выполним коммит с файлом main.cpp и коротким сообщением:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 28681bd] code: заготовка программы
 1 file changed, 9 insertions(+)
 create mode 100644 main.cpp

Теперь мы отправили изменения в хранилище и Git показывает нам что в рабочей копии на данный момент больше никаких изменений нет, но есть не отслеживаемые файлы, изменения в которых не отслеживаются. Также есть подсказка что их можно добавить с помощью команды (use "git add" to track).

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bin/
        obj/
        project.cbp

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

Составление сообщений к коммитам

Важно, чтобы описания коммитов были информативными в будущем по ним можно быстро читать историю проекта, искать коммиты по ключевым словам. Заголовок (первая строка) должен быть коротким (желательно до 50 символов) и описывать суть изменений, потому что только он показывается в списке коммитов. Часто в заголовок включают тему (к какой части проекта относится коммит) или номер задачи в системе отслеживания ошибок.
Добавим файл project.cbp в индекс и сделаем коммит с ним:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/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-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   project.cbp

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bin/
        obj/

Посмотрим историю коммитов, где новые коммиты идут вначале, и увидим внесенный нами комментарий.

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --stat
commit 6d51e028f640d5cd11264c6be9f636e75b575d33 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:40:52 2023 +0300

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

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

commit 28681bd19eb9eb0dff028537c018599fcb047e3e
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:22:52 2023 +0300

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

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

Создание коммитов с изменениями

Откроем Code Blocks и заменим тело функции main() на ввод двух чисел:

#include <iostream>

using namespace std;

int main()
{
    cout << "Enter A and B: " << endl;
    int a, b;
    cin >> a >> b;


    return 0;
}

Теперь посмотрим изменения:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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/
        project.layout

no changes added to commit (use "git add" and/or "git commit -a")

Видим в выводе Git показывает изменения в ветке master, файлы которые были изменены, а также неотслеживаемые файлы в проекте и подсказки о том как занести файлы в индекс, откатить изменения.
Выберем файлы, изменения которых должны войти в коммит, затем сделаем коммит и проверим состояние:
Code Blocks:

int main()
{
    cout << "Enter A and B: " << endl;
    int a, b;
    cin >> a >> b;
    cout << "A + B = " << a + b << '\n'
    return 0;
}
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git add main.cpp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git commit -m "build: добавлен вывод суммы a и b"
[master 96dfa86] build: добавлен вывод суммы a и b
 1 file changed, 5 insertions(+), 1 deletion(-)

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --stat
commit 96dfa86be9c4561afd4c9b6026fda862aee0a3b5 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 17:21:23 2023 +0300

    build: добавлен вывод суммы a и b

 main.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit 6d51e028f640d5cd11264c6be9f636e75b575d33
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:40:52 2023 +0300

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

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

commit 28681bd19eb9eb0dff028537c018599fcb047e3e
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:22:52 2023 +0300

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

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

Добавим вывод разности:

int main()
{
    cout << "Enter A and B: " << endl;
    int a, b;
    cin >> a >> b;
    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
   
    return 0;
}

Добавим в индекс все изменения, затем сделаем коммит:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git add -u

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git commit -m "build: добавлен вывод разности a и b"
[master 22be7f3] build: добавлен вывод разности a и b
 1 file changed, 5 insertions(+), 3 deletions(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --stat
commit 22be7f39c4e83fdfe02e0c75c8d4b20ec629a5b8 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 17:54:14 2023 +0300

    build: добавлен вывод разности a и b

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bin/
        obj/
        project.layout

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

Игнорирование файлов

Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New… → Empty) и запишем в него строку:

/bin

Косая черта в начале означает путь от корня репозитория (каталога project), без нее игнорировался бы файл или каталог bin в любой подпапке. Сохраним файл в корне репозиторий под именем .gitignore, именно с точкой в начале.

Каждое правило игнорирования пишется на отдельной строке .gitignore.

Выполнив git status, можно видеть, что каталог bin не отображается.

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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)
        .gitignore
        obj/
        project.depend
        project.layout

no changes added to commit (use "git add" and/or "git commit -a")

Добавим все изменения в индекс, сделаем коммит. Также добавим к игнорируемым файлам /obj и .layout

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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
        modified:   project.cbp

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        project.depend

no changes added to commit (use "git add" and/or "git commit -a")

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git commit -a -m "build: добавлено игнорирование файлов"
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
[master 1e31a4c] build: добавлено игнорирование файлов
 2 files changed, 6 insertions(+), 5 deletions(-)
 
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
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)

Результат виден выше. Git перестал отображать эти файлы и папки. Создадим коммит с .gitignore

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git add .gitignore

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git commit -m "build: добавлен .gitignore"
[master 9a14516] build: добавлен .gitignore
 1 file changed, 3 insertions(+)
 create mode 100644 .gitignore

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate
9a14516 (HEAD -> master) build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта
28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate
9a14516 (HEAD -> master) build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта
28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* 9a14516 (HEAD -> master) build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Работа с журналом репозитария

Просмотр истории репозитория в разном виде:

$ git log --stat
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 20:52:02 2023 +0300

    build: добавлен .gitignore

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

commit 1e31a4c532817d311cf757a9672c5d2d28899699
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 19:36:45 2023 +0300

commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 20:52:02 2023 +0300

    build: добавлен .gitignore

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

commit 1e31a4c532817d311cf757a9672c5d2d28899699
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 19:36:45 2023 +0300

    build: добавлено игнорирование файлов

 main.cpp    | 8 +++-----
 project.cbp | 3 +++
 2 files changed, 6 insertions(+), 5 deletions(-)

commit 22be7f39c4e83fdfe02e0c75c8d4b20ec629a5b8
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 17:54:14 2023 +0300

    build: добавлен вывод разности a и b

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

commit 96dfa86be9c4561afd4c9b6026fda862aee0a3b5
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 17:21:23 2023 +0300

    build: добавлен вывод суммы a и b

 main.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit 6d51e028f640d5cd11264c6be9f636e75b575d33
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:40:52 2023 +0300

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

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

commit 28681bd19eb9eb0dff028537c018599fcb047e3e
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:22:52 2023 +0300

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

 main.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)
 
 Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate
9a14516 (HEAD -> master) build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта
28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* 9a14516 (HEAD -> master) build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Поиск коммитов

Коммиты можно фильтровать по разным признакам:

git log -- main.cpp показывает затрагивающие main.cpp;
git log --grep "code:" показывает коммиты с code: в сообщении.
Найдем сначала коммиты по теме build, затем коммиты, затрагивающие project.cbp:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate --grep "build:"
9a14516 (HEAD -> master) build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log -- project.cbp
commit 1e31a4c532817d311cf757a9672c5d2d28899699
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 19:36:45 2023 +0300

    build: добавлено игнорирование файлов

commit 6d51e028f640d5cd11264c6be9f636e75b575d33
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sat Nov 18 18:40:52 2023 +0300

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

Просмотр коммитов

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git show HEAD
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 20:52:02 2023 +0300

    build: добавлен .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9d83ebf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+*.layout

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git show main
fatal: ambiguous argument 'main': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git show master
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 20:52:02 2023 +0300

    build: добавлен .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9d83ebf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+*.layout

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git show 22be7f3
commit 22be7f39c4e83fdfe02e0c75c8d4b20ec629a5b8
Author: rogozinay <rogozinay@mpei.ru>
Date:   Sun Nov 19 17:54:14 2023 +0300

    build: добавлен вывод разности a и b

diff --git a/main.cpp b/main.cpp
index 1008718..4e76e8a 100644
--- a/main.cpp
+++ b/main.cpp
@@ -5,9 +5,11 @@ using namespace std;
 int main()
 {
     cout << "Enter A and B: " << endl;
-    int a, b;
-    cin >> a >> b;
-
+    int a, b, c; d;
+    c = a + b;
+    d = a - b;
+    count << c;
+    count << d;

     return 0;
 }

Добавим вывод произведения чисел:

Code Blocks:

int main()
{
    cout << "Enter A and B: " << endl;
    int a, b;
    cin >> a >> b;
    cout << "A + B = " << a + b << '\n'
        << "A - B = " << a - b << '\n'
        << "A * B = " << a * b << '\n';

    return 0;
}

Просмотрим изменения. Вывод содержит отметки о том что изменено, какие строки удалены, что добавлено.

$ git diff
diff --git a/main.cpp b/main.cpp
index cc8c622..5302c5e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,7 +7,9 @@ int main()
     cout << "Enter A and B: " << endl;
     int a, b;
     cin >> a >> b;
-    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+    cout << "A + B = " << a + b << '\n'
+        << "A - B = " << a - b << '\n'
+        << "A * B = " << a * b << '\n';

     return 0;
 }

Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности.

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git diff HEAD~3 HEAD
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 1008718..cc8c622 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,7 +7,7 @@ int main()
     cout << "Enter A and B: " << endl;
     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
index 99bb702..f5f4083 100644
--- a/project.cbp
+++ b/project.cbp
@@ -32,6 +32,9 @@
                        <Add option="-Wall" />
                        <Add option="-fexceptions" />
                </Compiler>
+               <Unit filename=".gitignore">
+                       <Option target="&lt;{~None~}&gt;" />
+               </Unit>
                <Unit filename="main.cpp" />
                <Extensions>
                        <lib_finder disable_auto="1" />

Откат изменений

Сделаем коммит последнего изменения. Мы добавили вывод произведения a и b:

$ 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)
        project.depend

no changes added to commit (use "git add" and/or "git commit -a")

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git commit -a -m "build: добавлен вывд произведения a и b"
[master e8230b0] build: добавлен вывд произведения a и b
 1 file changed, 3 insertions(+), 1 deletion(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate --grep "build:"
e8230b0 (HEAD -> master) build: добавлен вывд произведения a и b
9a14516 build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта

Проверяем, все добавлено.

Откат изменений

Выполним откат изменений к последнему коммиту перед выводом произведения чисел:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate --grep "build:"
e8230b0 (HEAD -> master) build: добавлен вывд произведения a и b
9a14516 build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git reset --hard HEAD~1
HEAD is now at 9a14516 build: добавлен .gitignore

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git log --oneline --decorate --grep "build:"
9a14516 (HEAD -> master) build: добавлен .gitignore
1e31a4c build: добавлено игнорирование файлов
22be7f3 build: добавлен вывод разности a и b
96dfa86 build: добавлен вывод суммы a и b
6d51e02 build: добавлен файл проекта

Другой способ отката

Добавим над функцией main() комментарий:

Code Blocks:

// you may type whatever you want<br>

Уберем изменения в main.cpp другим способом — откатив этот файл к состоянию в последнем коммите (HEAD):

git checkout HEAD -- main.cpp

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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)
        project.depend

no changes added to commit (use "git add" and/or "git commit -a")

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git checkout HEAD -- main.cpp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

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

Отправляем на сервер через hhtp://

$ git remote set-url origin http://uit.mpei.ru/git/rogozinay/cs-lab02.git

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git push -u origin main
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Delta compression using up to 4 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (19/19), 2.49 KiB | 636.00 KiB/s, done.
Total 19 (delta 2), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/rogozinay/cs-lab02.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

Получение проекта с сервера

Выполним клонирование проекта в директорию Боба:

$ git clone http://uit.mpei.ru/git/rogozinay/cs-lab02.git ~/project/lab02/bob/project
Cloning into 'C:/Users/Артем/project/lab02/bob/project'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 19 (delta 2), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (19/19), done.
Resolving deltas: 100% (2/2), done.

Настроим Git на машине Боба:

$ git config --global user.name "rogozinay"

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git config --global user.email "rogozinay@mpei.ru"

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git config --global core.autocrlf true

Сделаем изменения, добавим вывод умножения на машине Боба, проверим изменения, внесем в индекс, сделаем коммит и отправим все это на сервер:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ ls
main.cpp  project.cbp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git status
On branch main
Your branch is up to date with 'origin/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

no changes added to commit (use "git add" and/or "git commit -a")

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git add main.cpp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git add project.cbp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   main.cpp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git commit -m 'code: добавлен вывод произведения'
[main 779ce84] code: добавлен вывод произведения
 1 file changed, 2 insertions(+), 1 deletion(-)
 
 Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git log --oneline --decorate --stat
779ce84 (HEAD -> main) code: добавлен вывод произведения
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
9a14516 (origin/main, origin/HEAD) build: добавлен .gitignore
 .gitignore | 3 +++
 1 file changed, 3 insertions(+)
1e31a4c build: добавлено игнорирование файлов
 main.cpp    | 8 +++-----
 project.cbp | 3 +++
 2 files changed, 6 insertions(+), 5 deletions(-)
22be7f3 build: добавлен вывод разности a и b
 main.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
96dfa86 build: добавлен вывод суммы a и b
 main.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
6d51e02 build: добавлен файл проекта
 project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
28681bd code: заготовка программы
 main.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)
 
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 408 bytes | 408.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 http://uit.mpei.ru/git/rogozinay/cs-lab02.git
   9a14516..779ce84  main -> main

На машине Алисы загрузим изменения, проверим:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 388 bytes | 48.00 KiB/s, done.
From http://uit.mpei.ru/git/rogozinay/cs-lab02
   9a14516..779ce84  main       -> origin/main

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 779ce84 (origin/main) code: добавлен вывод произведения
* 9a14516 (HEAD -> main) build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Как можно видеть, ветка main отстает на один коммит от ветки origin/main (версии ветки main из удаленного репозитария под названием origin, то есть на сервере).

Передвинем ветку main к скачанной версии:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git pull --ff-only
error: Your local changes to the following files would be overwritten by merge:
        main.cpp
Please commit your changes or stash them before you merge.
Aborting
Updating 9a14516..779ce84

Получили ошибку так как в Code Blocks сделаны случайные изменения на машине Алисы. Git предупреждает нас об этом и подсказывает что нужно либо сделать коммит изменений, либо откат. Выполним откат ненужных изменений для файла main.cpp и повторим команду:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 779ce84 (origin/main) code: добавлен вывод произведения
* 9a14516 (HEAD -> main) build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git checkout -- main.cpp

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git status
On branch main
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git pull --ff-only
Updating 9a14516..779ce84
Fast-forward
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Выполнено, проверяем ветки:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 779ce84 (HEAD -> main, origin/main) code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Делаем тоже самое наоборот:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git commit -a -m 'code: добавлен вывод действий с делением'
[main ccce871] code: добавлен вывод действий с делением
 1 file changed, 4 insertions(+), 2 deletions(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git log --oneline --decorate --stat
ccce871 (HEAD -> main) code: добавлен вывод действий с делением
 main.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
779ce84 (origin/main, origin/HEAD) code: добавлен вывод произведения
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
9a14516 build: добавлен .gitignore
 .gitignore | 3 +++
 1 file changed, 3 insertions(+)
1e31a4c build: добавлено игнорирование файлов
 main.cpp    | 8 +++-----
 project.cbp | 3 +++
 2 files changed, 6 insertions(+), 5 deletions(-)
22be7f3 build: добавлен вывод разности a и b
 main.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
96dfa86 build: добавлен вывод суммы a и b
 main.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
6d51e02 build: добавлен файл проекта
 project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
28681bd code: заготовка программы
 main.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 437 bytes | 437.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 http://uit.mpei.ru/git/rogozinay/cs-lab02.git
   779ce84..ccce871  main -> main

Далее на машине Алисы загружаем:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 417 bytes | 59.00 KiB/s, done.
From http://uit.mpei.ru/git/rogozinay/cs-lab02
   779ce84..ccce871  main       -> origin/main

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* ccce871 (origin/main) code: добавлен вывод действий с делением
* 779ce84 (HEAD -> main) code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git pull --ff-only
Updating 779ce84..ccce871
Fast-forward
 main.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* ccce871 (HEAD -> main, origin/main) code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Видим что все изменения были загружены, ветки перенесены.

Разрешение конфликтов правок при совместной работе

От имени Алисы добавим нахождения максимума из чисел, делаем коммит, отправляем на сервер:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git commit -a -m "code: добавление максимума из чисел"
[main 28c75ea] code: добавление максимума из чисел
 1 file changed, 2 insertions(+)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 28c75ea (HEAD -> main) code: добавление максимума из чисел
* ccce871 (origin/main) code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 435 bytes | 435.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 http://uit.mpei.ru/git/rogozinay/cs-lab02.git
   ccce871..28c75ea  main -> main

От имени Боба заходим, делаем коммит смотрим изменения:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
$ git commit -a -m 'code: добавлен вывод минимума'
[main 26ad6e7] code: добавлен вывод минимума
 1 file changed, 4 insertions(+), 4 deletions(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 418 bytes | 418.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 http://uit.mpei.ru/git/rogozinay/cs-lab02.git
   c50329e..26ad6e7  main -> main

Делаем коммит с выводом минимума от имени Алисы:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git commit -a -m "code: добавление максимума из чисел"
[main 5d15d1c] code: добавление максимума из чисел
 1 file changed, 1 insertion(+)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git push
To http://uit.mpei.ru/git/rogozinay/cs-lab02.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'http://uit.mpei.ru/git/rogozinay/cs-lab02.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Не удается сделать загрузку на сервер Можно видеть, что ветка main локального репозитария разошлась с веткой origin/main, то есть с веткой main на сервере. Алисе нужно переместить свой коммит поверх коммита Боба, то есть поверх origin/main:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git rebase origin/main
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 5d15d1c (HEAD -> main) code: добавление максимума из чисел
* 28c75ea (origin/main) code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b

Возникает конфликт:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 4edc7f7 (HEAD -> main) code: добавление максимума из чисел
* 5d15d1c code: добавление максимума из чисел
| * 26ad6e7 (origin/main) code: добавлен вывод минимума
| * c50329e code: добавлен вывод vминимума
|/
* 28c75ea code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git rebase origin/main
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 5d15d1c... 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 5d15d1c... code: добавление максимума из чисел

В итоге место конфликта отмечено прямо в коде Code Blocks:

<<<<<<< HEAD
        min(a, b);
=======
    max(a, b);
>>>>>>> 5d15d1c (code: добавление максимума из чисел)

Вывод истории имеет желаемый вид:
Sublime Text:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# interactive rebase in progress; onto 26ad6e7
# Last command done (1 command done):
#    pick 5d15d1c code: добавление максимума из чисел
# Next command to do (1 remaining command):
#    pick 4edc7f7 code: добавление максимума из чисел
# You are currently rebasing branch 'main' on '26ad6e7'.
#
# Changes to be committed:
#	modified:   main.cpp
#
# Untracked files:
#	project.depend
#

Git:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main|REBASE 1/2)
$ git rebase --continue
[detached HEAD a557bfe] code: добавление максимума из чисел
 1 file changed, 4 insertions(+)
dropping 4edc7f7de303dddf99d1c89a1c3c002d14b982df code: добавление максимума из чисел -- patch
contents already upstream
Successfully rebased and updated refs/heads/main.

Использование веток

Создадим новую ветку, переключимся на нее:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git branch double

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
$ git commit -a -m 'code: изменен тип на double'
On branch double
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.depend

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

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
$ git status
On branch double
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)
        project.depend

no changes added to commit (use "git add" and/or "git commit -a")

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
$ git commit -a -m 'code: изменен тип на double'
[double fe86d2f] code: изменен тип на double
 1 file changed, 1 insertion(+), 1 deletion(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
$ git log --oneline --decorate --all --graph
* fe86d2f (HEAD -> double) code: изменен тип на double
* 9d3e654 (origin/main, main) code: добавлен вывод минимума
* a557bfe code: добавление максимума из чисел
* 26ad6e7 code: добавлен вывод минимума
* c50329e code: добавлен вывод vминимума
* 28c75ea code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* fe86d2f (double) code: изменен тип на double
* 9d3e654 (HEAD -> main, origin/main) code: добавлен вывод минимума
* a557bfe code: добавление максимума из чисел
* 26ad6e7 code: добавлен вывод минимума
* c50329e code: добавлен вывод vминимума
* 28c75ea code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git fetch

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* fe86d2f (double) code: изменен тип на double
* 9d3e654 (HEAD -> main, origin/main) code: добавлен вывод минимума
* a557bfe code: добавление максимума из чисел
* 26ad6e7 code: добавлен вывод минимума
* c50329e code: добавлен вывод vминимума
* 28c75ea code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Загрузим изменения в ветку main посмотрим результат:

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git fetch

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* fe86d2f (double) code: изменен тип на double
* 9d3e654 (HEAD -> main, origin/main) code: добавлен вывод минимума
* a557bfe code: добавление максимума из чисел
* 26ad6e7 code: добавлен вывод минимума
* c50329e code: добавлен вывод vминимума
* 28c75ea code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git merge double
Updating 9d3e654..fe86d2f
Fast-forward
 main.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 373 bytes | 373.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 http://uit.mpei.ru/git/rogozinay/cs-lab02.git
   9d3e654..fe86d2f  main -> main

Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* fe86d2f (HEAD -> main, origin/main, double) code: изменен тип на double
* 9d3e654 code: добавлен вывод минимума
* a557bfe code: добавление максимума из чисел
* 26ad6e7 code: добавлен вывод минимума
* c50329e code: добавлен вывод vминимума
* 28c75ea code: добавление максимума из чисел
* ccce871 code: добавлен вывод действий с делением
* 779ce84 code: добавлен вывод произведения
* 9a14516 build: добавлен .gitignore
* 1e31a4c build: добавлено игнорирование файлов
* 22be7f3 build: добавлен вывод разности a и b
* 96dfa86 build: добавлен вывод суммы a и b
* 6d51e02 build: добавлен файл проекта
* 28681bd code: заготовка программы

Git показывает что все изменения из ветки double синхронизованы.