From 44c07da12397a9a0246500f851a533a9992eff50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D0=B5=D0=BC=20=D0=A0=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=D0=B7=D0=B8=D0=BD?= Date: Wed, 22 Nov 2023 18:53:51 +0000 Subject: [PATCH] Upload files to '' --- readme.md | 1436 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1436 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..c36c470 --- /dev/null +++ b/readme.md @@ -0,0 +1,1436 @@ +# Лабораторная работа №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 ..." 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 ..." to unstage) + new file: main.cpp + +Untracked files: + (use "git add ..." 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 ..." 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 ..." to unstage) + new file: project.cbp + +Untracked files: + (use "git add ..." 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 +Date: Sat Nov 18 18:40:52 2023 +0300 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 28681bd19eb9eb0dff028537c018599fcb047e3e +Author: rogozinay +Date: Sat Nov 18 18:22:52 2023 +0300 + + code: заготовка программы + + main.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) +``` +### Создание коммитов с изменениями +Откроем Code Blocks и заменим тело функции main() на ввод двух чисел: + +``` +#include + +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 ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." 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 +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 +Date: Sat Nov 18 18:40:52 2023 +0300 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 28681bd19eb9eb0dff028537c018599fcb047e3e +Author: rogozinay +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 +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 ..." 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 ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files:/ +++-------- + (use "git add ..." 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 ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + modified: project.cbp + +Untracked files: + (use "git add ..." 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 ..." 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 ..." 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: заготовка программы + +``` + +### Работа с журналом репозитария + +Просмотр истории репозитория в разном виде: + +```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master) +$ git log --stat +commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master) +Author: rogozinay +Date: Sun Nov 19 20:52:02 2023 +0300 + + build: добавлен .gitignore + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1e31a4c532817d311cf757a9672c5d2d28899699 +Author: rogozinay +Date: Sun Nov 19 19:36:45 2023 +0300 + +commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master) +Author: rogozinay +Date: Sun Nov 19 20:52:02 2023 +0300 + + build: добавлен .gitignore + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1e31a4c532817d311cf757a9672c5d2d28899699 +Author: rogozinay +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 +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 +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 +Date: Sat Nov 18 18:40:52 2023 +0300 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 28681bd19eb9eb0dff028537c018599fcb047e3e +Author: rogozinay +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 +Date: Sun Nov 19 19:36:45 2023 +0300 + + build: добавлено игнорирование файлов + +commit 6d51e028f640d5cd11264c6be9f636e75b575d33 +Author: rogozinay +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 +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 [...] -- [...]' + +Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master) +$ git show master +commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master) +Author: rogozinay +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 +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; +} +``` +Просмотрим изменения. Вывод содержит отметки о том что изменено, какие строки удалены, что добавлено. +```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master) +$ 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 @@ + + + ++ ++ + + + +``` +### Откат изменений +Сделаем коммит последнего изменения. Мы добавили вывод произведения a и b: +```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master) +$ git status +On branch master +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." 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 ..." 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
+``` +Уберем изменения в 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 ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." 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 ..." to include in what will be committed) + project.depend + +nothing added to commit but untracked files present (use "git add" to track) +``` +Отправляем на сервер через hhtp:// +```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main) +$ 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'. +``` +### Получение проекта с сервера +Выполним клонирование проекта в директорию Боба: +```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (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 на машине Боба: +```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main) +$ 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 ..." to update what will be committed) + (use "git restore ..." 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 ..." 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 ..." 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 ..." 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 ", 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 ..." 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 ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." 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` синхронизованы. \ No newline at end of file