From 0e9de902779d380c4607f069ad30538eda9b50c6 Mon Sep 17 00:00:00 2001 From: "Alice (TroyanovDS)" Date: Mon, 27 Mar 2023 09:39:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=82=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.txt | 765 ++++++++++++++++++++++++++++++++++++++++++++++++++++ project.cbp | 34 +++ 2 files changed, 799 insertions(+) create mode 100644 README.txt create mode 100644 project.cbp diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..e8a1e7d --- /dev/null +++ b/README.txt @@ -0,0 +1,765 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Троянов Д.С. +Группа: А-01-22 +Проверил: + +Примечание: работа выполнялась на Windows. + +1) Создал на рабочем столе каталог lab02.02 и запустил в нем Git Bash, приглашение: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 +$ + +2) Просмотрел файлы в рабочем каталоге можно командой "ls" - пусто: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 +$ ls + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 +$ + +3) Создал каталоги Алисы и Боба, создал каталог "project", +изучил команду "cd" в процессе: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 +$ mkdir alice + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 +$ mkdir bob + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 +$ cd alice + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice +$ mkdir project + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice +$ cd project + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project +$ cd .. + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice +$ cd project + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project +$ + +4) Инициализировал репозитарий, изменил имя ветки и через команду ls -A увидел его наличие: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project +$ git init +Initialized empty Git repository in C:/Users/Даниил/Desktop/lab02.02/alice/project/ +.git/ + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (master) +$ ls -A +.git/ + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (master) +$ git branch -m master main + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ + +5) Настроил репозитарий, чтобы коммиты были от моего имени: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git config user.name 'Alice (TroyanovDS)' + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git config user.email 'TroyanovDS@mpei.ru' + +6) Запустил CodeBlocks и создал проект в репозитарии Алисы: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git status +On branch main + +No commits yet (нет файлов для коммита) + +Untracked files: (В рабочей копии замечен файл, но Git его не отслеживает.) + (use "git add ..." to include in what will be committed) + main.cpp + main.exe + main.o + project.cbp + project.layout + +nothing added to commit but untracked files present (use "git add" to track) + +7) Заношу файл main.cpp под Git + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git status +On branch main + +No commits yet //отсутсвуют коммиты + +Changes to be committed: //изменения, которые должны быть закоммичены + (use "git rm --cached ..." to unstage) + new file: main.cpp (Git начал отслеживать файл) + +Untracked files: + (use "git add ..." to include in what will be committed) + main.exe + main.o + project.cbp + project.layout //Неотслеживаемые файлы + + + +8) Закомитил файл main.cpp и короткое сообщение (в одинарных или двойных ковычках): + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) 36b4362 //хэш коммита] code: заготовка программы + 1 file changed, 17 insertions(+) //Сводная статистика изменений + create mode 100644 main.cpp + +9) Добавил файл project.cbp в индекс, закомител его с комментарием: (Замечание: Во время выполнения задания первая моя попытка привела к вылету репозитария и все полетело, поэтому я начал заново все делать и забыл закоммитить файл project.cbp. В отчете я предоставил коммит этого файла при первой попытке выполнения задания. Прошу прощения за предоставленные неудобства) + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the n +ext time Git touches it + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main 216d951] build: добавлен файл проекта + 1 file changed, 31 insertions(+) + create mode 100644 project.cbp + +10) Использование команды $ git status после изменения файла main.cpp: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git status +On branch 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 //файл, который модифицирован + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + main.exe + main.o + obj/ + project.layout //Неотслеживаемые файлы + +no changes added to commit (use "git add" and/or "git commit -a") + +При сравнении случаев, когда добавлялся новый файл, и когда изменился существующий, можно заметить, что +в случае, когда файл был изменен после добавления в индекс, изменения необходимо закомитить отдельно. + +11) 1 способ закомитить изменения: + +Выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -m "code: code: Ввод переменных" +[main 50bff83] code: code: Ввод переменных + 1 file changed, 1 insertion(+), 1 deletion(-) + +12) 2 способ закомитить изменения: + +Добавить в индекс все изменения, затем сделать коммит: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git add -u + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -m "code: Вывод суммы" +[main 974994b] code: Вывод суммы + 1 file changed, 1 insertion(+), 1 deletion(-) + +13) 3 способ закомитить изенения: + +Добавить все изменения в индекс и сделать коммит в один шаг: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -a -m "code: Вывод разницы и суммы" +[main 7835a20] code: Вывод разницы и суммы + 1 file changed, 2 insertions(+), 1 deletion(-) + +Удобен когда коммит меняет уже существующий файл. + +14) Игнорирование файлов: + +Создаем файл в codeblocks с подпись /bin, /obj и /project.layout в разных строках + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git status +On branch 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: project.cbp + +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + main.o + + +no changes added to commit (use "git add" and/or "git commit -a") + +Как можно заметить, бинарный файлы bin, obj и project.layout пропали. + +Закомитим файл игнорирования: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git add .gitignore + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -m "git: "файл игнорирования" +[main 8f9bb60] git: файл игнорирования + Date: Mon Mar 13 10:57:03 2023 +0300 + 1 file changed, 2 insertions(+) + create mode 100644 .gitignore + +15) Просмотрел коммиты репозитария: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --stat +commit 8f9bb60ac01d4739d072e22a8e6870aa6302d714 (HEAD -> main) +Author: Alice (TroyanovDS) +Date: Sun Mar 19 16:46:41 2023 +0300 + + git: Файл игнорирования + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b +Author: Alice (TroyanovDS) +Date: Sun Mar 19 16:37:15 2023 +0300 + + code: Вывод разницы и суммы + + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 974994b8ee2887372bb22923deff0bf490304589 (хеш коммита) +Author: Alice (TroyanovDS) (автор создания) +Date: Sun Mar 19 16:35:58 2023 +0300 (дата создания) + + code: Вывод суммы + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --oneline --decorate +8f9bb60(HEAD -> main) git: файл игнорирования +7835a20 code: Вывод разницы и суммы +974994b code: Вывод суммы +50bff83 code: Ввод переменных +36b4362 code: заготовка программы + + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 8f9bb60 (HEAD -> main) git: Файл игнорирования +* 7835a20 code: Вывод разницы и суммы +* 974994b code: Вывод суммы +* 50bff83 code: Ввод переменных +* 36b4362 code: заготовка программы + +Поиск коммита, затрагивающий project.cbp: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log -- project.cbp +commit 216d951de10e0fe0f8ceb783c979a3ff5cf5b889 +Author: Alice (TroyanovDS) +Date: Sat Mar 11 21:39:43 2023 +0300 + + build: добавлен файл проекта + +Поиск коммита, название которого имеет тему "build:" : + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --grep "build: " +commit 216d951de10e0fe0f8ceb783c979a3ff5cf5b889 +Author: Alice (TroyanovDS) +Date: Sat Mar 11 21:39:43 2023 +0300 + + build: добавлен файл проекта + +16) Просмотр журнала: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git show HEAD +commit 8f9bb60ac01d4739d072e22a8e6870aa6302d714 +Author: Alice (TroyanovDS) +Date: Sun Mar 19 16:46:41 2023 +0300 + + git: Файл игнорирования + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..bdcd1e7 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/project.layout +\ No newline at end of file + + +17) Просмотр коммитов (предпоследнего коммита): + +1. Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git show HEAD~1 +commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b +Author: Alice (TroyanovDS) +Date: Sun Mar 19 16:37:15 2023 +0300 + + code: Вывод разницы и суммы + +diff --git a/main.cpp b/main.cpp +index 690f74f..0007b54 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,5 @@ int main() + int a, b; + cin >> a >> b; + +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + } + + +2. Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git show main~1 +commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b +Author: Alice (TroyanovDS) +Date: Sun Mar 19 16:37:15 2023 +0300 + + code: Вывод разницы и суммы + +diff --git a/main.cpp b/main.cpp +index 690f74f..0007b54 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,5 @@ int main() + int a, b; + cin >> a >> b; + +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + } + +3. Просмотр предпоследнего коммита через указание его хэша + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git show 7835a20 +commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b +Author: Alice (TroyanovDS) +Date: Sun Mar 19 16:37:15 2023 +0300 + + code: Вывод разницы и суммы + +diff --git a/main.cpp b/main.cpp +index 690f74f..0007b54 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,5 @@ int main() + int a, b; + cin >> a >> b; + +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + } + +18) Просмотр изменений: + +Просмотрим изменения рабочей копии: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/.gitignore b/.gitignore +deleted file mode 100644 +index bdcd1e7..0000000 +--- a/.gitignore ++++ /dev/null +@@ -1,3 +0,0 @@ +-/bin (отсутствие строчки) +-/obj (отсутствие строчки) +-/project.layout (отсутствие строчки) +\ No newline at end of file +diff --git a/main.cpp b/main.cpp +index 0afddc3..0007b54 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,5 @@ int main() + int a, b; + cin >> a >> b; + +- cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A*B (отсутствие строчки) += " << a*b << '\n'; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; (добавление строчки) + } + + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git diff HEAD~2 +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..bdcd1e7 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/project.layout +\ No newline at end of file +diff --git a/main.cpp b/main.cpp +index 690f74f..0007b54 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,5 @@ int main() + int a, b; + cin >> a >> b; + +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + } + + +Просмотр разницы изменений двух комитов + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git diff 36b4362 7835a20 +diff --git a/main.cpp b/main.cpp +index b4392ec..0007b54 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,9 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; +- return 0; ++ cout << "Enter A and B: "; ++ int a, b; ++ cin >> a >> b; ++ ++ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + } + +19) Откат изменений + +Во-первых, закомитил изменения рабочей копии (вывод произведения) + +Далее делаем откат изменений к предыдущей версии + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git reset --hard HEAD~1 (HEAD~1 - коммит к которому откатывают изменения) +HEAD is now at 8f9bb60 git: файл игнорирования + +или добавим комментарий над main() и откатим этот файл к состоянию в последнем коммите + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + +20) Создание пары ключей для доступа к серверу + +ssh-keygen + +Запустим агент, который работает в фоне и предоставляет ключи другим программам, в том числе git: + +eval $(ssh-agent -s) + + +Далее скопировать открытый ключ при помощи команды cat ~/.ssh/id_rsa.pub и добавить в список открытых ключей своей учетной записи. + +21)Создаем репозитарий под названием cs-lab02. + +Далее клонируем проект в каталог Bob: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob +$ git clone git@uit.mpei.ru:TroyanovDS/cs-lab02.git project + +Далее переходим в каталог проекта (project): + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob +$ cd project + +После настраиваем git конфиг как с Alice: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git config user.name 'Bob (TroyanovDS)' + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git config user.email 'TroyanovDS@mpei.ru' + +22)Совместная работа над проектом без конфликтов правок: + +«На машине Боба» добавляем в программу печать произведения чисел и делаем коммит: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git commit -m "code: Вывод произведения" +[main 45cd4c1] code: Вывод произведения + 1 file changed, 1 insertion(+), 1 deletion(-) + +Отправляем коммит на сервер: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git push + +«На машине Алисы» выполнить загрузку изменений: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git fetch + +Просмотрим историю всех веток: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 45cd4c1 (origin/main) code: Вывод произведения +* 8f9bb60 (HEAD -> main) git: Файл игнорирования +* 7835a20 code: Вывод разницы и суммы +* 974994b code: Вывод суммы +* 50bff83 code: Ввод переменных +* 36b4362 code: заготовка программы + +Как можно видеть, ветка main отстает на один коммит от ветки origin/main. Продвинем ветку main к скачанной версии: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git pull --ff-only +Updating 8f9bb60..45cd4c1 +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + + +23)Разрешение конфликтов при совместной работе + +Дополним у Alice вывод максимума, у Bob - вывод минимума, попробуем сделать коммит и отправить его на сервер: + +Для Alice: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git commit -m "code: Вывод максимума" +[main 4384564] code: Вывод максимума + 1 file changed, 9 insertions(+) + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 8 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 398 bytes | 398.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:TroyanovDS/cs-lab02.git + a41a855..4384564 main -> main + +Для Bob: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git commit -m "code: Вывод минимума" +[main 112ed02] code: Вывод минимума + 1 file changed, 9 insertions(+) + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/Даниил/.ssh/id_rsa': +To uit.mpei.ru:TroyanovDS/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'uit.mpei.ru:TroyanovDS/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. + +Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите. + +Загрузим коммит из удаленного хранилища и после отобразим историю всех веток: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git pull --ff-only + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 112ed02 (HEAD -> main) code: Вывод минимума +| * 4384564 (origin/main, origin/HEAD) code: Вывод максимума +|/ +* a41a855 code: Вывод деления +* 45cd4c1 code: Вывод произведения +* 8f9bb60 git: Файл игнорирования +* 7835a20 code: Вывод разницы и суммы +* 974994b code: Вывод суммы +* 50bff83 code: Ввод переменных +* 36b4362 code: заготовка программы + +Можно видеть, что ветка main локального репозитария разошлась с веткой origin/main, то есть с веткой main на сервере. + +Переместим коммит Bobа поверх коммита Алисы, то есть поверх origin/main: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 112ed02... 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 112ed02... code: Вывод минимума + +Команда завершается с ошибкой, сообщающей о конфликте в main.cpp. + +Проверим статус репозитария: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git status +On branch main +Your branch is ahead of 'origin/main' by 1 commit. //Ваша ветвь опережает 'origin/main' на 1 коммит. + (use "git push" to publish your local commits) + +Untracked files: //Неотслеживаемые файлы + (use "git add ..." to include in what will be committed) + main.exe + main.o + +nothing added to commit but untracked files present (use "git add" to track) + +Теперь разрешим конфликт в CodeBlocks и последобавляем файл в индекс, продолжаем прерванную операцию rebase: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git rebase --continue + +Проверяем, чтобы история хранилища была в надлежащем виде: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) +$ git log --oneline --decorate --all --graph +* ef95f84 (HEAD -> main, origin/main, origin/HEAD) code: Вывод минимума +* 4384564 code: Вывод максимума +* a41a855 code: Вывод деления +* 45cd4c1 code: Вывод произведения +* 8f9bb60 git: Файл игнорирования +* 7835a20 code: Вывод разницы и суммы +* 974994b code: Вывод суммы +* 50bff83 code: Ввод переменных +* 36b4362 code: заготовка программы + +24) Использование веток + +Создадим ветку double: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git branch double + +Переключимся на нее: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +Заменим тип переменных а и b на double и сделаем коммит: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double) +$ git add main.cpp + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double) +$ git commit -m "code: Изменение типа на double" +[double b279aed] code: Изменение типа на double + 1 file changed, 1 insertion(+), 1 deletion(-) + +Переключимся на ветку main: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + + +Синхронизируем ветку main «на машине Алисы» с сервером. + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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), 347 bytes | 11.00 KiB/s, done. +From uit.mpei.ru:TroyanovDS/cs-lab02 + 4384564..ef95f84 main -> origin/main + +Продвинем ветку main к скачанной версии: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git pull --ff-only +Updating 4384564..ef95f84 +Fast-forward + main.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Просмотрим историю всех веток. + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --oneline --decorate --all --graph +* b279aed (double) code: Изменение типа на double +| * ef95f84 (HEAD -> main, origin/main) code: Вывод минимума +|/ +* 4384564 code: Вывод максимума +* a41a855 code: Вывод деления +* 45cd4c1 code: Вывод произведения +* 8f9bb60 git: Файл игнорирования +* 7835a20 code: Вывод разницы и суммы +* 974994b code: Вывод суммы +* 50bff83 code: Ввод переменных +* 36b4362 code: заготовка программы + +Сольем ветки double и main: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git merge double +Auto-merging main.cpp +Merge made by the 'ort' strategy. + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Просмотрим историю всех веток репозитария: + +Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 91e8d65 (HEAD -> main) Merge branch 'double' +|\ +| * b279aed (double) code: Изменение типа на double +* | ef95f84 (origin/main) code: Вывод минимума +|/ +* 4384564 code: Вывод максимума +* a41a855 code: Вывод деления +* 45cd4c1 code: Вывод произведения +* 8f9bb60 git: Файл игнорирования +* 7835a20 code: Вывод разницы и суммы +* 974994b code: Вывод суммы +* 50bff83 code: Ввод переменных +* 36b4362 code: заготовка программы + +В результате слияния образуется специальный новый коммит (merge commit). \ No newline at end of file diff --git a/project.cbp b/project.cbp new file mode 100644 index 0000000..42f78e7 --- /dev/null +++ b/project.cbp @@ -0,0 +1,34 @@ + + + + + +