From d27b73cea2d133b67a08497bd71ced15fa07713b Mon Sep 17 00:00:00 2001 From: RoznatovskyTA Date: Sat, 5 Apr 2025 21:29:46 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Отчет_Рознатовский.txt | 988 ++++++++++++++++++++++++ 1 file changed, 988 insertions(+) create mode 100644 Отчет_Рознатовский.txt diff --git a/Отчет_Рознатовский.txt b/Отчет_Рознатовский.txt new file mode 100644 index 0000000..35a9444 --- /dev/null +++ b/Отчет_Рознатовский.txt @@ -0,0 +1,988 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Рознатовский Т.А +Группа: А-01-24 +Проверил: +Примечание: работа выполнялась на Windows. + +1. Вход в терминал и создание структуры каталогов. + +Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +timda@RADAR MINGW64 /d/Прога/lab02 +$ + +Просмотрел файлы в рабочем каталоге: + +timda@RADAR MINGW64 /d/Прога/lab02 +$ ls + +Создал каталоги Алисы и Боба, изучил команду "cd", создал каталог project в каталоге Алисы: + +timda@RADAR MINGW64 /d/Прога/lab02 +$ mkdir alice +mkdir bob + +timda@RADAR MINGW64 /d/Прога/lab02 +$ cd bob + +timda@RADAR MINGW64 /d/Прога/lab02/bob +$ cd .. + +timda@RADAR MINGW64 /d/Прога/lab02 +$ cd alice + +timda@RADAR MINGW64 /d/Прога/lab02/alice +$ mkdir project + +timda@RADAR MINGW64 /d/Прога/lab02/alice +$ cd project + +2. Инициализация репозитария и настройка Git. + +Инициализируем репозитарий в текущем каталоге (project): + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project +$ git init +Initialized empty Git repository in D:/Прога/lab02/alice/project/.git/ + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (master) + + +Поменяем имя ветки на main: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (master) +$ git branch -m main + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ + +Посмотрим данные папки, где сделано git init: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ ls -A +.git/ + +Настроим репозитарий Алисы, чтобы коммиты были от ее имени: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git config user.name 'Alice (RoznatovskyTA)' + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git config user.email 'qwertttt158@gmail.com' + +3. Создание коммитов + +Запустим CodeBlocks и создадим проект в репозитарии Алисы. + +Имеем следующую структуру файлов и каталогов: + +lab02 +├── alice +│ └── project <--------- текущий рабочий каталог +│ ├── .git <--------- создан командой "git init" +│ ├── bin <--------- создан CodeBlocks при сборке +│ ├── obj <--------- (то же самое) +│ ├── main.cpp <-- код программы +│ └── project.cbp <-- файл проекта +└── bob + +Вернемся в Git Bash, просмотрим состояние рабочей копии: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git status +On branch main + +No commits yet + +Untracked files: + (use "git add ..." to include in what will be committed) + main.cpp + project.cbp + +nothing added to commit but untracked files present (use "git add" to track) + +Добавим файл main.cpp в индекс: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git add main.cpp + +Посмотрим изменения: + +timda@RADAR MINGW64 /d/Прога/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) + project.cbp + +Выполним коммит с файлом main.cpp: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) a061b1e] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +Добавим файл project.cbp в индекс и сделаем коммит с ним: + +timda@RADAR MINGW64 /d/Прога/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 + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main 9cd9d22] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + + +4. Создание коммитов с изменениями. + +Заменим тело функции main() на ввод двух чисел. + +timda@RADAR MINGW64 /d/Прога/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 + +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") + +Cпособ 1. Сначала выбрем файлы, изменения которых должны войти в коммит, затем сделаем коммит: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git add main.cpp +git commit -m "code: вывод двух чисел" +[main dd5e6d8] code: вывод двух чисел + 1 file changed, 4 insertions(+), 2 deletions(-) + +Способ 2. Добавим в индекс все изменения, затем сделаем коммит. + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git add -u + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -m 'code: вывод суммы' +[main ad77a65] code: вывод суммы + 1 file changed, 1 insertion(+), 1 deletion(-) + +Добавим в программу вывод разности a и b. + +Способ 3. Добавим все изменения в индекс и сделаем коммит в один шаг. + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -a -m 'code: вывод разности' +[main 59e3923] code: вывод разности + 1 file changed, 2 insertions(+), 1 deletion(-) + +5. Игнорирование файлов. + +Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: /bin. + +Выполнив git status, можно видеть, что каталог bin не отображается: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + project.depend + +nothing added to commit but untracked files present (use "git add" to track) + + +Занесем в список игнорируемых каталоги bin и git и файлы *.layout: + +timda@RADAR MINGW64 /d/Прога/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) + +Создадим коммит с .gitignore: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git add .gitignore + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -a -m 'git: игнорирование' +[main 2d08ddf] git: игнорирование + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + +6. Просмотр истории. + +Пробуем команду git log: + + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log +commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main) +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:36:49 2025 +0300 + + git: игнорирование + +commit 59e392362b5185a4895176c4bbac7a9188e4eca7 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:24:25 2025 +0300 + + code: вывод разности + +commit ad77a65533c16e41991988fe57e7a1a4d868a15a +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:22:23 2025 +0300 + + code: вывод суммы + +commit dd5e6d881a0e1fff89084f8ffc0152accff272a0 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:20:10 2025 +0300 + + code: вывод двух чисел + +commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:16:09 2025 +0300 + + build: добавлен файл проекта + +commit a061b1ed4fdceb40ead434119f31cd59938f0acc +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:15:01 2025 +0300 + + code: заготовка программы + +Пробуем команду git log --stat: + + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --stat +commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main) +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:36:49 2025 +0300 + + git: игнорирование + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 59e392362b5185a4895176c4bbac7a9188e4eca7 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:24:25 2025 +0300 + + code: вывод разности + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ad77a65533c16e41991988fe57e7a1a4d868a15a +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:22:23 2025 +0300 + + code: вывод суммы + + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dd5e6d881a0e1fff89084f8ffc0152accff272a0 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:20:10 2025 +0300 + + code: вывод двух чисел + + main.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:16:09 2025 +0300 + + build: добавлен файл проекта + + project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit a061b1ed4fdceb40ead434119f31cd59938f0acc +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:15:01 2025 +0300 + + code: заготовка программы + + main.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) + +Пробуем команду git log --oneline --decorate: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --oneline --decorate +2d08ddf (HEAD -> main) git: игнорирование +59e3923 code: вывод разности +ad77a65 code: вывод суммы +dd5e6d8 code: вывод двух чисел +9cd9d22 build: добавлен файл проекта +a061b1e code: заготовка программы + +Пробуем команду git log --oneline --decorate --all --graph: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 2d08ddf (HEAD -> main) git: игнорирование +* 59e3923 code: вывод разности +* ad77a65 code: вывод суммы +* dd5e6d8 code: вывод двух чисел +* 9cd9d22 build: добавлен файл проекта +* a061b1e code: заготовка программы + +Коммиты по теме build: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --grep "build:" +commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:16:09 2025 +0300 + + build: добавлен файл проекта + +Коммиты затрагивающие project.cbp: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log -- project.cbp +commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:16:09 2025 +0300 + + build: добавлен файл проекта + +Посмотрим коммит тремя способами: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git show HEAD +commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main) +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:36:49 2025 +0300 + + git: игнорирование + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..aecc882 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/project.depend + + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git show main +commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main) +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:36:49 2025 +0300 + + git: игнорирование + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..aecc882 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/project.depend + +Посмотрим предпоследний коммит: +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git show 59e3923 +commit 59e392362b5185a4895176c4bbac7a9188e4eca7 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:24:25 2025 +0300 + + code: вывод разности + +diff --git a/main.cpp b/main.cpp +index 800d68c..8611536 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,6 @@ 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'; + } + +Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит. + +Используем команду git diff: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 8611536..28ace4e 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,6 @@ int main() + 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';<--- строки начинающиеся с - показывают удаленные строки, строки с + показывают добавленные + + } + +Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git diff HEAD~3 HEAD~1 +diff --git a/main.cpp b/main.cpp +index 1d79c77..8611536 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- ++cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } + +7. Откат изменений. + +Выполним коммит произведения: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -a -m 'code: вывод произведения' +[main 6179755] code: вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + + +Выполним откат изменений: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at 2d08ddf git: игнорирование + + +Добавим над функцией main() комментарий: +// you may type whatever you want + +Откатим этот файл к состоянию в последнем коммите: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + +8. Обмен кодом через удаленное хранилище. + +Зарегестрируемся на Git УИТ. + +Создал пару ключей: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/timda/.ssh/id_ed25519): y +Enter passphrase for "y" (empty for no passphrase): +Enter same passphrase again: +Passphrases do not match. Try again. +Enter passphrase for "y" (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in y +Your public key has been saved in y.pub +The key fingerprint is: +SHA256:mraxrJ9CwtYohMk18eH0+V6tYXYB3xt+F3gwa/Ae6xQ timda@RADAR +The key's randomart image is: ++--[ED25519 256]--+ +| ..o o o | +| o+ o . = * | +|o.. .o o E = | +|oo . + B +| +|.. o S. = * oo| +|. = o o. + * o| +| o o = . . . | +| .o = | +| .+* | ++----[SHA256]-----+ + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 266 + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ ssh-add +Identity added: /c/Users/timda/.ssh/id_ed25519 (timda@RADAR) + +Открытый ключ: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICseD55ZBOKkwn9wZ//2b14SfVbqNIoi3ZpzckSu1QUk timda@RADAR + +Скопировал открытый ключ и добавил в список открытых ключей своей учетной записи. + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ touch README.md + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git init +Reinitialized existing Git repository in D:/Прога/lab02/alice/project/.git/ + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git checkout -b main +fatal: a branch named 'main' already exists + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git add README.md + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -m "first commit" +[main 81f6372] first commit + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 README.md + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git remote add origin git@uit.mpei.ru:RoznatovskyTA/cs-lab02.git + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git push -u origin main +Enumerating objects: 21, done. +Counting objects: 100% (21/21), done. +Delta compression using up to 12 threads +Compressing objects: 100% (18/18), done. +Writing objects: 100% (21/21), 2.57 KiB | 1.29 MiB/s, done. +Total 21 (delta 3), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:RoznatovskyTA/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +8. Клонирование проекта сервера. + +Клонируем проект: + +timda@RADAR MINGW64 /d/Прога/lab02/bob +$ git clone git@uit.mpei.ru:RoznatovskyTA/cs-lab02.git project +Cloning into 'project'... +remote: Enumerating objects: 21, done. +remote: Counting objects: 100% (21/21), done. +remote: Compressing objects: 100% (18/18), done. +remote: Total 21 (delta 3), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (21/21), done. +Resolving deltas: 100% (3/3), done. + + +"На машине Боба" настроим Git, как это делалось для Алисы: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git config user.name 'Bob (RoznatovskyTA)' + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git config user.email 'qwertttt158@gmail.com' + +«На машине Боба» добавим в программу печать произведения чисел и сделаем коммит. Просмотрим последний коммит и убедимся, что он сделан от имени Боба. + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git commit -a -m 'code: печать произведения двух чисел' +[main fb57f72] code: печать произведения двух чисел + 1 file changed, 3 insertions(+), 2 deletions(-) + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git log +commit fb57f725706450319ddeb7b836dd03381d680139 (HEAD -> main) +Author: Bob (RoznatovskyTA) +Date: Sat Apr 5 22:48:58 2025 +0300 + + code: печать произведения двух чисел + +commit 81f637256f66964cd2d014fed31c8f935bc4797b (origin/main, origin/HEAD) +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 22:13:42 2025 +0300 + + first commit + +commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:36:49 2025 +0300 + + git: игнорирование + +commit 59e392362b5185a4895176c4bbac7a9188e4eca7 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:24:25 2025 +0300 + + code: вывод разности + +commit ad77a65533c16e41991988fe57e7a1a4d868a15a +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:22:23 2025 +0300 + + code: вывод суммы + +commit dd5e6d881a0e1fff89084f8ffc0152accff272a0 +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:20:10 2025 +0300 + + code: вывод двух чисел + +commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:16:09 2025 +0300 + + build: добавлен файл проекта + +commit a061b1ed4fdceb40ead434119f31cd59938f0acc +Author: Alice (RoznatovskyTA) +Date: Sat Apr 5 21:15:01 2025 +0300 + + code: заготовка программы + +Отправим коммит на сервер: + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 391 bytes | 391.00 KiB/s, done. +Total 3 (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:RoznatovskyTA/cs-lab02.git + 81f6372..fb57f72 main -> main + +«На машине Алисы» выполним загрузку изменений: + +timda@RADAR MINGW64 /d/Прога/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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 371 bytes | 123.00 KiB/s, done. +From uit.mpei.ru:RoznatovskyTA/cs-lab02 + 81f6372..fb57f72 main -> origin/main + +Просмотрим историю всех веток: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* fb57f72 (origin/main, origin/HEAD) code: печать произведения двух чисел +* 81f6372 (HEAD -> main) first commit +* 2d08ddf git: игнорирование +* 59e3923 code: вывод разности +* ad77a65 code: вывод суммы +* dd5e6d8 code: вывод двух чисел +* 9cd9d22 build: добавлен файл проекта +* a061b1e code: заготовка программы + +Продвинем ветку main к скачанной версии: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git pull --ff-only +Updating 81f6372..fb57f72 +Fast-forward + main.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +«От имени Алисы» добавим в программу печать деления, сделаем коммит, отправим его на сервер и получим новую версию «на машине Боба»: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -a -m 'code: деление двух чисел' +[main 074cac8] code: деление двух чисел + 1 file changed, 2 insertions(+), 1 deletion(-) + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 365 bytes | 365.00 KiB/s, done. +Total 3 (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:RoznatovskyTA/cs-lab02.git + fb57f72..074cac8 main -> main + +timda@RADAR MINGW64 /d/Прога/lab02/bob/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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 345 bytes | 69.00 KiB/s, done. +From uit.mpei.ru:RoznatovskyTA/cs-lab02 + fb57f72..074cac8 main -> origin/main + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 074cac8 (origin/main, origin/HEAD) code: деление двух чисел +* fb57f72 (HEAD -> main) code: печать произведения двух чисел +* 81f6372 first commit +* 2d08ddf git: игнорирование +* 59e3923 code: вывод разности +* ad77a65 code: вывод суммы +* dd5e6d8 code: вывод двух чисел +* 9cd9d22 build: добавлен файл проекта +* a061b1e code: заготовка программы + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git pull --ff-only +Updating fb57f72..074cac8 +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + + +9. Разрешение конфликтов правок при совместной работе. + +«На машине Алисы» дополним программу печатью максимума, сделаем коммит и отправим его на сервер: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git commit -a -m 'code: печать максимума' +[main 2cf34b7] code: печать максимума + 1 file changed, 1 insertion(+) + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 383 bytes | 383.00 KiB/s, done. +Total 3 (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:RoznatovskyTA/cs-lab02.git + 074cac8..2cf34b7 main -> main + + +«На машине Боба» дополним программу печатью минимума, сделаем коммит и попытаемся отправить его на сервер: + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git push +To uit.mpei.ru:RoznatovskyTA/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'uit.mpei.ru:RoznatovskyTA/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. + +Как можно видеть, удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите. + +«От лица Боба» загрузим коммиты из удаленного хранилища и отобразим историю всех веток: + +timda@RADAR MINGW64 /d/Прога/lab02/bob/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 2), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 363 bytes | 72.00 KiB/s, done. +From uit.mpei.ru:RoznatovskyTA/cs-lab02 + 074cac8..2cf34b7 main -> origin/main + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* d0cb43b (HEAD -> main) code: печать минимума +| * 2cf34b7 (origin/main, origin/HEAD) code: печать максимума +|/ +* 074cac8 code: деление двух чисел +* fb57f72 code: печать произведения двух чисел +* 81f6372 first commit +* 2d08ddf git: игнорирование +* 59e3923 code: вывод разности +* ad77a65 code: вывод суммы +* dd5e6d8 code: вывод двух чисел +* 9cd9d22 build: добавлен файл проекта +* a061b1e code: заготовка программы + +Нужно поместить коммит Боба, поверх коммита Алисы: + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply d0cb43b... 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 d0cb43b... code: печать минимума + +Эта команда завершается с ошибкой, сообщающей о конфликте в main.cpp. Посмотрим состояние хранилища: + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main|REBASE 1/1) +$ git status +interactive rebase in progress; onto 2cf34b7 +Last command done (1 command done): + pick d0cb43b code: печать минимума +No commands remaining. +You are currently editing a commit while rebasing branch 'main' on '2cf34b7'. + (use "git commit --amend" to amend the current commit) + (use "git rebase --continue" once you are satisfied with your changes) + +Untracked files: + (use "git add ..." to include in what will be committed) + project.layout + +nothing added to commit but untracked files present (use "git add" to track) + +Git status говорит нам, что мы находимся в середине rebase, возник конфликт в main.cpp. + +Удалим метки конфликта, отредактируем код(включает правки Алисы и Боба), программа компилируется и работает. + +Добавил файл в индекс и продолжил прерванную операцию rebase: + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main|REBASE 1/1) +$ git add main.cpp +git rebase --continue +Successfully rebased and updated refs/heads/main. + +timda@RADAR MINGW64 /d/Прога/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) + + +timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 371 bytes | 371.00 KiB/s, done. +Total 3 (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:RoznatovskyTA/cs-lab02.git + 2cf34b7..c271e1f main -> main + +10. Использование веток. + +Создадим ветку double: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git branch double + +Переключимя на нее: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (double) +$ git commit -a -m 'code: переменные типа double' +[double ad93547] code: переменные типа double + 1 file changed, 1 insertion(+), 1 deletion(-) + +Переключимся на ветку main: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded. + (use "git pull" to update your local branch) + +Посмотрим историю всех веток: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --graph --decorate --oneline --all +* 3639c48 (double) code: переменные типа double +* c271e1f (HEAD -> main, origin/main, origin/HEAD) code: печать минимума +* 2cf34b7 code: печать максимума +* 074cac8 code: деление двух чисел +* fb57f72 code: печать произведения двух чисел +* 81f6372 first commit +* 2d08ddf git: игнорирование +* 59e3923 code: вывод разности +* ad77a65 code: вывод суммы +* dd5e6d8 code: вывод двух чисел +* 9cd9d22 build: добавлен файл проекта +* a061b1e code: заготовка программы + +Сольем ветку double в main: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git merge double +Updating c271e1f..3639c48 +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +История всех веток: + +timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main) +$ git log --graph --decorate --oneline --all +* 3639c48 (HEAD -> main, double) code: переменные типа double +* c271e1f (origin/main, origin/HEAD) code: печать минимума +* 2cf34b7 code: печать максимума +* 074cac8 code: деление двух чисел +* fb57f72 code: печать произведения двух чисел +* 81f6372 first commit +* 2d08ddf git: игнорирование +* 59e3923 code: вывод разности +* ad77a65 code: вывод суммы +* dd5e6d8 code: вывод двух чисел +* 9cd9d22 build: добавлен файл проекта +* a061b1e code: заготовка программы + + + + + + + + + + + + + + + + + + + + + + +