# Лабораторная работа №2 ## Задание 1 1. Создание локального репозитория ```bash kuznetsovev@kuznetsovev ~/o/l/task_1> git init Initialized empty Git repository in /home/ ``` 2. Копирование файла `.gitignore` из предыдущей лабораторной работы ```bash kuznetsovev/opi_labs/lab_02/task_1/.git/ kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> cp ../../lab_01/.gitignore .gitignore kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> cat .gitignore **/__pycache__/** ``` 3. Копирование файлов лабораторной работы и помещение из под версионный контроль ```bash kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git add *.py .gitignore kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: .gitignore new file: iarray.py new file: main.py kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git commit -m "COPY: work files" [master (root-commit) cac9920] COPY: work files 3 files changed, 46 insertions(+) create mode 100644 .gitignore create mode 100644 iarray.py create mode 100644 main.py ``` 4. Создание ветки для исправления ошибок ```bash kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git branch fix kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git checkout fix Switched to branch 'fix' kuznetsovev@kuznetsovev ~/o/l/task_1 (fix)> git branch * fix master ``` 5. Переключение на ветку `master` и слияние веток ```bash kuznetsovev@kuznetsovev ~/o/l/task_1 (fix)> git checkout master Switched to branch 'master' kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git merge fix Updating cac9920..2fb14fb Fast-forward iarray.py | 8 +++++++- main.py | 20 ++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) ``` Ошибок при слиянии не было 6. `git log --oneline --graph --all` ```bash kuznetsovev@kuznetsovev ~/o/l/task_1 (master)> git log --oneline --graph --all * 2fb14fb (HEAD -> master, fix) FIX: issue * 09bccaa FIX: error show * f4be2e4 ADD: test case * 2cbe080 ADD: comments * cac9920 COPY: work files ``` Ошибок при слиянии не возникло, тк не было конфликтующих изменений ## Задание 2 1. Распаковка репозитория ```bash kuznetsovev@kuznetsovev ~/o/l/task_2> unzip ~/Desktop/small_fir.zip Archive: /home/kuznetsovev/Desktop/small_fir.zip ... kuznetsovev@kuznetsovev ~/o/l/task_2> mv small_fir/song.txt song.txt kuznetsovev@kuznetsovev ~/o/l/task_2> mv small_fir/.git/ .git/ kuznetsovev@kuznetsovev ~/o/l/task_2 (master)> rm -rf small_fir/ ``` 2. Анализ репозитория 1. Всего в репозитории 2 ветви ```bash kuznetsovev@kuznetsovev ~/o/l/task_2 (master)> git branch -a develop * master ``` Они называются `master` и `develop` 2. Над репозиторием работали 2 автора `Minstrel` и `Songster` 3. В репозитории находится 1 файл `song.txt`. Сначала изменения вносил `Minstrel` в ветке `master`, потом `Songster` в ветке `develop` 3. Слияние ветвей ```bash kuznetsovev@kuznetsovev ~/o/l/task_2 (master)> git merge develop Auto-merging song.txt CONFLICT (content): Merge conflict in song.txt Automatic merge failed; fix conflicts and then commit the result. kuznetsovev@kuznetsovev ~/o/l/task_2 (master|MERGING) [1]> git status On branch master You have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge) Unmerged paths: (use "git add <file>..." to mark resolution) both modified: song.txt no changes added to commit (use "git add" and/or "git commit -a") ``` Содержание `song.txt` во время слияния ```bash kuznetsovev@kuznetsovev ~/o/l/task_2 (master|MERGING)> cat song.txt <<<<<<< HEAD В лесу родилась ёлочка, В лесу она росла. Зимой и летом стройная, Зелёная была. Трусишка зайка серенький Под ёлочкой скакал. Порою волк, сердитый волк, Рысцою пробегал. Чу! Снег по лесу частому Под полозом скрипит. Лошадка мохноногая Торопится, бежит. ======= Метель ей пела песенку: «Спи, ёлочка, бай-бай!» Мороз снежком укутывал: «Смотри, не замерзай!» Везёт лошадка дровенки, На дровнях - мужичок Срубил он нашу ёлочку Под самый корешок. Теперь она, нарядная, На праздник к нам пришла, И много, много радости Детишкам принесла. >>>>>>> develop ``` Содержание `song.txt` для слияния ```bash kuznetsovev@kuznetsovev ~/o/l/task_2 (master|MERGING)> cat song.txt В лесу родилась ёлочка, В лесу она росла. Зимой и летом стройная, Зелёная была. Трусишка зайка серенький Под ёлочкой скакал. Порою волк, сердитый волк, Рысцою пробегал. Чу! Снег по лесу частому Под полозом скрипит. Лошадка мохноногая Торопится, бежит. Метель ей пела песенку: «Спи, ёлочка, бай-бай!» Мороз снежком укутывал: «Смотри, не замерзай!» Везёт лошадка дровенки, На дровнях - мужичок Срубил он нашу ёлочку Под самый корешок. Теперь она, нарядная, На праздник к нам пришла, И много, много радости Детишкам принесла. ``` Закрепление слияния ```bash kuznetsovev@kuznetsovev ~/o/l/task_2 (master|MERGING)> git status On branch master All conflicts fixed but you are still merging. (use "git commit" to conclude merge) Changes to be committed: modified: song.txt kuznetsovev@kuznetsovev ~/o/l/task_2 (master|MERGING)> git commit -m "Merge song.txt" [master d716670] Merge song.txt kuznetsovev@kuznetsovev ~/o/l/task_2 (master)> git status On branch master nothing to commit, working tree clean ``` ## Задание 3 ### Задание 3.1 [Merge request](https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/4) ### Задание 3.2 1. Получение копии репозитория ```bash kuznetsovev@kuznetsovev ~/o/lab_02> git clone gitlab@git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git Cloning into 'iu7-software-engineering-labs-2022-kuznetsovegor'... remote: Enumerating objects: 25, done. remote: Counting objects: 100% (22/22), done. remote: Compressing objects: 100% (20/20), done. remote: Total 25 (delta 5), reused 3 (delta 0), pack-reused 3 Receiving objects: 100% (25/25), 34.63 KiB | 2.31 MiB/s, done. Resolving deltas: 100% (5/5), done. ``` 2. Создание ветви `lab_02_a` и `lab_02_b` ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git branch lab_02_a kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git branch lab_02_b kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git branch lab_02_a lab_02_b * master ``` 3. Добавление `lab_02_a.txt` и `.gitignore` в ветку `lab_02_a` ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git checkout lab_02_a Switched to branch 'lab_02_a' kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> echo "lab_02_a" > lab_02_a.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> echo "*.out" > .gitignore kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> echo "*.exe" >> .gitignore kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> git add *.txt .gitignore kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> git commit -m "lab_02_a" [lab_02_a 6e2c0f5] lab_02_a 2 files changed, 3 insertions(+) create mode 100644 .gitignore create mode 100644 lab_02_a.txt ``` 4. Отправка изменения в удалённый репозиторий и создание `merge request` [A](https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/5) ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> git push --set-upstream origin lab_02_a Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 2 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 362 bytes | 362.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) remote: remote: To create a merge request for lab_02_a, visit: remote: https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/new?merge_request%5Bsource_branch%5D=lab_02_a remote: To git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git * [new branch] lab_02_a -> lab_02_a Branch 'lab_02_a' set up to track remote branch 'lab_02_a' from 'origin'. ``` 5. Добавление `lab_02_b.txt` и `.gitignore` в ветку `lab_02_b` ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_a)> git checkout lab_02_b Switched to branch 'lab_02_b' kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_b)> echo "lab_02_b" > lab_02_b.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_b)> echo "*.o" > .gitignore kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_b)> git add *.txt .gitignore kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_b)> git commit -m "lab_02_b" [lab_02_b 3ee397a] lab_02_b 2 files changed, 2 insertions(+) create mode 100644 .gitignore create mode 100644 lab_02_b.txt ``` 6. Отправка изменения в удалённый репозиторий и создание `merge request` [B](https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/6) ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_b)> git push --set-upstream origin lab_02_b Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 2 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 352 bytes | 352.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) remote: remote: To create a merge request for lab_02_b, visit: remote: https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/new?merge_request%5Bsource_branch%5D=lab_02_b remote: To git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git * [new branch] lab_02_b -> lab_02_b Branch 'lab_02_b' set up to track remote branch 'lab_02_b' from 'origin'. ``` ### Задание 3.3 1. Клонирование репозитория ```bash kuznetsovev@kuznetsovev ~/o/lab_02> git clone gitlab@git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git Cloning into 'iu7-software-engineering-labs-2022-kuznetsovegor'... remote: Enumerating objects: 33, done. remote: Counting objects: 100% (30/30), done. remote: Compressing objects: 100% (19/19), done. remote: Total 33 (delta 6), reused 29 (delta 5), pack-reused 3 Receiving objects: 100% (33/33), 35.19 KiB | 7.04 MiB/s, done. Resolving deltas: 100% (6/6), done. ``` 2. Создание ветки `lab_02_c` и фиксирование файла `test.txt` и отправка в удалённый репозиторий ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git branch lab_02_c kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git checkout lab_02_c Switched to branch 'lab_02_c' kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> vim text.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> jobs Job Group CPU State Command 1 53604 0% stoppedvim text.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> fg 1 fg: No suitable job: 1 kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c) [2]> fg 53604 Send job 1, “vim text.txt” to foreground kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git add text.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git commit -m "lab_02_c 1" [lab_02_c 5ecea80] lab_02_c 1 1 file changed, 9 insertions(+) create mode 100644 text.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git push --set-upstream origin lab_02_c Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 2 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 432 bytes | 144.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: remote: To create a merge request for lab_02_c, visit: remote: https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/new?merge_request%5Bsource_branch%5D=lab_02_c remote: To git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git * [new branch] lab_02_c -> lab_02_c Branch 'lab_02_c' set up to track remote branch 'lab_02_c' from 'origin'. ``` 3. Изменение файла `test.txt` и фиксирование его 4. Копирование репозитория в другую папку и переключение ветки на `lab_02_c` ```bash kuznetsovev@kuznetsovev ~/o/lab_02_2> git clone gitlab@git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-eng ineering-labs-2022-kuznetsovegor.git Cloning into 'iu7-software-engineering-labs-2022-kuznetsovegor'... remote: Enumerating objects: 36, done. remote: Counting objects: 100% (33/33), done. remote: Compressing objects: 100% (22/22), done. remote: Total 36 (delta 7), reused 28 (delta 5), pack-reused 3 Receiving objects: 100% (36/36), 35.50 KiB | 17.75 MiB/s, done. Resolving deltas: 100% (7/7), done. kuznetsovev@kuznetsovev ~/o/lab_02_2> cd iu7-software-engineering-labs-2022-kuznetsovegor/ kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (master)> git checkout lab_02_c Branch 'lab_02_c' set up to track remote branch 'lab_02_c' from 'origin'. Switched to a new branch 'lab_02_c' ``` 5. Изменения файла `test.txt`, фиксирование его и отправка в удалённый репозиторий ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git commit -am "lab_02_c 3" [lab_02_c 908ba58] lab_02_c 3 1 file changed, 13 insertions(+) kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> 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), 629 bytes | 629.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: remote: To create a merge request for lab_02_c, visit: remote: https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/new?merge_request%5Bsource_branch%5D=lab_02_c remote: To git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git 5ecea80..908ba58 lab_02_c -> lab_02_c ``` 6. Попытка отправить изменения в удалённый репозиторий из первой папки ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git push To git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git ! [rejected] lab_02_c -> lab_02_c (fetch first) error: failed to push some refs to 'gitlab@git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. ``` Это не удаётся сделать по причине появления комита, который не зафиксирован в данном репозитории 7. Разрешение конфликта ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c) [1]> git pull remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 609 bytes | 121.00 KiB/s, done. From git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor 5ecea80..908ba58 lab_02_c -> origin/lab_02_c Auto-merging text.txt CONFLICT (content): Merge conflict in text.txt Automatic merge failed; fix conflicts and then commit the result. kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c|MERGING) [1]> vim text.txt kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c|MERGING)> git commit -am "merge" [lab_02_c 5680633] merge kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git push Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 2 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 759 bytes | 759.00 KiB/s, done. Total 6 (delta 2), reused 0 (delta 0) remote: remote: To create a merge request for lab_02_c, visit: remote: https://git.iu7.bmstu.ru/iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor/-/merge_requests/new?merge_request%5Bsource_branch%5D=lab_02_c remote: To git.iu7.bmstu.ru:iu7-software-engineering/iu7-software-engineering-labs-2022/iu7-software-engineering-labs-2022-kuznetsovegor.git 908ba58..5680633 lab_02_c -> lab_02_c ``` Для разрешения конфликта требовалось слить эти два состояния и сделать коммит слияния. Только после этого можно было отправить в удалённый репозиторий ```bash kuznetsovev@kuznetsovev ~/o/l/iu7-software-engineering-labs-2022-kuznetsovegor (lab_02_c)> git log --graph --branches --oneline * 5680633 (HEAD -> lab_02_c, origin/lab_02_c) merge |\ | * 908ba58 lab_02_c 3 * | 94c1d09 lab_02_c 2 |/ * 5ecea80 lab_02_c 1 * e53debb (origin/master, origin/HEAD, master) initial commit ```