From f13b3639cc98dc7963a11d3f8fc5ff28d76de2df Mon Sep 17 00:00:00 2001 From: "Bob (GalkinMK)" Date: Mon, 14 Apr 2025 14:54:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BA=D1=80=D0=B5=D0=BF?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- list.txt.txt | 1113 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1113 insertions(+) create mode 100644 list.txt.txt diff --git a/list.txt.txt b/list.txt.txt new file mode 100644 index 0000000..5da6efb --- /dev/null +++ b/list.txt.txt @@ -0,0 +1,1113 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Галкин М. К. +Группа: А-03-24 +Проверил: Козлюк Д. А. + +Примечание: работа выполнялась на Windows. + +1. Вход в терминал и создание структуры каталогов. + +Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ + +Просмотрел файлы в рабочем каталоге: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ ls + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ + +Создал каталоги Алисы и Боба, изучил команду "cd", создал каталог project в каталоге Алисы: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ mkdir alice + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ mkdir bob + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ cd bob + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob +$ cd .. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02 +$ cd alice + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice +$ cd project + +2. Инициализация репозитария и настройка Git. + +Инициализируем репозитарий в текущем каталоге (project): + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/user4/Desktop/lab02/alice/project/.git/ + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (master) +$ + +Поменяем имя ветки main: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (master) +$ git branch -m main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Посмотрим данные папки, где сделано git init: +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ ls -A +.git/ + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Настроим репозитарий Алисы, чтобы коммиты были от ее имени: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.name 'Alice (GalkinMK)' + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.email 'GalkinMK@mpei.ru' + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +3. Создание коммитов + +Запустим CodeBlocks и создадим проект в репозитарии Алисы. + +Имеем следующую структуру файлов и каталогов: + +lab02 +├── alice +│ └── project <--------- текущий рабочий каталог +│ ├── .git <--------- создан командой "git init" +│ ├── bin <--------- создан CodeBlocks при сборке +│ ├── obj <--------- (то же самое) +│ ├── main.cpp <-- код программы +│ └── project.cbp <-- файл проекта +└── bob + +Вернемся в Git Bash, просмотрим состояние рабочей копии: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main <------- ветка на которой находимся + +No commits yet <------- сообщается, что нет коммитов + +Untracked files: <------- git обнаружил файлы, но он их не отслеживает + (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) <---- ничего не было добавлено в область подготовленных файлов, но есть не отслеживаемые файлы. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Добавим файл main.cpp в индекс: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Посмотрим изменения: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/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 + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.cbp + + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Выполним коммит с файлом main.cpp: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) aacbacc] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Добавим файл project.cbp в индекс и сделаем коммит с ним: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main 2f7477c] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +4. Создание коммитов с изменениями. + +Заменим тело функции main() на ввод двух чисел. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/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 <------- файл main.cpp был изменен, но эти изменения еще не в области подготовленных файлов + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + +no changes added to commit (use "git add" and/or "git commit -a") + +Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Cпособ 1. Сначала выбрем файлы, изменения которых должны войти в коммит, затем сделаем коммит: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code; вывод двух чисел' +[main 190e4bf] code; вывод двух чисел + 1 file changed, 4 insertions(+), 2 deletions(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Добавим в программу вывод суммы a и b. + +Способ 2. Добавим в индекс все изменения, затем сделаем коммит. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add -u + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: вывод суммы' +[main 7e1a6b6] code: вывод суммы + 1 file changed, 1 insertion(+) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Добавим в программу вывод разности a и b. + +Способ 3. Добавим все изменения в индекс и сделаем коммит в один шаг. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m 'code: вывод разности' +[main a2812cc] code: вывод разности + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +5. Игнорирование файлов. + +Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: /bin. + +Выполнив git status, можно видеть, что каталог bin не отображается: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + +nothing added to commit but untracked files present (use "git add" to track) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Занесем в список игнорируемых каталоги bin и git и файлы *.layout: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + +nothing added to commit but untracked files present (use "git add" to track) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Создадим коммит с .gitignore: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add .gitignore + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m 'git: игнорирование' +[main eb56849] git: игнорирование + 1 file changed, 2 insertions(+) + create mode 100644 .gitignore + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +6. Просмотр истории. + +Пробуем команду git log: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log +commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main) +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:45:18 2025 +0300 + + git: игнорирование + +commit a2812cc067a457303cb7513962b4ddaf2137f6f9 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:42:52 2025 +0300 + + code: вывод разности + +commit 7e1a6b64366d9d5089fe2fdb5c79e174f8c7c43b +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:41:32 2025 +0300 + + code: вывод суммы + +commit 190e4bf98c1e6895a2e97f7464969d8c5f62a42e +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:40:20 2025 +0300 + + code; вывод двух чисел + +commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:38:34 2025 +0300 + + build: добавлен файл проекта + +commit aacbacc4af7c2cb7f57648a1dc668becc0c518ed +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:37:55 2025 +0300 + + code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Пробуем команду git log --stat: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --stat +commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main) <--- хэш коммита, HEAD указывает на main +Author: Alice (GalkinMK) <--- Автор +Date: Mon Mar 19 14:45:18 2025 +0300 <--- Дата + + + git: игнорирование <--- Сообщение коммита + + .gitignore | 2 ++ <--- Изменен в gitignore, добавлено 2 строчки + 1 file changed, 2 insertions(+) <--- Изменен один файл. + +commit a2812cc067a457303cb7513962b4ddaf2137f6f9 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:42:52 2025 +0300 + + code: вывод разности + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 7e1a6b64366d9d5089fe2fdb5c79e174f8c7c43b +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:41:32 2025 +0300 + + code: вывод суммы + + main.cpp | 1 + + 1 file changed, 1 insertion(+) + +commit 190e4bf98c1e6895a2e97f7464969d8c5f62a42e +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:40:20 2025 +0300 + + code; вывод двух чисел + + main.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:38:34 2025 +0300 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit aacbacc4af7c2cb7f57648a1dc668becc0c518ed +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:37:55 2025 +0300 + + code: заготовка программы + + main.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Пробуем команду git log --oneline --decorate: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate +eb56849 (HEAD -> main) git: игнорирование +a2812cc code: вывод разности +7e1a6b6 code: вывод суммы +190e4bf code; вывод двух чисел +2f7477c build: добавлен файл проекта +aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Пробуем команду git log --oneline --decorate --all --graph: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* eb56849 (HEAD -> main) git: игнорирование +* a2812cc code: вывод разности +* 7e1a6b6 code: вывод суммы +* 190e4bf code; вывод двух чисел +* 2f7477c build: добавлен файл проекта +* aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Коммиты по теме build: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --grep "build:" +commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:38:34 2025 +0300 + + build: добавлен файл проекта + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Коммиты затрагивающие project.cbp: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log -- project.cbp +commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:38:34 2025 +0300 + + build: добавлен файл проекта + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Посмотрим коммит тремя способами: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show HEAD +commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main) +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:45:18 2025 +0300 + + git: игнорирование + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..4c7473d +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,2 @@ ++/bin ++/obj + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show main +commit eb568497b89756165bf95582a5c687cc6a958502 (HEAD -> main) +Author: Alice (GalkinMK) +Date: Wed Mar 19 21:45:18 2025 +0300 + + git: игнорирование + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..4c7473d +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,2 @@ ++/bin ++/obj + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Посмотрим предпоследний коммит: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show a2812cc +commit a2812cc067a457303cb7513962b4ddaf2137f6f9 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:42:52 2025 +0300 + + code: вывод разности + +diff --git a/main.cpp b/main.cpp +index 1967dd8..984c3d6 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,6 +7,7 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + + } + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит. + +Используем команду git diff: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp <--- показывает, что сравниваются два файла +index 984c3d6..ef525e5 100644 <--- хэши версии файла до и после, права доступа к файлу +--- a/main.cpp <--- версия файла до изменений ++++ b/main.cpp <--- версия файла после изменений +@@ -8,6 +8,7 @@ int main() <--- контекст изменения, в старой версии изменения с 8 строки и затрагиваются 6 строк. в новой версии файла с 8 строки и затрагивают 7 строк. + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' +- << "A - B = " << a - b << '\n'; ++ << "A - B = " << a - b << '\n' ++ << "A * B = " << a * b <<'\n'; <--- строки начинающиеся с - показывают удаленные строки, строки с + показывают добавленные + + + } + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff HEAD~3 HEAD~1 +diff --git a/main.cpp b/main.cpp +index 842760d..984c3d6 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,7 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + + } + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +7. Откат изменений. + +Выполним коммит произведения: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m 'code: вывод произведения' +[main 5e34991] code: вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Выполним откат изменений: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at eb56849 git: игнорирование + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Добавим над функцией main() комментарий: +// you may type whatever you want + +Откатим этот файл к состоянию в последнем коммите: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +8. Обмен кодом через удаленное хранилище. + +Зарегестрируемся на Git УИТ. + +Создал пару ключей: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/u115-04/.ssh/id_ed25519): +/c/Users/u115-04/.ssh/id_ed25519 already exists. +Overwrite (y/n)? y +Enter passphrase for "/c/Users/u115-04/.ssh/id_ed25519" (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/u115-04/.ssh/id_ed25519 +Your public key has been saved in /c/Users/u115-04/.ssh/id_ed25519.pub +The key fingerprint is: +SHA256:H7EbOSgDNypJxezP0TuZhLEijHpI7Ud6XoAJLUWyz0w u115-04@w10prog-26 +The key's randomart image is: ++--[ED25519 256]--+ +| .+=. | +| oooo . | +| +=E+ o= . | +|.oB=o*+.o. + | +|o.+=+++oS+* | +|o .+ oo+=. = | +| . + . .o | +| . | +| | ++----[SHA256]-----+ + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 993 + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ ssh-add +Enter passphrase for /c/Users/Юля Д/.ssh/id_ed25519: +Identity added: /c/Users/Юля Д/.ssh/id_ed25519 (Юля Д@JuliaNote) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Открытый ключ: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINlSlTGkxZBE+5YR4YGxyPwRWIHxCiZbNWwAOVScd8B+ Юля Д@JuliaNote + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Скопировал открытый ключ и добавил в список открытых ключей своей учетной записи. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git remote add origin git@uit.mpei.ru:DmitriyevDM/cs-lab02.git + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push -u origin main +Enumerating objects: 18, done. +Counting objects: 100% (18/18), done. +Delta compression using up to 16 threads +Compressing objects: 100% (16/16), done. +Writing objects: 100% (18/18), 2.29 KiB | 234.00 KiB/s, done. +Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:DmitriyevDM/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +8. Клонирование проекта сервера. + +Клонируем проект: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob +$ git clone git@uit.mpei.ru:GalkinMK/cs-lab02.git project +Cloning into 'project'... +Enter passphrase for key '/c/Users/u115-04/.ssh/id_ed25519': +remote: Enumerating objects: 18, done. +remote: Counting objects: 100% (18/18), done. +remote: Compressing objects: 100% (16/16), done. +remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (18/18), done. +Resolving deltas: 100% (2/2), done. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob +$ + +"На машине Боба" настроим Git, как это делалось для Алисы: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.name 'Bob (GalkinMK)' + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git config user.email 'GalkinMK@mpei.ru' + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +«На машине Боба» добавим в программу печать произведения чисел и сделаем коммит. Просмотрим последний коммит и убедимся, что он сделан от имени Боба. + +no changes added to commit (use "git add" and/or "git commit -a") + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -a -m 'code: печать произведения двух чисел' +[main 5008498] code: печать произведения двух чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log +commit 5008498cb68167ac1a314668d5db04f58032ae26 (HEAD -> main) +Author: Bob (GalkinMK) +Date: Mon Mar 24 14:29:50 2025 +0300 + + code: печать произведения двух чисел + +commit eb568497b89756165bf95582a5c687cc6a958502 (origin/main, origin/HEAD) +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:45:18 2025 +0300 + + git: игнорирование + +commit a2812cc067a457303cb7513962b4ddaf2137f6f9 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:42:52 2025 +0300 + + code: вывод разности + +commit 7e1a6b64366d9d5089fe2fdb5c79e174f8c7c43b +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:41:32 2025 +0300 + + code: вывод суммы + +commit 190e4bf98c1e6895a2e97f7464969d8c5f62a42e +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:40:20 2025 +0300 + + code; вывод двух чисел + +commit 2f7477c8c55850d2a0bce28a8ecd860387ed6e96 +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:38:34 2025 +0300 + + build: добавлен файл проекта + +commit aacbacc4af7c2cb7f57648a1dc668becc0c518ed +Author: Alice (GalkinMK) +Date: Mon Mar 17 14:37:55 2025 +0300 + + code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +Отправим коммит на сервер: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519': +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 436 bytes | 218.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:GalkinMK/cs-lab02.git + eb56849..5008498 main -> main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +«На машине Алисы» выполним загрузку изменений: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 416 bytes | 41.00 KiB/s, done. +From uit.mpei.ru:GalkinMK/cs-lab02 + eb56849..5008498 main -> origin/main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Просмотрим историю всех веток: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 5008498 (origin/main, origin/HEAD) code: печать произведения двух чисел +* eb56849 (HEAD -> main) git: игнорирование +* a2812cc code: вывод разности +* 7e1a6b6 code: вывод суммы +* 190e4bf code; вывод двух чисел +* 2f7477c build: добавлен файл проекта +* aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Продвинем ветку main к скачанной версии: + +Юля Д@JuliaNote MINGW64 ~/Desktop/lab02/alice/project (main) +$ git pull --ff-only +Updating eb56849..5008498 +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +«От имени Алисы» добавим в программу печать деления, сделаем коммит, отправим его на сервер и получим новую версию «на машине Боба»: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m 'code: деление двух чисел' +[main b736caf] code: деление двух чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 417 bytes | 208.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:GalkinMK/cs-lab02.git + 5008498..b736caf main -> main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git fetch +Enter passphrase for key '/c/Users/Юля Д/.ssh/id_ed25519': +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), 397 bytes | 18.00 KiB/s, done. +From uit.mpei.ru:GalkinMK/cs-lab02 + 5008498..b736caf main -> origin/main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* b736caf (origin/main, origin/HEAD) code: деление двух чисел +* 5008498 (HEAD -> main) code: печать произведения двух чисел +* eb56849 git: игнорирование +* a2812cc code: вывод разности +* 7e1a6b6 code: вывод суммы +* 190e4bf code; вывод двух чисел +* 2f7477c build: добавлен файл проекта +* aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git pull --ff-only +Enter passphrase for key '/c/Users/u115-04/.ssh/id_ed25519': +Updating 5008498..b736caf +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 ~/Desktop/lab02/bob/project (main) +$ + +9. Разрешение конфликтов правок при совместной работе. + +«На машине Алисы» дополним программу печатью максимума, сделаем коммит и отправим его на сервер: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m 'code: печать максимума' +[main 406555c] code: печать максимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 421 bytes | 210.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:GalkinMK/cs-lab02.git + b736caf..406555c main -> main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +«На машине Боба» дополним программу печатью минимума, сделаем коммит и попытаемся отправить его на сервер: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git commit -a -m 'code: печать минимума' +[main ca785f5] code: печать минимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/u115-04/.ssh/id_ed25519': +To uit.mpei.ru:GalkinMK/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'uit.mpei.ru:DmitriyevDM/cs-lab02.git' +hint: Updates were rejected because the remote contains work that you do not +hint: have locally. This is usually caused by another repository pushing to +hint: the same ref. If you want to integrate the remote changes, use +hint: 'git pull' before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +Как можно видеть, удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите. + +«От лица Боба» загрузим коммиты из удаленного хранилища и отобразим историю всех веток: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git fetch +Enter passphrase for key '/c/Users/u115-04/.ssh/id_ed25519': +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), 401 bytes | 28.00 KiB/s, done. +From uit.mpei.ru:GalkinMK/cs-lab02 + b736caf..406555c main -> origin/main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* ca785f5 (HEAD -> main) code: печать минимума +| * 406555c (origin/main, origin/HEAD) code: печать максимума +|/ +* b736caf code: деление двух чисел +* 5008498 code: печать произведения двух чисел +* eb56849 git: игнорирование +* a2812cc code: вывод разности +* 7e1a6b6 code: вывод суммы +* 190e4bf code; вывод двух чисел +* 2f7477c build: добавлен файл проекта +* aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +Нужно поместить коммит Боба, поверх коммита Алисы: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply ca785f5... 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". +hint: Disable this message with "git config set advice.mergeConflict false" +Could not apply ca785f5... code: печать минимума + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ + +Эта команда завершается с ошибкой, сообщающей о конфликте в main.cpp. Посмотрим состояние хранилища: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ git status +interactive rebase in progress; onto 406555c <---- в данный момент выполняется rebase +Last command done (1 command done): + pick ca785f5 code: печать минимума +No commands remaining. +You are currently rebasing branch 'main' on '406555c'. + (fix conflicts and then run "git rebase --continue") + (use "git rebase --skip" to skip this patch) + (use "git rebase --abort" to check out the original branch) + +Unmerged paths: <----- конфликт слияния + (use "git restore --staged ..." to unstage) + (use "git add ..." to mark resolution) + both modified: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + + +no changes added to commit (use "git add" and/or "git commit -a") + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) +$ + + +Git status говорит нам, что мы находимся в середине rebase, возник конфликт в main.cpp. + +Удалим метки конфликта, отредактируем код(включает правки Алисы и Боба), программа компилируется и работает. + +Добавил файл в индекс и продолжил прерваннуб операцию rebase: +[detached HEAD cc3acbc] code: печать минимума + 1 file changed, 2 insertions(+), 2 deletions(-) +Successfully rebased and updated refs/heads/main. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/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) + + +nothing added to commit but untracked files present (use "git add" to track) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/u115-04/.ssh/id_ed25519': +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 16 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 419 bytes | 209.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:GalkinMK/cs-lab02.git + 406555c..cc3acbc main -> main + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/bob/project (main) +$ + +10. Использование веток. + +Создадим ветку double: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git branch double + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Переключимся на нее: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (double) +$ + +В коде заменим тип переменных a и b на double и сделаем коммит: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (double) +$ git commit -a -m 'code: переменные типа double' +[double d79a012] code: переменные типа double + 1 file changed, 1 insertion(+), 1 deletion(-) + +Переключимся на ветку main: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Посмотрим историю всех веток: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --graph --decorate --oneline --all +* d79a012 (double) code: переменные типа double +* 406555c (HEAD -> main, origin/main, origin/HEAD) code: печать максимума +* b736caf code: деление двух чисел +* 5008498 code: печать произведения двух чисел +* eb56849 git: игнорирование +* a2812cc code: вывод разности +* 7e1a6b6 code: вывод суммы +* 190e4bf code; вывод двух чисел +* 2f7477c build: добавлен файл проекта +* aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +Сольем ветку double в main: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git merge double +Updating 406555c..d79a012 +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +История всех веток: + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --graph --decorate --oneline --all +* d79a012 (HEAD -> main, double) code: переменные типа double +* 406555c (origin/main, origin/HEAD) code: печать максимума +* b736caf code: деление двух чисел +* 5008498 code: печать произведения двух чисел +* eb56849 git: игнорирование +* a2812cc code: вывод разности +* 7e1a6b6 code: вывод суммы +* 190e4bf code; вывод двух чисел +* 2f7477c build: добавлен файл проекта +* aacbacc code: заготовка программы + +u115-04@w10prog-26 MINGW64 ~/Desktop/lab02/alice/project (main) +$ +