Вход в терминал и создание структуры каталогов Создём папки пользователей(mkdir alice, mkdir bob) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2 $ mkdir alice vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2 $ mkdir bob В папке пользователя alice создаём папку project vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice $ cd alice vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice $ mkdir project vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice $ cd project vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project $ cd .. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice $ cd project Инициализация репозитария и настройка Git Инициализируем хранилище git(git init) Настраиваем папки пользователя, с которым будем работать vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project git init Initialized empty Git repository in C:/Users/vikkt/Desktop/1 semestr lab/LAB2/alice/project/.git/ vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (master) $ git branch -m main vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git config user.name 'alice(victoriaCS)' vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git config user.email 'CherniukVS@mpei.ru' Создание коммитов Занесение файлов под контроль версий Просматриваем состояние рабочей копии(git status) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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) В первой строке ссылка РУФВ указывает на ветку main; Вторая строка говорит о том, что ещё не было создано коммитов; Третья строка показывает неотслеживаемые файлы в хранилище git и подсказывает как их добавить; Последняя строка говорит о том, что нет добавленных(отслеживаемых) файлов, которые можно будет закоммитить; Добавляем файл с кодом и проверяем изменения vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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 Появилась строка с файлами в индексе, стоящими в очереди на коммит Составление сообщений к коммитам Создаём два коммита с информацией о коде программы vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: заготовка программы' [main (root-commit) 3e087e4] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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 vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'build: add project file' [main 5a6462f] build: add project file 1 file changed, 38 insertions(+) create mode 100644 project.cbp После добавления в программу ввода двух чисел, видим, что файл main.cpp был изменён vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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") Проделываем ряд изменений с кодом программы и делаем коммиты суммы и разности vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: вывод суммы' [main 0b91b8d] code: вывод суммы 1 file changed, 4 insertions(+), 2 deletions(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: вывод разности' [main a300ded] code: вывод разности 1 file changed, 2 insertions(+), 1 deletion(-) Игнорирование файлов Укажем git игнорировать присутствие каталога bin и obj vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) .gitignore project.depend nothing added to commit but untracked files present (use "git add" to track) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add .gitignore vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: игнорирование бинарных файлов' [main daa19f7] code: игнорирование бинарных файлов 1 file changed, 3 insertions(+) create mode 100644 .gitignore Просмотр истории С помощью команды git log и различных её опций просматриваем журнал коммитов Используем команду git log--stat vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log --stat commit daa19f7ce2a1201910f4981b36a7cb460d2b067e (HEAD -> main) Author: alice(victoriaCS) Date: Sat Apr 12 11:42:51 2025 +0300 code: игнорирование бинарных файлов .gitignore | 3 +++ 1 file changed, 3 insertions(+) commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 Author: alice(victoriaCS) Date: Sat Apr 12 11:29:13 2025 +0300 code: вывод разности main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0b91b8d933527ef48e1779a37d267c2c988a10d4 Author: alice(victoriaCS) Date: Sat Apr 12 11:27:28 2025 +0300 code: вывод суммы В последнем коммите первой строкой показывается хэш коммита, по которому можно потом найти этот коммит; Во второй строке записан автор, внёсший этот коммит, а строкой ниже - время создания коммита; Далее идёт комментарий к коммиту; Перечисление файлов, в которых произошли изменения и количество изменённых строчек('+' добавленная строк, '-' удалённая строка); Другие способы просмотра историй В последней строке приведена статистика изменений данных файлов vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log --oneline --decorate daa19f7 (HEAD -> main) code: игнорирование бинарных файлов a300ded code: вывод разности 0b91b8d code: вывод суммы 5a6462f build: add project file 3e087e4 code: заготовка программы vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log --oneline --decorate --all --graph * daa19f7 (HEAD -> main) code: игнорирование бинарных файлов * a300ded code: вывод разности * 0b91b8d code: вывод суммы * 5a6462f build: add project file * 3e087e4 code: заготовка программы Используем команды для просмотра отдельных коммитов(git log - main.cpp/git log - grep "code:") vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log --grep "build:" commit 5a6462f0e30e123a5ee61a141212ad9db6cf348b Author: alice(victoriaCS) Date: Sat Apr 12 11:20:58 2025 +0300 build: add project file vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log -- project.cbp commit 5a6462f0e30e123a5ee61a141212ad9db6cf348b Author: alice(victoriaCS) Date: Sat Apr 12 11:20:58 2025 +0300 build: add project file Таким образом, мы посмотрели информацию о коммите по изменённому файлу и по теме коммита Просмотр коммитов Тремя способами просматриваем информацию о предпоследнем коммите vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git show HEAD~1 commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 Author: alice(victoriaCS) Date: Sat Apr 12 11:29:13 2025 +0300 code: вывод разности diff --git a/main.cpp b/main.cpp index 4364dbc..8435233 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'; } vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git show main~1 commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 Author: alice(victoriaCS) Date: Sat Apr 12 11:29:13 2025 +0300 code: вывод разности diff --git a/main.cpp b/main.cpp index 4364dbc..8435233 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'; } vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git show a300ded commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 Author: alice(victoriaCS) Date: Sat Apr 12 11:29:13 2025 +0300 code: вывод разности diff --git a/main.cpp b/main.cpp index 4364dbc..8435233 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'; } Просмотр изменений Добавим изменения в рабочую копию ипосмотрим их с помощью команды git diff vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index 8435233..f372c78 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'; } В качестве первой строки мы видим входные данные команды для сравнения файлов; Далее идёт заголовок с легендой изменения, место изменённого кода и изменённая функция; На следующей строке идут строки вокруг изменённой части, удалённые и добавленные строки Откат изменений Вносим изменения в код, а потом откатываем их до состояния в определённом коммите с помощью команды git reset vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: вывод произведения' [main db14ba7] code: вывод произведения 1 file changed, 2 insertions(+), 1 deletion(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at daa19f7 code: игнорирование бинарных файлов vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git checkout HEAD -- main.cpp Обмен кодом через удаленное хранилище Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH, поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ ssh-keygen Generating public/private ed25519 key pair. Enter file in which to save the key (/c/Users/vikkt/.ssh/id_ed25519): /c/Users/vikkt/.ssh/id_ed25519 /c/Users/vikkt/.ssh/id_ed25519 already exists. Overwrite (y/n)? y Enter passphrase for "/c/Users/vikkt/.ssh/id_ed25519" (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/vikkt/.ssh/id_ed25519 Your public key has been saved in /c/Users/vikkt/.ssh/id_ed25519.pub The key fingerprint is: SHA256:tmrCLoV3ZXGGKh5ghV4DQFBi3IazgCgZ5K4Y0ZSRFdQ vikkt@Vika The key's randomart image is: +--[ED25519 256]--+ |%OBX=o . | |OB*oo E o o | |++=o . . + | |.o. o . o | |.. o o oS | |o.. + .. . | |o + . . | | . o .. | | o.o. | +----[SHA256]-----+ Также после этого отображаются уникальные данные ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ eval $(ssh-agent -s) Agent pid 3805 vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ ssh-add Identity added: /c/Users/vikkt/.ssh/id_ed25519 (vikkt@Vika) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKlnFWPunMrqRAWni8+iXhJyBNMBiEjuWoOdZl5VQer vikkt@Vika Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_ed25519 Теперь добавим репозитарий, на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git remote add origin git@uit.mpei.ru:ChernyukVS/cs-lab02.git vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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.99 KiB | 156.00 KiB/s, done. Total 15 (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:ChernyukVS/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git remote -v origin git@uit.mpei.ru:ChernyukVS/cs-lab02.git (fetch) origin git@uit.mpei.ru:ChernyukVS/cs-lab02.git (push) Получение проекта с сервера К работе присоединяется Боб. Клонируем репозитарий с помощью git clone vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob $ git clone http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git Cloning into 'cs-lab02'... remote: Enumerating objects: 15, done. remote: Counting objects: 100% (15/15), done. remote: Compressing objects: 100% (13/13), 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. Настроим хранилище Боба vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git config user.name 'bob(victoriaCS)' vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git config user.email 'CherniukVS@mpei.ru' Совместная работа над проектом без конфликтов правок Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git commit -m 'code: вывод произведения' [main 552905a] code: вывод произведения 1 file changed, 2 insertions(+), 1 deletion(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 418 bytes | 418.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 http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git daa19f7..552905a main -> main Обновляем версию программы у Алисы. Для этого используем загрузку изменений с помощью git fetch. А затем переносим ветку main на скаченную версию с помощью git pull , который вызывает git fetch, поэтому его ручной вызов необязателен vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 398 bytes | 99.00 KiB/s, done. From uit.mpei.ru:ChernyukVS/cs-lab02 daa19f7..552905a main -> origin/main vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log --oneline --decorate --all --graph * 552905a (origin/main, origin/HEAD) code: вывод произведения * daa19f7 (HEAD -> main) code: игнорирование бинарных файлов * a300ded code: вывод разности * 0b91b8d code: вывод суммы * 5a6462f build: add project file * 3e087e4 code: заготовка программы vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git pull --ff-only Updating daa19f7..552905a Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Алиса вносит новое изменение, а Боб скачивает его. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: вывод деления' [main 63aa70e] code: вывод деления 1 file changed, 2 insertions(+), 1 deletion(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 404 bytes | 404.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:ChernyukVS/cs-lab02.git 552905a..63aa70e main -> main vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 384 bytes | 48.00 KiB/s, done. From http://uit.mpei.ru/git/ChernyukVS/cs-lab02 552905a..63aa70e main -> origin/main vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git pull --ff-only Updating 552905a..63aa70e Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Разрешение конфликтов правок при совместной работе Теперь Алисаи Боб добавляют в программу печать максимума и минимума, а затем пробуют загрузить изменения репозитарий на сервере. Вывод максимума vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git commit -m 'code: вывод максимума' [main 05368e9] code: вывод максимума 1 file changed, 2 insertions(+), 1 deletion(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 412 bytes | 412.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:ChernyukVS/cs-lab02.git 63aa70e..05368e9 main -> main Вывод минимума vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git commit -m 'code: вывод минимума' [main 13fa6fe] code: вывод минимума 1 file changed, 2 insertions(+), 1 deletion(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git push To http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'http://uit.mpei.ru/git/ChernyukVS/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. Загрузить изменения на сервер получается только у Алисы, потому что Боб пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub. Загрузим версию с сервера. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 392 bytes | 39.00 KiB/s, done. From http://uit.mpei.ru/git/ChernyukVS/cs-lab02 63aa70e..05368e9 main -> origin/main vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git log --oneline --decorate --all --graph * 13fa6fe (HEAD -> main) code: вывод минимума | * 05368e9 (origin/main, origin/HEAD) code: вывод максимума |/ * 63aa70e code: вывод деления * 552905a code: вывод произведения * daa19f7 code: игнорирование бинарных файлов * a300ded code: вывод разности * 0b91b8d code: вывод суммы * 5a6462f build: add project file * 3e087e4 code: заготовка программы Ветка main раздвоилась Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью команды git rebase. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply 13fa6fe... 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 13fa6fe... code: вывод минимума Команда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase с помощью флага - continue. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main|REBASE 1/1) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main|REBASE 1/1) $ git rebase --continue Successfully rebased and updated refs/heads/main. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) $ git log --oneline --decorate 0acbd36 (HEAD -> main, origin/main, origin/HEAD) code: вывод минимума 05368e9 code: вывод максимума 63aa70e code: вывод деления 552905a code: вывод произведения daa19f7 code: игнорирование бинарных файлов a300ded code: вывод разности 0b91b8d code: вывод суммы 5a6462f build: add project file 3e087e4 code: заготовка программы Отправим изменения на сервер. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 417 bytes | 417.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 http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git 05368e9..0acbd36 main -> main Использование веток. Алиса создаёт новую ветку с помощью для изменения типа переменных на вещественный. Начинает с коммита, когда добавлена печать максимума. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git branch double vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git checkout double Switched to branch 'double' vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (double) $ git add main.cpp vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (double) $ git commit -m 'code: изменён тип переменных с int на double' [double 7d94bd6] code: изменён тип переменных с int на double 1 file changed, 1 insertion(+), 1 deletion(-) Затем переключается на ветку main и сихронизирует её. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/lab02/alice/project (double) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 397 bytes | 56.00 KiB/s, done. From uit.mpei.ru:ChernyukVS/cs-lab02 05368e9..0acbd36 main -> origin/main vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git log --oneline --decorate --all --graph * 7d94bd6 (double) code: изменён тип переменных с int на double | * 0acbd36 (origin/main, origin/HEAD) code: вывод минимума |/ * 05368e9 (HEAD -> main) code: вывод максимума * 63aa70e code: вывод деления * 552905a code: вывод произведения * daa19f7 code: игнорирование бинарных файлов * a300ded code: вывод разности * 0b91b8d code: вывод суммы * 5a6462f build: add project file * 3e087e4 code: заготовка программы Получаем одновременно две ветки. Объединяем их с помощью команды git merge. Вносим последние изменения и загружаем на GitHub. vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) $ git merge double Auto-merging main.cpp Fast-forward main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/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), 751 bytes | 751.00 KiB/s, done. Total 6 (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:ChernyukVS/cs-lab02.git 0acbd36..8903c62 main -> main