# Отчет по лабораторной работе № 2 «Система контроля версий Git» Выполнил: Иванов Д. А. \ Группа: А-01-23 \ Проверил: Козлюк Д. А. 1. Создал в именной папке каталог 2lab 2. Создал каталоги `Alice`, `Bob`, внутри каталога `Alice` создал каталог `project`: ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab $ mkdir Alice justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab $ mkdir Bob justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab $ cd Alice justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice $ mkdir project justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice $ cd project justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project $ cd .. justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice $ cd project ``` 3. Инициализировал репозитарий ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project $ git init Initialized empty Git repository in C:/Users/justygrass/Desktop/2lab/Alice/project/.git/ ``` 4. Добавил данные email и инициалы для `Alice` ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project $ git config user.name 'Alice (IvanovDA)' justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project $ git config user.email 'IvanovDanAn@mpei.ru' ``` 5. Просмотр статуса репозитария ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git status On branch master No commits yet Untracked files: (use "git add ..." to include in what will be committed) .vs/ project.sln project.vcxproj project.vcxproj.filters project.vcxproj.user project/ main.cpp nothing added to commit but untracked files present (use "git add" to track) ``` Можно увидеть то, на какой ветке мы находимся, и перечень файлов, которые ещё не были занесены в git и отсутствие коммитов 6. Добавим в git файл `main.cpp` и сразу же проверим статус ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git add main.cpp justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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) .vs/ project.sln project.vcxproj project.vcxproj.filters project.vcxproj.user project/ justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -m 'code: заготовка программы' [master (root-commit) fcbb7f4] code: заготовка программы 1 file changed, 7 insertions(+) create mode 100644 main.cpp ``` `git status` показывает, что в следующий коммит войдет `main.cpp` 7. Закоммитим данное добавление ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -m 'code: заготовка программы' [master (root-commit) fcbb7f4] code: заготовка программы 1 file changed, 7 insertions(+) create mode 100644 main.cpp ``` 8. Добавим файл проекта в `git` и сразу же добавим коммит ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git add project.sln justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -m 'build: добавление файла проекта' [master 7c497ed] build: добавление файла проекта 1 file changed, 31 insertions(+) create mode 100644 project.sln ``` 9. Изменим `main.cpp`, но не добавим его в `git`, проверим статус репозитария ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git status On branch master 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) .vs/ project.vcxproj project.vcxproj.filters project.vcxproj.user project/ no changes added to commit (use "git add" and/or "git commit -a") ``` Мы также остались на ветке `master`, и также показываются файлы, созданные Visual Studio, которые ещё не были занесены в `git`. Также можно заметить, что `main.cpp` был `modified` и должен быть добавлен заново. 9. Добавим `main.cpp` снова и коммит, сообщающий о добавление тела функции ``` ustygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git add main.cpp justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -m "code: добавления тела функции" [master f9a4e3d] code: добавления тела функции 1 file changed, 3 insertions(+), 1 deletion(-) ``` 10. Добавим ещё дополнительные изменения в функцию и попробуем разные способы добавления коммитов ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git add -u justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -m "code: добавление вывода суммы A и B" [master 40c11d1] code: добавление вывода суммы A и B 1 file changed, 1 insertion(+) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -a -m "code: добавление вывода разности A и B" [master 822e111] code: добавление вывода разности A и B 1 file changed, 2 insertions(+), 1 deletion(-) ``` 11. Добавим файл `.gitignore` для того, чтобы не вылезали сообщения о файлах при команде `git status` ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git add .gitignore justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git commit -m "git: добавление игнорирование файлов" [master ead7cbd] git: добавление игнорирование файлов 1 file changed, 5 insertions(+) create mode 100644 .gitignore ``` 12. Просмотр коммитов 3 разными способами, указзанными в руководстве ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git log commit ead7cbd6046048e7caeadb610eb13e6d9d83b2db (HEAD -> master) Author: Alice(IvanovDA) Date: Sun Mar 31 20:49:20 2024 +0300 git: добавление игнорирование файлов commit 822e1116aeac88d14a6e7f366ce94f69e85021fe Author: Alice(IvanovDA) Date: Sun Mar 31 20:41:45 2024 +0300 code: добавление вывода разности A и B commit 40c11d18429373631314da1617a6cfbf6baa289f Author: Alice(IvanovDA) Date: Sun Mar 31 20:40:33 2024 +0300 code: добавление вывода суммы A и B commit f9a4e3dac2e1b1a093ccb20f6611dbc2643b8aa8 Author: Alice(IvanovDA) Date: Sun Mar 31 20:39:06 2024 +0300 code: добавления тела функции commit 7c497ed7031a3d915d7d1b86909c3437af25ede7 Author: Alice(IvanovDA) Date: Sun Mar 31 20:34:05 2024 +0300 build: добавление файла проекта commit fcbb7f47c62ef3082b670a031d6938ff92757230 Author: Alice(IvanovDA) Date: Sun Mar 31 20:25:37 2024 +0300 code: заготовка программы justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git log --stat commit ead7cbd6046048e7caeadb610eb13e6d9d83b2db (HEAD -> master) Author: Alice(IvanovDA) Date: Sun Mar 31 20:49:20 2024 +0300 git: добавление игнорирование файлов .gitignore | 5 +++++ 1 file changed, 5 insertions(+) commit 822e1116aeac88d14a6e7f366ce94f69e85021fe Author: Alice(IvanovDA) Date: Sun Mar 31 20:41:45 2024 +0300 code: добавление вывода разности A и B main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 40c11d18429373631314da1617a6cfbf6baa289f Author: Alice(IvanovDA) Date: Sun Mar 31 20:40:33 2024 +0300 code: добавление вывода суммы A и B main.cpp | 1 + 1 file changed, 1 insertion(+) commit f9a4e3dac2e1b1a093ccb20f6611dbc2643b8aa8 Author: Alice(IvanovDA) Date: Sun Mar 31 20:39:06 2024 +0300 code: добавления тела функции main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git log --oneline --decorate ead7cbd (HEAD -> master) git: добавление игнорирование файлов 822e111 code: добавление вывода разности A и B 40c11d1 code: добавление вывода суммы A и B f9a4e3d code: добавления тела функции 7c497ed build: добавление файла проекта fcbb7f4 code: заготовка программы justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git log --oneline --decorate --all --graph * ead7cbd (HEAD -> master) git: добавление игнорирование файлов * 822e111 code: добавление вывода разности A и B * 40c11d1 code: добавление вывода суммы A и B * f9a4e3d code: добавления тела функции * 7c497ed build: добавление файла проекта * fcbb7f4 code: заготовка программы ``` 13. Просмотрим коммиты, в которых встречалось `build:` ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git log --grep "build:" commit 7c497ed7031a3d915d7d1b86909c3437af25ede7 Author: Alice(IvanovDA) Date: Sun Mar 31 20:34:05 2024 +0300 build: добавление файла проекта ``` А также просмотрим коммиты, связанные с файлом проекта ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git log -- project.sln commit 7c497ed7031a3d915d7d1b86909c3437af25ede7 Author: Alice(IvanovDA) Date: Sun Mar 31 20:34:05 2024 +0300 build: добавление файла проекта ``` 14. Заметил, что ветка все ещё называется `master`, переименую ветку ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (master) $ git branch -m main ``` 15. Просмотрим предпоследний коммит, для этого подойдут 3 команды, но вывод будет указан единожды ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git show HEAD~1 justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git show main~1 justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git show 822e111 commit 822e1116aeac88d14a6e7f366ce94f69e85021fe Author: Alice(IvanovDA) Date: Sun Mar 31 20:41:45 2024 +0300 code: добавление вывода разности A и B diff --git a/main.cpp b/main.cpp index 55182f2..a1f2e7d 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,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; } \ No newline at end of file ``` 16. Добавим в функцию вывод произведения, но пока что не будем коммитить, просмотрим изменения ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index a1f2e7d..fe5b162 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,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; } \ No newline at end of file ``` Можно заметить, что у новых и старых строчек появились символы `-` и `+`, что показывают что строчка исчезла и добавилась соответственно 17. Просмотрим разницу между самым первым коммитов и тем, что добавлял вывод разницы чисел ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git diff fcbb7f4 822e111 diff --git a/main.cpp b/main.cpp index 86a6d86..a1f2e7d 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,10 @@ using namespace std: int main(){ - cout << 'I love Paris'; + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } \ No newline at end of file diff --git a/project.sln b/project.sln new file mode 100644 index 0000000..9304397 --- /dev/null +++ b/project.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "project", "project.vcxproj", "{77C4033C-66D6-4F32-8063-AF97F34F2C9F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 ``` Можно заметить, что за все время убралась строчка с выводом сообщения `I love Paris`, которая находилась изначально в файле, и добавились все оставшиеся строчки, принадлежащие текущему телу функции 18. Закоммитим добавление вывода произведения ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git commit -a -m "code: добавление вывода произведения A и В" [main e56c823] code: добавление вывода произведения A и В 1 file changed, 2 insertions(+), 1 deletion(-) ``` 19. Сделаем откат к предыдущему коммиту ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git reset --hard HEAD~1 HEAD is now at ead7cbd git: добавление игнорирование файлов ``` 20. Добавим над функцией `main()` любой комментарий, после чего сразу же совершим откат к состоянию последнего коммита ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git checkout HEAD -- main.cpp ``` 21. В виду того, что я проживаю в общежитии и у меня были проблемы с подключением в сервису VPN МЭИ, пришлось работать с HTTTP вместо SSH ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git remote add origin http://uit.mpei.ru/git/IvanovDanAn/cs-lab02.git justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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: 18, done. Counting objects: 100% (18/18), done. Delta compression using up to 16 threads Compressing objects: 100% (17/17), done. Writing objects: 100% (18/18), 2.50 KiB | 2.50 MiB/s, done. Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) remote: . Processing 1 references remote: Processed 1 references in total To http://uit.mpei.ru/git/IvanovDanAn/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. ``` 22. Окроем GIT на машине Боба. Клонируем репозитарий с облака в папку Боба строителя, после чего перейдем в папку проекта. Случайно упустил момент именования папки проекта, поэтому вместо `project` далее будет указан каталог `cs-lab02` ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob $ git clone http://uit.mpei.ru/git/IvanovDanAn/cs-lab02.git Cloning into 'cs-lab02'... remote: Enumerating objects: 18, done. remote: Counting objects: 100% (18/18), done. remote: Compressing objects: 100% (17/17), done. remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (18/18), done. Resolving deltas: 100% (2/2), done. justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob $ cd cs-lab02/ ``` 23. Повторим те же действия с добавлением почты и имени Бобу ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git config user.name 'Bob (IvanovDA)' justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git config user.email 'IvanovDanAn@mpei.ru' ``` 24. Добавим вывод частного от лица боба и закоммитим вывод произведения, после чего сразу отправим изменения ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git commit -a -m "code: добавление вывода произведения A и В" [main cbc1285] code: добавление вывода произведения A и В 1 file changed, 2 insertions(+), 1 deletion(-) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (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 16 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 446 bytes | 446.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/IvanovDanAn/cs-lab02.git ead7cbd..cbc1285 main -> main ``` 25. Обновим проект на машине Алисы ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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), 426 bytes | 142.00 KiB/s, done. From http://uit.mpei.ru/git/IvanovDanAn/cs-lab02 ead7cbd..cbc1285 main -> origin/main justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git log --oneline --decorate --all --graph * cbc1285 (origin/main) code: добавление вывода произведения A и В * ead7cbd (HEAD -> main) git: добавление игнорирование файлов * 822e111 code: добавление вывода разности A и B * 40c11d1 code: добавление вывода суммы A и B * f9a4e3d code: добавления тела функции * 7c497ed build: добавление файла проекта * fcbb7f4 code: заготовка программы justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git pull --ff-only Updating ead7cbd..cbc1285 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ``` После первой команды можно увидеть, что состояние проекта отстает на один коммит, поэтому сразу же пододвинем ветку Алисы к текущей 26. С машины Алисы сделаем вывод частного чисел, закоммитим и отправим измененные данные на сервер ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git commit -a -m "code: добавление вывода частного А и В" [main 57ab0f9] code: добавление вывода частного А и В 1 file changed, 2 insertions(+), 1 deletion(-) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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. 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 16 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 445 bytes | 445.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/IvanovDanAn/cs-lab02.git cbc1285..57ab0f9 main -> main ``` 27. На машину Боба загрузим изменения Алисы ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (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), 425 bytes | 32.00 KiB/s, done. From http://uit.mpei.ru/git/IvanovDanAn/cs-lab02 cbc1285..57ab0f9 main -> origin/main justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git pull --ff-only Updating cbc1285..57ab0f9 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ``` 28. На машине Алисы добавим в программу вывод максимума, после чего закоммитим и отправим на сервер, затем сделаем на машине Боба вывод минимума и тоже закоммитим, после чего попытаемся загрузить изменения на сервер ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git commit -a -m "code: добавление вывода максимума" [main 749a41e] code: добавление вывода максимума 1 file changed, 2 insertions(+), 1 deletion(-) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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. 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 16 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 452 bytes | 452.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/IvanovDanAn/cs-lab02.git 57ab0f9..749a41e main -> main justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git commit -a -m "code: добавление вывода минимального значения" [main e312366] code: добавление вывода минимального значения 1 file changed, 2 insertions(+), 1 deletion(-) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (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. To http://uit.mpei.ru/git/IvanovDanAn/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'http://uit.mpei.ru/git/IvanovDanAn/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. ``` Как было сказано до этого, я проживаю в общежитии, поэтому соединение оставляет желать лучшего, из-за чего появляется сообщение о слишком долгом ответе `>2000ms` Выдвинуть изменения Боба не получилось, вышла ошибка, в виду того, что программа Боба не соответствовала той, что присутствовала на сервере 29. Просмотрим историю коммитов, но перед этим загрузим их ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (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), 432 bytes | 54.00 KiB/s, done. From http://uit.mpei.ru/git/IvanovDanAn/cs-lab02 57ab0f9..749a41e main -> origin/main justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git log --oneline --decorate e312366 (HEAD -> main) code: добавление вывода минимального значения 57ab0f9 code: добавление вывода частного А и В cbc1285 code: добавление вывода произведения A и В ead7cbd git: добавление игнорирование файлов 822e111 code: добавление вывода разности A и B 40c11d1 code: добавление вывода суммы A и B f9a4e3d code: добавления тела функции 7c497ed build: добавление файла проекта fcbb7f4 code: заготовка программы ``` Нетрудно заметить, что появилось две ветки main 30. Попытаемся переместить коммит Боба поверх коммита Алисы ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply e312366... 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 e312366... code: добавление вывода минимального значения ``` К сожалению нам не дают этого сделать, поэтому придется вручную привести код Боба к тому, чтобы он совпадал с кодом Алисы 31. Нужно продолжить оборванную команду `rebase`, но прежде добавить измененный Бобом файл ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main|REBASE 1/1) $ git add main.cpp justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (main|REBASE 1/1) $ git rebase --continue Successfully rebased and updated refs/heads/main. justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Bob/cs-lab02 (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 16 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 468 bytes | 468.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/IvanovDanAn/cs-lab02.git 749a41e..b17facd main -> main ``` 32. Перейдем на ветку Алисы и создадим новую ветку для изменения типа переменных - ветку `double` ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git branch double justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git checkout double Switched to branch 'double' ``` Сразу же перейдем на новую ветку 33. Поменяем код с изменением типа данных, добавим файл и закоммитим изменения ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (double) $ git commit -a -m "code: изменение типа данных на double" [double c27acd9] code: изменение типа данных на double 1 file changed, 1 insertion(+), 1 deletion(-) ``` 34. Перейдем на ветку `main`, синхронизируем репозитарий и просмотрим историю ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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), 448 bytes | 49.00 KiB/s, done. From http://uit.mpei.ru/git/IvanovDanAn/cs-lab02 749a41e..b17facd main -> origin/main justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git pull --ff-only Updating 749a41e..b17facd Fast-forward main.cpp | 1 + 1 file changed, 1 insertion(+) justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git log --oneline --decorate --all --graph * c27acd9 (double) code: изменение типа данных на double | * b17facd (HEAD -> main, origin/main) code: добавление вывода минимального значения |/ * 749a41e code: добавление вывода максимума * 57ab0f9 code: добавление вывода частного А и В * cbc1285 code: добавление вывода произведения A и В * ead7cbd git: добавление игнорирование файлов * 822e111 code: добавление вывода разности A и B * 40c11d1 code: добавление вывода суммы A и B * f9a4e3d code: добавления тела функции * 7c497ed build: добавление файла проекта * fcbb7f4 code: заготовка программы ``` Можно заметить, что ветки Алисы и Боба совпадают, но хэш `c27acd9` последнего коммита принадлежит ветке `double` 35. Сольем две ветки: `main` и `double` ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/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(-) ``` 36. Отправим измения ветки на сервер ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git push Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 16 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 773 bytes | 773.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 http://uit.mpei.ru/git/IvanovDanAn/cs-lab02.git b17facd..b63c04f main -> main ``` 37. Просмотрим историю всех веток репозитария ``` justygrass@DESKTOP-GQCR3HF MINGW64 ~/Desktop/2lab/Alice/project (main) $ git log --oneline --decorate --all --graph * b63c04f (HEAD -> main, origin/main) merge: слияние веток double с main |\ | * c27acd9 (double) code: изменение типа данных на double * | b17facd code: добавление вывода минимального значения |/ * 749a41e code: добавление вывода максимума * 57ab0f9 code: добавление вывода частного А и В * cbc1285 code: добавление вывода произведения A и В * ead7cbd git: добавление игнорирование файлов * 822e111 code: добавление вывода разности A и B * 40c11d1 code: добавление вывода суммы A и B * f9a4e3d code: добавления тела функции * 7c497ed build: добавление файла проекта * fcbb7f4 code: заготовка программы ``` Предпоследние два коммита находятся в другой ветке, ну а последний - слияние веток