Отчёт по лабораторной работе №2. "Система контроля версий Git" Выполнила: Кузьменко Е.А. Группа: А-02-23 Проверил: Примечание: работа выполнялась на Windows. 1.Создала на рабочем столе каталог lab2 и запустила Git Bash, открылось приглашение вида: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2 $ 2.В ходе работы будем имитировать проект с двумя участниками: Алисой и Бобом. Компьютеры Алисы и Боба имитируют папки: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2 $ mkdir alice Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2 $ mkdir bob Тем самым создала два каталога alice и bob. 3.Далее, я перешла в каталог alice: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2 $ cd alice Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice $ 4.Затем в этом каталоге создала папку project и перешла в неё: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice $ mkdir project Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice $ cd project Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project $ 4.1.С помощью команды cd .. я перешла на уровень выше, а после вернулась обратно в каталог project: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project $ cd .. Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice $ cd project Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project $ 5.Инициализирую репозиторий в текущем каталоге(теперь GIT следит за всеми папками и файлами, что здесь находятся): Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project $ git init Initialized empty Git repository in C:/Users/Admin/Desktop/lab2/alice/project/.git/ Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ Появилась ветка master(по умолчанию), в дальнейшем я поменяю её на main(после первого коммита). 6.Настроила репозиторий Алисы, чтобы коммиты были от ее имени: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git config user.name 'Alice(KuzmenkoEA)' Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git config user.email 'KuzmenkoYA@mpei.ru' 7.Запускаю CodeBlocks и создаю проект в репозитории Алисы. /Desktop/lab2/alice/project/project.cbp Возвращаюсь в Git Blash, просматриваю состояние рабочей копии: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git status On branch master No commits yet Untracked files: (use "git add ..." to include in what will be committed) \\ Показывает неотслеживаемые файлы в каталоге project bin/ main.cpp obj/ project.cbp nothing added to commit but untracked files present (use "git add" to track) 8.Занесём файл main.cpp под Git, то есть начнём отслеживать файл. Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git add main.cpp 9.Проверила состояние ещё раз, можно заметить, как пропал main.cpp: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git status On branch master 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 10.Выполнила коммит с файлом main.cpp и коротким сообщением: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git commit -m 'code: preparation of the program' [master (root-commit) 1642893] code: preparation of the program 1 file changed, 9 insertions(+) create mode 100644 main.cpp 11.После создания первого коммита меняю имя ветки на main: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (master) $ git branch -m main Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) //Изменилась ветка $ 12.Занесла файл project.cbp под GIT и выполнила с ним коммит: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/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 Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'build: added a file project' [main dd98c9c] build: added a file project 1 file changed, 40 insertions(+) create mode 100644 project.cbp 13.В CodeBlocks заменила тело функции main() на ввод двух чисел: { cout << "Enter A and B"; int a, b; cin >> a >> b; return 0; } 14.Проверим состояние копии, когда мы внесли изменения: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/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") Можно заметит, что после изменения "new file: main.cpp" изменился на "modified: main.cpp", то есть в файле произошли доработки. 15.1.Закоммитим изменения на примере нахождения суммы a и b. Заменила тело функции на нахождение суммы: { cout << "Enter A and B"; int a, b; cin >> a >> b; cout << "A + B =" << a + b << '\n'; return 0; } 15.2.Сначала выбрала файл, изменения которых должны войти в коммит, затем сделала коммит(1 способ): Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'code: add sum' [main 409a5e9] code: add sum 1 file changed, 4 insertions(+), 1 deletion(-) 16.1.Закоммитим изменения на примере нахождения разности a и b. Заменила тело функции на нахождение разности: { cout << "Enter A and B"; int a, b; cin >> a >> b; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; return 0; } 16.2.Добавила в индекс все изменения, затем сделала коммит(2 способ): Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add -u Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'code: add dif' [main 814aee8] code: add dif 1 file changed, 2 insertions(+), 1 deletion(-) 17.Можно заметить, что в выводе команды git status все время присутствуют каталоги bin/ и obj/: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) bin/ obj/ nothing added to commit but untracked files present (use "git add" to track) Указала Git игнорировать присутствие каталогов bin и obj. Для этого в CodeBlocks создала новый файл под названием ".gitignore" (File → New... → Empty) и записала в него строки: /bin /obj После этого шага проверила статус: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/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) Каталоги пропали, то есть они занесены в список игнорируемых. 18.Внесла .gitignore в GIT. Создала коммит: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add .gitignore Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'git: ignor' [main 01cb623] git: ignor 1 file changed, 2 insertions(+) create mode 100644 .gitignore 19.Работа с журналом репозитория. Просмотрела все коммиты по теме build: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git log --grep "build:" commit dd98c9c1c9da2bc34db09e8bc10dc929c4e79354 Author: Alice(KuzmenkoEA) Date: Sun Apr 7 20:52:08 2024 +0300 build: added a file project Просмотрела все коммиты, затрагивающие project.cbp: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git log -- project.cbp commit dd98c9c1c9da2bc34db09e8bc10dc929c4e79354 Author: Alice(KuzmenkoEA) Date: Sun Apr 7 20:52:08 2024 +0300 build: added a file project Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git show 814aee8 commit 814aee835047c9092e8aa347373299a6203029e6 Author: Alice(KuzmenkoEA) Date: Sun Apr 7 21:11:12 2024 +0300 code: add dif diff --git a/main.cpp b/main.cpp index 103c153..cc5dfbf 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'; return 0; } 20.Просмотрела препоследний коммит тремя способами: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git show HEAD~1 commit 814aee835047c9092e8aa347373299a6203029e6 Author: Alice(KuzmenkoEA) Date: Sun Apr 7 21:11:12 2024 +0300 code: add dif diff --git a/main.cpp b/main.cpp index 103c153..cc5dfbf 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'; return 0; } Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git show main~1 commit 814aee835047c9092e8aa347373299a6203029e6 Author: Alice(KuzmenkoEA) Date: Sun Apr 7 21:11:12 2024 +0300 code: add dif diff --git a/main.cpp b/main.cpp index 103c153..cc5dfbf 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'; return 0; } Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git show 814aee8 commit 814aee835047c9092e8aa347373299a6203029e6 Author: Alice(KuzmenkoEA) Date: Sun Apr 7 21:11:12 2024 +0300 code: add dif diff --git a/main.cpp b/main.cpp index 103c153..cc5dfbf 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'; return 0; } 21.Измению тело фукнции main() на вывод произведения: int main() { cout << "Enter A and B"; int a, b; cin >> a >> b; cout << "A * B = " << a * b << '\n'; return 0; } Выполню коммит изменения в рабочей копии: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'code: add pro' [main d2345e4] code: add pro 1 file changed, 1 insertion(+), 2 deletions(-) Вернулась к предыдущему коммиту(отменила текущий) Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at 01cb623 git: ignor В CodeBlocks видны изменения: текст программы вернулся к тому состоянию, в котором он был: #include using namespace std; int main() { cout << "Enter A and B"; int a, b; cin >> a >> b; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; return 0; } 22.Добавила над функцией main() комментарий: // you may type whatever you want Уберала эти изменения в main.cpp, откатив этот файл к состоянию в последнем коммите (HEAD): Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git checkout HEAD -- main.cpp 23.Далее, я зарегистрировалась на Git УИТ под именем KuzmenkoEA. В Git создала пару ключей: ssh-keygen Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ ssh-keygen Generating public/private ed25519 key pair. Enter file in which to save the key (/c/Users/Admin/.ssh/id_ed25519): Created directory '/c/Users/Admin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/Admin/.ssh/id_ed25519 Your public key has been saved in /c/Users/Admin/.ssh/id_ed25519.pub The key fingerprint is: SHA256:5k9Hb6u0N7DjjrGML3YFYC/r+ZKl99z1A8QnVeFQCtQ Admin@DESKTOP-GFU1N7D The key's randomart image is: +--[ED25519 256]--+ | .o...o+| | o .E+. | | . o .... | | . o + . | | So .o o | | o. ..oo | | ..=o.oo+ .| | O=oBo+o+.| | ..BB+B+o.o| +----[SHA256]-----+ Запустила агент: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ eval $(ssh-agent -s) Agent pid 499 Загрузила ключ: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ ssh-add Enter passphrase for /c/Users/Admin/.ssh/id_ed25519: Identity added: /c/Users/Admin/.ssh/id_ed25519 (Admin@DESKTOP-GFU1N7D) Отобразила открытый ключ: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOCbGQz2gj0mbzUaeQPc4ptAcnxjaSt9cJ1pgcdN6kEk Admin@DESKTOP-GFU1N7D Перешла в Git УИТ и добавила открытый ключ в список открытых ключей своей учетной записи. 24.Создала новый репозиторый(Git УИТ) cs-lab02. После создания пустого репозитория пишу команды, чтобы связать локальный репозиторый с удалённым: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git remote add origin http://uit.mpei.ru/git/KuzmenkoEA/cs-lab02.git Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git push -u origin main warning: auto-detection of host provider took too long (>2000ms) warning: see https://aka.ms/gcm/autodetect for more information. warning: auto-detection of host provider took too long (>2000ms) warning: see https://aka.ms/gcm/autodetect for more information. Enumerating objects: 15, done. Counting objects: 100% (15/15), done. Delta compression using up to 2 threads Compressing objects: 100% (13/13), done. Writing objects: 100% (15/15), 1.90 KiB | 74.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 http://uit.mpei.ru/git/KuzmenkoEA/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. 25.Открываю новый терминал в каталоге bob. Получаю проект с сервера: $ git clone http://uit.mpei.ru/git/KuzmenkoEA/cs-lab02.git project Cloning into 'project'... 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. Теперь в каталоге bob появился project, в котором склонированны все файлы с сервера. Перешла в каталог project: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob $ cd project 26.Настроила репозиторий Боба, чтобы коммиты были от его имени: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git config user.name 'Bob(KuzmenkoEA)' Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git config user.email 'KuzmenkoYA@mpei.ru' 27.В CodeBlocks меняю тело функции main()(bob -> project) на вывод произведения: #include using namespace std; int main() { cout << "Enter A and B"; int a, b; cin >> a >> b; cout << "A * B = " << a * b << '\n'; return 0; Добавляю коммит: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git commit -m 'code: add pro' [main 43e5097] code: add pro 1 file changed, 1 insertion(+), 2 deletions(-) И отправляю коммит на сервер: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git push warning: auto-detection of host provider took too long (>2000ms) warning: see https://aka.ms/gcm/autodetect for more information. warning: auto-detection of host provider took too long (>2000ms) warning: see https://aka.ms/gcm/autodetect for more information. Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 2 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 385 bytes | 128.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/KuzmenkoEA/cs-lab02.git 01cb623..43e5097 main -> main 28.В каталоге alice/project выполнила загрузку изменений: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/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), 365 bytes | 4.00 KiB/s, done. From http://uit.mpei.ru/git/KuzmenkoEA/cs-lab02 01cb623..43e5097 main -> origin/main 29.Посомтрела историю всех веток: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git log --oneline --decorate --all --graph * 43e5097 (origin/main) code: add pro * 01cb623 (HEAD -> main) git: ignor * 814aee8 code: add dif * 409a5e9 code: add sum * dd98c9c build: added a file project * 1642893 code: preparation of the program Подвинула ветку к скачанной версии: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git pull --ff-only Updating 01cb623..43e5097 Fast-forward main.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 30.Изменила тело функции main() на вывод деления чисел: #include using namespace std; int main() { cout << "Enter A and B"; int a, b; cin >> a >> b; cout << "A / B = " << a / b << '\n'; return 0; } Выполнила коммит: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'code: add div' [main 82a5b92] code: add div 1 file changed, 1 insertion(+), 1 deletion(-) Отправила коммит на сервер: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git push warning: auto-detection of host provider took too long (>2000ms) warning: see https://aka.ms/gcm/autodetect for more information. Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 2 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 385 bytes | 128.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/KuzmenkoEA/cs-lab02.git 43e5097..82a5b92 main -> main 31.В терминале bob получила новую версию: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/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), 365 bytes | 1024 bytes/s, done. From http://uit.mpei.ru/git/KuzmenkoEA/cs-lab02 43e5097..82a5b92 main -> origin/main 32.В теле функции main()(каталога alice) изменим: #include using namespace std; int main() { cout << "Enter A and B"; 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; } Добавим коммит: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'code: add sumdifprodiv' [main 4e9d4a7] code: add sumdifprodiv 1 file changed, 4 insertions(+), 1 deletion(-) 33.Изменим тело функции main() (каталог alice) на нахождение максимума: #include using namespace std; int main() { cout << "Enter A and B"; int a, b, maxa; cin >> a >> b; maxa = a + b; if((a - b) > maxa) maxa = a - b; if((a * b) > maxa) maxa = a * b; if((a / b) > maxa) maxa = a / b; cout << "Max = " << maxa; return 0; } Создадим коммит: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git commit -m 'code: add max' [main ad472c7] code: add max 1 file changed, 6 insertions(+), 5 deletions(-) И отправим его на сервер: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git push Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 2 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 929 bytes | 132.00 KiB/s, done. Total 6 (delta 0), 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/KuzmenkoEA/cs-lab02.git 82a5b92..ad472c7 main -> main 34.То же самое проделаем в терминале bob: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git commit -m 'code: add max' [main 77877c2] code: add max 1 file changed, 6 insertions(+), 2 deletions(-) Попытка отправить на сервер: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git push To http://uit.mpei.ru/git/KuzmenkoEA/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'http://uit.mpei.ru/git/KuzmenkoEA/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. Переместим коммит Боба поверх коммита Алисы, то есть поверх origin/main: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply 77877c2... code: add max 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 77877c2... code: add max 35.В CodeBlocks Боба появились места конфликта: #include using namespace std; int main() { cout << "Enter A and B"; int a, b, maxa; cin >> a >> b; <<<<<<< HEAD cout << "A / B = " << a / b << '\n'; ======= maxa = a + b; if((a - b) > maxa) maxa = a - b; if((a * b) > maxa) maxa = a * b; if((a / b) > maxa) maxa = a / b; cout << "Max = " << maxa; >>>>>>> 77877c2 (code: add max) return 0; } После правок и разрешения конфликта добавим файл в индекс и продолжим прерванную операцию: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main|REBASE 1/1) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main|REBASE 1/1) $ git rebase --continue [detached HEAD 6230af8] code: add max 1 file changed, 1 insertion(+) Successfully rebased and updated refs/heads/main. Снова отправим на сервер(в этот раз без ошибки): Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 2 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 386 bytes | 96.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/KuzmenkoEA/cs-lab02.git ad472c7..6230af8 main -> main 36.В каталоге alice создадим ветку double: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git branch double Переключимся на неё: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git checkout double Switched to branch 'double' Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (double) $ В теле функции Заменим тип переменных a и b на double и сделаем коммит: #include using namespace std; int main() { cout << "Enter A and B"; double a, b; int maxa; cin >> a >> b; maxa = a + b; if((a - b) > maxa) maxa = a - b; if((a * b) > maxa) maxa = a * b; if((a / b) > maxa) maxa = a / b; cout << "Max = " << maxa; return 0; } Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (double) $ git add main.cpp Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (double) $ git commit -m 'code: switch double' [double 89eae77] code: switch double 1 file changed, 2 insertions(+), 1 deletion(-) Вернёмся на ветку main: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ Соединим ветки double и main(double в main): Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git merge double Updating ad472c7..89eae77 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 37.Просмотр всех веток: Admin@DESKTOP-GFU1N7D MINGW64 ~/Desktop/lab2/alice/project (main) $ git log --oneline --decorate --all --graph * 89eae77 (HEAD -> main, double) code: switch double * ad472c7 (origin/main) code: add max * 4e9d4a7 code: add sumdifprodiv * 82a5b92 code: add div * 43e5097 code: add pro * 01cb623 git: ignor * 814aee8 code: add dif * 409a5e9 code: add sum * dd98c9c build: added a file project * 1642893 code: preparation of the program Создадим коммит README и отправим на сервер.