diff --git a/отчет лаба 2.txt b/отчет лаба 2.txt new file mode 100644 index 0000000..85e54e4 --- /dev/null +++ b/отчет лаба 2.txt @@ -0,0 +1,879 @@ +rybin@Bomba MINGW64 ~ +$ cd C: + +rybin@Bomba MINGW64 /c +$ cd Users + +rybin@Bomba MINGW64 /c/Users +$ cd Rybin + +rybin@Bomba MINGW64 /c/Users/Rybin +$ cd OneDrive + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive +$ cd Desktop + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop +$ cd lab02 + +Ход работы: + +Вход в терминал и создание структуры каталогов +Создаем папки пользователей (mkdir alice, mkdir bob) +В папке пользователя alice создаем папку project + +Инициализация репозитария и настройка Git: + +Инициализируем хранилище git (git init) +Настраиваем папки пользователя, с которым будем работать: + + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02 +$ mkdir alice + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02 +$ mkdir bob + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02 +$ cd alice + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice +$ mkdir project + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice +$ cd project + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project +$ cd .. + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice +$ cd project +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/rybin/OneDrive/Desktop/lab02/alice/project/.git/ + +Создание коммитов: + +Занесение файлов под контроль версий + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (master) +$ git branch -m main + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ ls -A +.git/ + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git config user.name 'Alice (StepanovaKY)' + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git config user.email 'StepanovaKY@empei.ru' + +Просматриваем состояние рабочей копии(git status) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git status +On branch main + +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) + + +В первой строке ссылка HEAD указывает на ветку main +Вторая стр. говорит о том, что еще не было создано коммитов +Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить +Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить +Добавляем файл с кодом и просматриваем изменения + + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git add main.cpp + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/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 +Появилась строка с файлами в индексе, стоящими в очереди на коммит + +Составление сообщений к коммитам +Создаем 2 коммита с информацией о коде программы + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) e6e2269] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/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 + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git status +On branch main +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: project.cbp + + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main 57f1f4f] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/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 + +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") + +Проделываем ряд изменений с кодом программы и делаем коммиты суммы и разности + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git add main.cpp + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'code: добавлен ввод чисел и вывод их суммы и разности' +[main f35c583] code: добавлен ввод чисел и вывод их суммы и разности + 1 file changed, 3 insertions(+), 2 deletions(-) + +Игнорирование файлов +Укажем Git игнорировать присутствие каталога bin и obj + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/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) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git add .gitignore + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'git: игнорирование бинарных файлов' +[main 1dc38fd] git: игнорирование бинарных файлов + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + + git: добавлен файл .gitignore для игнорирования каталогов bin и obj + +Просмотр истории: + +С помощью команды git log и различных ее опций просматриваем журнал коммитов +Используем команду git log –stat + +commit f35c5833ccc51b116c8ce1836e365319595d6cdf +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:25:32 2025 +0300 + + code: добавлен ввод чисел и вывод их суммы и разности + +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: добавлен файл проекта + +commit e6e22691cdb433025be59b85dd526be2fd0017a4 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:03:57 2025 +0300 + + code: заготовка программы + +В последнем коммите первой строкой показывается хэш коммита, по которому можно +потом найти этот коммит +Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита +Далее идет комментарий к коммиту +Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.) +В последней стр. приведена статистика изменений данных файлов + +(Использование других способов просмотра истории) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git log +commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main) +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:34:38 2025 +0300 + + git: добавлен файл .gitignore для игнорирования каталогов bin и obj + +commit f35c5833ccc51b116c8ce1836e365319595d6cdf +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:25:32 2025 +0300 + + code: добавлен ввод чисел и вывод их суммы и разности + +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: добавлен файл проекта + +commit e6e22691cdb433025be59b85dd526be2fd0017a4 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:03:57 2025 +0300 + + code: заготовка программы + + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git log --stat +commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main) +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:34:38 2025 +0300 + + git: добавлен файл .gitignore для игнорирования каталогов bin и obj + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit f35c5833ccc51b116c8ce1836e365319595d6cdf +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:25:32 2025 +0300 + + code: добавлен ввод чисел и вывод их суммы и разности + + main.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: добавлен файл проекта + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate +e10fefc (HEAD -> main) git: добавлен файл .gitignore для игнорирования каталогов bin и obj +f35c583 code: добавлен ввод чисел и вывод их суммы и разности +57f1f4f build: добавлен файл проекта +e6e2269 code: заготовка программы + + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* e10fefc (HEAD -> main) git: добавлен файл .gitignore для игнорирования каталогов bin и obj +* f35c583 code: добавлен ввод чисел и вывод их суммы и разности +* 57f1f4f build: добавлен файл проекта +* e6e2269 code: заготовка программы + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git log --grep 'build' +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: добавлен файл проекта + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git log -- project.cbp +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: добавлен файл проекта + +Просмотр коммитов +Используем команды для просмотра отдельных коммитов(git log –main.cpp/ git log –grep “code: ”) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)$ +git log --grep 'build:' +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (StepanovaKY) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: add project file + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main)$ +git log -- project.cbp +commit 57f1f4feaa3d50491f4d4ef26a52bd7b86242561 +Author: Alice (AngelovI) +Date: Mon Mar 24 11:07:59 2025 +0300 + + build: add project file + + +(Таким способом мы просмотрели информацию о коммите по измененному файлу и по теме коммита) + +Далее тремя способами просматриваем информацию о предпоследнем коммите + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git show HEAD +commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main) +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:34:38 2025 +0300 + + git: добавлен файл .gitignore для игнорирования каталогов bin и obj + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..9d83ebf +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++*.layout + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git show main +commit e10fefcdfc9578bf5561d214853dd269e3c7bae5 (HEAD -> main) +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:34:38 2025 +0300 + + git: добавлен файл .gitignore для игнорирования каталогов bin и obj + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..9d83ebf +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++*.layout + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git show d2e8af +fatal: ambiguous argument 'd2e8af': unknown revision or path not in the working tree. +Use '--' to separate paths from revisions, like this: +'git [...] -- [...]' + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git show 9d83ebf +/bin +/obj +*.layout + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git show HEAD~1 +commit f35c5833ccc51b116c8ce1836e365319595d6cdf +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:25:32 2025 +0300 + + code: добавлен ввод чисел и вывод их суммы и разности + +diff --git a/main.cpp b/main.cpp +index b4392ec..eac5055 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,7 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; +- return 0; ++ cout << "Enter A and B: "; ++ int a, b; ++ cin >> a >> b; + } + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git show main~1 +commit f35c5833ccc51b116c8ce1836e365319595d6cdf +Author: Alice (StepanovaKY) +Date: Mon Mar 24 13:25:32 2025 +0300 + + code: добавлен ввод чисел и вывод их суммы и разности + +diff --git a/main.cpp b/main.cpp +index b4392ec..eac5055 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,7 @@ using namespace std; + + int main() + { +- cout << "Hello world!" << endl; +- return 0; ++ cout << "Enter A and B: "; ++ int a, b; ++ cin >> a >> b; + } + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index eac5055..a2358eb 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,4 +7,8 @@ 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'; ++ cout << "A * B = " << a * b << '\n'; ++ + } + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git diff HEAD~2 +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 b4392ec..a2358eb 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,11 @@ 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'; + +Добавим изменения в рабочую копию и посмотрим их с помощью команды git diff + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index b4392ec..a2358eb 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,6 +8,7 @@ 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'; + return 0; + } +В качестве первой стр. мы видим входные данные команды для сравнения файлов +Далее идет заголовок с легендой изменения, место измененного кода и измененная функция +На след. строке идут строки вокруг измененной части, удаленные и добавленные строки + +Откат изменений +Вносим изменения в код, а потом откатываем их до состояния в опр. коммите с помощью команды git reset + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'вывод произведения' +[main c41ed97] вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at 1dc38fd git: игнорирование бинарных файлов + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git checkout HEAD -- main.cpp + +Обмен кодом через удаленное хранилище +Обмен кодом через удалённое хранилище. Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH. Поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей. + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/rybin/.ssh/id_ed25519): +Created directory '/c/Users/rybin/.ssh'. +Enter passphrase for "/c/Users/rybin/.ssh/id_ed25519" (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/rybin/.ssh/id_ed25519 +Your public key has been saved in /c/Users/rybin/.ssh/id_ed25519.pub +The key fingerprint is: +SHA256:YsaIzPpwHTaBQqBGQam9BykmtgY0s12248qTX1MJ7CE rybin@Bomba +The key's randomart image is: ++--[ED25519 256]--+ +|+=o | +|+= . o. | +|=o*.+E.+ | +|*B+o *o o . | +|=.=o* *.So | +| +.o.* .. | +|+ o.+ o | +| + = . . | +| . o. | ++----[SHA256]-----+ + + Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы: + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 760 + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ ssh-add +Enter passphrase for /c/Users/rybin/.ssh/id_ed25519: +Identity added: /c/Users/rybin/.ssh/id_ed25519 (rybin@Bomba) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAQ2E0GWYIDA5NLS58pgx1ol7mBFIA2NC2Bs06kyzQmG rybin@Bomba + +Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_rsa.pub. +Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push. + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git remote add origin git@uit.mpei.ru:StepanovaKY/project.git + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git push -u origin main +Enumerating objects: 15, done. +Counting objects: 100% (15/15), done. +Delta compression using up to 12 threads +Compressing objects: 100% (13/13), done. +Writing objects: 100% (15/15), 1.98 KiB | 1015.00 KiB/s, done. +Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovaKY/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/alice/project (main) +$ git remote -v +origin git@uit.mpei.ru:StepanovaKY/cs-lab02.git (fetch) +origin git@uit.mpei.ru:StepanovaKY/cs-lab02.git (push) + + К работе присоединяется боб. Клонируем репозитарий с помощью git clone. + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob +$ git clone git@uit.mpei.ru:StepanovaKY/cs-lab02.git project +Cloning into 'project'... +remote: Enumerating objects: 15, done. +remote: Counting objects: 100% (15/15), done. +remote: Compressing objects: 100% (12/12), done. +remote: Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (15/15), done. +Resolving deltas: 100% (1/1), done. + +Настроим хранилище боба + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main) +$ git config user.name 'Bob (StepanovaKY)' + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main) +$ git config user.email 'StepanovaKY@mpei.ru' + +Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub. +Вантуз@DESKTOP-RJ2P0PB MINGW64 ~/Desktop/laba02/bob/project (main) +$ git add main.cpp + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main) +$ git commit -m 'code: вывод произведения' +[main b0667fd] code: вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + +rybin@Bomba MINGW64 /c/Users/Rybin/OneDrive/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/Rybin/.ssh/id_rsa': +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), 384 bytes | 384.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:StepanovaKY/cs-lab02.git + 1dc38fd..b0667fd main -> main + +Обновляем версию программы у Алисы. Для этого загружаем загрузку изменений с помощью git fetch. А затем переносим ветку main на скачанную версию с помощью git pull (который, вообще говоря, все равно вызывает git fetch, поэтому его ручной вызов не обязателен). + +rybin@Bomba MINGW64 ~/OneDrive/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), 364 bytes | 24.00 KiB/s, done. +From uit.mpei.ru:StepanovaKY/cs-lab02 + 1dc38fd..b0667fd main -> origin/main + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* b0667fd (origin/main) code: вывод произведения +* 1dc38fd (HEAD -> main) git: игнорирование бинарных файлов +* 62b8365 code: вывод разности +* 3b9353a code: вывод суммы +* 9ca7d49 build: add project file +* 9f4438c code: заготовка программы + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git pull --ff-only +Updating 1dc38fd..b0667fd +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Далее Алиса вносит новое изменение, а Боб его скачивает. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git add main.cpp + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'code: вывод деления' +[main a959899] code: вывод деления + 1 file changed, 2 insertions(+), 1 deletion(-) + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/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), 396 bytes | 396.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:StepanovaKY/cs-lab02.git + b0667fd..a959899 main -> main + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git fetch +Enter passphrase for key '/c/Users/Вантуз/.ssh/id_rsa': +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), 376 bytes | 18.00 KiB/s, done. +From uit.mpei.ru:StepanovaKY/cs-lab02 + b0667fd..a959899 main -> origin/main + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git pull --ff-only +Enter passphrase for key '/c/Users/Вантуз/.ssh/id_rsa': +Updating b0667fd..a959899 +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + + +Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git add main.cpp + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git commit -m 'code: вывод максимума' +[main a262594] code: вывод максимума + 1 file changed, 2 insertions(+) + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/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), 434 bytes | 434.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:StepanovaKY/cs-lab02.git + a959899..a262594 main -> main + +(боб) +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git add main.cpp + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git commit -m 'code: вывод минимума' +[main 38a334c] code: вывод минимума + 1 file changed, 2 insertions(+), 2 deletions(-) + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/rybin/.ssh/id_rsa': +To uit.mpei.ru:AngelovI/cs-lab02.git + ! [rejected] main -> main (non-fast-forward) +error: failed to push some refs to 'uit.mpei.ru:StepanovaKY/cs-lab02.git' +hint: Updates were rejected because the tip of your current branch is behind +hint: its remote counterpart. If you want to integrate the remote changes, +hint: use 'git pull' before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + +(Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub.) + + Загрузим версию с сервера + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git fetch +Enter passphrase for key '/c/Users/rybin/.ssh/id_rsa': + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 751cb56 (HEAD -> main) code: вывод минимума +| * a262594 (origin/main, origin/HEAD) code: вывод максимума +|/ +* a959899 code: вывод деления +* b0667fd code: вывод произведения +* 1dc38fd git: игнорирование бинарных файлов +* 62b8365 code: вывод разности +* 3b9353a code: вывод суммы +* 9ca7d49 build: add project file +* 9f4438c code: заготовка программы + + +(Ветка main раздвоилась.) +Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 751cb56... 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 751cb56... code: вывод минимума + +Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/bob/project (main|REBASE 1/1) +$ git add main.cpp + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main|REBASE 1/1) + +$ git rebase --continue +[detached HEAD 9dc1bfc] code: вывод минимума + 1 file changed, 6 insertions(+) +Successfully rebased and updated refs/heads/main. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git log --oneline --decorate --all --graph +* 9dc1bfc (HEAD -> main) code: вывод минимума +* a262594 (origin/main, origin/HEAD) code: вывод максимума +* a959899 code: вывод деления +* b0667fd code: вывод произведения +* 1dc38fd git: игнорирование бинарных файлов +* 62b8365 code: вывод разности +* 3b9353a code: вывод суммы +* 9ca7d49 build: add project file +* 9f4438c code: заготовка программы + + (Получили желаемый результат) +Отправим изменения на сервер. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/bob/project (main) +$ git push +Enter passphrase for key '/c/Users/Вантуз/.ssh/id_rsa': +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), 438 bytes | 438.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:StepanovaKY/cs-lab02.git + a262594..9dc1bfc main -> main + +В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума. +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git branch double + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git checkout double +Switched to branch 'double' + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (double) +$ git add main.cpp + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (double) +$ git commit -m 'code: изменение типа переменных' +[double 04a65b4] code: изменение типа переменных + 1 file changed, 1 insertion(+), 1 deletion(-) + +Затем переключается на ветку main. И синхронизирует её + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +rybin@Bomba MINGW64 ~/OneDrive/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), 418 bytes | 41.00 KiB/s, done. +From uit.mpei.ru:StepanovaKY/cs-lab02 + a262594..9dc1bfc main -> origin/main + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* 04a65b4 (double) code: изменение типа переменных +| * 9dc1bfc (origin/main) code: вывод минимума +|/ +* a262594 (HEAD -> main) code: вывод максимума +* a959899 code: вывод деления +* b0667fd code: вывод произведения +* 1dc38fd git: игнорирование бинарных файлов +* 62b8365 code: вывод разности +* 3b9353a code: вывод суммы +* 9ca7d49 build: add project file +* 9f4438c code: заготовка программы + +(Получаем одновременно две ветки) +Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub. + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/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(-) + +rybin@Bomba MINGW64 ~/OneDrive/Desktop/lab02/alice/project (main) +$ git push +Enumerating objects: 10, done. +Counting objects: 100% (10/10), done. +Delta compression using up to 12 threads +Compressing objects: 100% (6/6), done. +Writing objects: 100% (6/6), 831 bytes | 831.00 KiB/s, done. +Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:StepanovaKY/cs-lab02.git + 9dc1bfc..cfe757c main -> main + +