# Лабораторная работа №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` синхронизованы.