Отчет по лабораторной работе №2 "Система контроля версий Git" Выполнила: Девятова М.Е. Группа: А-01-23 Проверил: Козлюк Д.А. Примечание: работа выполнялась на Windows 1. Создала на рабочем столе каталог lab02 и запустила в нем Git Bash, приглашение: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02 $ 2. Просмотрела файлы в рабочем каталоге с помощью команды ls. В рабочем каталоге пусто: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02 $ ls ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02 $ 3. Создала каталоги Алисы и Боба для того, чтобы имитировать проект с двумя участниками, с помощью команды mkdir. С помощью команд cd, cd .., mkdir перешла в каталог alice, создала каталог project, перешла в него, перешла на уровень выше и снова вернулась в него. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02 $ mkdir alice ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02 $ mkdir bob ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02 $ cd alice ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice $ mkdir project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice $ cd project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project $ cd .. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice $ cd project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project $ 4. Инициализировала репозитарий в каталоге project с помощью команды git init. Теперь в приглашении есть (master). Это имя текущей ветви Git. Подсказки о смене имени ветви не было, по умолчанию стоит master. Пока что менять имя ветви не буду. С помощью команд config user.name и config user.email настроила репозитарий Алисы, чтобы будущие коммиты были от ее имени. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/ASUS X507UF/Desktop/lab02/alice/project/.git/ ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master) $ git config user.name 'Alice (DeviatovaMY)' ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master) $ git config user.email 'DeviatovaMY@mpei.ru' 5. Создала и собрала проект в репозитарии Алисы. Проверила состояние рабочей копии через git status: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master) $ git status On branch master 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) On branch master - означает, что я нахожусь на ветке master No commits yet - еще не было коммитов Untracked files: - здесь перечислены файлы, которые не отслеживаются Git. В скобках подсказка как это исправить nothing added to commit but untracked files present - означает, что никакие изменения не добавлены для коммита, но есть неотслеживаемые файлы Добавила main.cpp для начала отслеживания через git add и еще раз проверила состояние рабочей копии: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master) $ git add main.cpp ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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 Из изменений: Changes to be committed: здесь отслеживаемые и проиндексированные файлы. Если файл проиндексирован, то при выполнении коммита будет добавлена версия файла, существовавшая на момент выполнения команды git add. В моем случае здесь находится добавленный main.cpp 6. Сделала первый коммит с файлом main.cpp и сообщением: "code: заготовка программы" через git commit -m. Изменила имя текущей ветки на main через git branch -m. Добавила project.cbp в индекс и сделала коммит с ним: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master) $ git commit -m 'code: заготовка программы' [master (root-commit) 2ff127d] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (master) $ git branch -m main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git add project.cbp warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'build: добавлен файл проекта' [main d275a06] build: добавлен файл проекта 1 file changed, 40 insertions(+) create mode 100644 project.cbp Вылезло небольшое предупреждение, но оно безвредно. 7. Изменила код программы. В теле функции main() теперь ввод 2 чисел. Проверила состояние рабочей копии: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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) bin/ obj/ no changes added to commit (use "git add" and/or "git commit -a") Из изменений: Changes not staged for commit: - здесь измененные, но не проиндексированные файлы. Если не выполнить команду git add, то новая версия файла не войдет в коммит. Вместо new file файл main.cpp приобрел статус modified. no changes added to commit - нет измененных проиндексированных файлов для нового коммита 8. Закоммитила изменения тремя разными способами. 1) Добавила main.cpp в индекс, чтобы его изменения вошли в новый коммит, затем закоммитила его: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен ввод двух чисел' [main 4bdf8cd] code: добавлен ввод двух чисел 1 file changed, 3 insertions(+), 2 deletions(-) Это удобно, если нужно в коммит добавить изменения не всех, а только некоторых файлов. 2) Добавила в программу вывод суммы двух чисел. Добавила в индекс все изменения (к git add вместо имени файла добавляется -u). После этого сделала коммит: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git add -u ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: добавлен вывод суммы двух чисел' [main a610fc4] code: добавлен вывод суммы двух чисел 1 file changed, 1 insertion(+) Этот способ удобен, если в коммит нужно добавить много измененных файлов. После git add -u можно добавить в индекс новые файлы. 3) Добавила в программу вывод разности двух чисел. Добавила все изменения и сделала коммит с помощью одной командв git commit -a -m: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: добавлен вывод разности двух чисел' [main 2b81c3f] code: добавлен вывод разности двух чисел 1 file changed, 2 insertions(+), 1 deletion(-) Этот способ лучше всего применять, если в коммит должны войти только изменения уже существующих файлов. 9. Создала новый файл, в котором записана строка: /bin. Затем сохранила его в каталоге project (он же корень репозитария) под именем .gitignore. Сделано это для того, чтобы игнорировать каталог bin. Через git status убедилась, что каталог больше не отображается. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) .gitignore obj/ project.depend nothing added to commit but untracked files present (use "git add" to track) Аналогично с obj (в тот же файл .gitignore была добавлена строчка /obj): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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) Те же действия проделаны для project.depend: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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) Добавила файл .gitignore и сделала коммит: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git add .gitignore ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'git: создан файл для игнорирования файлов, производных от кода' [main eb72fb4] git: создан файл для игнорирования файлов, производных от кода 1 file changed, 3 insertions(+) create mode 100644 .gitignore 10. Просмотрела журнал репозитария через git log с разными опциями. 1) git log (без опций): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log commit eb72fb489b792d9b6018099d15ab07c331caab9c (HEAD -> main) Author: Alice (DeviatovaMY) Date: Sun Mar 3 19:20:58 2024 +0300 git: создан файл для игнорирования файлов, производных от кода commit 2b81c3fea87a4d5e613d210f4231239cfbb663a3 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:46:26 2024 +0300 code: добавлен вывод разности двух чисел commit a610fc4ca0839fea9d4e53c1ad9cf5efea8915bf Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:38:56 2024 +0300 code: добавлен вывод суммы двух чисел commit 4bdf8cd2cf2a1ace7ba42eb3184d22fe0e11b180 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:24:54 2024 +0300 code: добавлен ввод двух чисел commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:19:03 2024 +0300 build: добавлен файл проекта commit 2ff127d35a64f19c996fa2eac0baa06dba18566a Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:16:29 2024 +0300 code: заготовка программы 2) git log --stat (показывает файлы, измененные в коммитах): commit eb72fb489b792d9b6018099d15ab07c331caab9c (HEAD -> main) Author: Alice (DeviatovaMY) Date: Sun Mar 3 19:20:58 2024 +0300 git: создан файл для игнорирования файлов, производных от кода .gitignore | 3 +++ 1 file changed, 3 insertions(+) commit 2b81c3fea87a4d5e613d210f4231239cfbb663a3 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:46:26 2024 +0300 code: добавлен вывод разности двух чисел main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit a610fc4ca0839fea9d4e53c1ad9cf5efea8915bf Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:38:56 2024 +0300 code: добавлен вывод суммы двух чисел main.cpp | 1 + 1 file changed, 1 insertion(+) commit 4bdf8cd2cf2a1ace7ba42eb3184d22fe0e11b180 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:24:54 2024 +0300 code: добавлен ввод двух чисел main.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:19:03 2024 +0300 build: добавлен файл проекта project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit 2ff127d35a64f19c996fa2eac0baa06dba18566a Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:16:29 2024 +0300 code: заготовка программы main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) Для последнего коммита показывается следующее: хэш данного коммита; в скобках показано, что это последний на данный момент коммит ветки main; имя и почта автора, сделавшого коммит; дата коммита; сообщение в коммите; имя файла, через вертикальную черту количество добавленных строк в нем; количество измененных файлов; общее количество добавленных строк. 3) git log --oneline --decorate (показывает коммит на одной строке (--oneline), а также ссылки, концы веток и тэги (--decorate)): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate eb72fb4 (HEAD -> main) git: создан файл для игнорирования файлов, производных от кода 2b81c3f code: добавлен вывод разности двух чисел a610fc4 code: добавлен вывод суммы двух чисел 4bdf8cd code: добавлен ввод двух чисел d275a06 build: добавлен файл проекта 2ff127d code: заготовка программы 4) git log --oneline --decorate --all --graph (то же самое, что и в пункте 3, но для всех веток (--all) и коммиты отображаются в виде дерева (--graph)): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * eb72fb4 (HEAD -> main) git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы 5) git log --grep "build:" (данная команда показывает коммиты по теме build): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --grep "build:" commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:19:03 2024 +0300 build: добавлен файл проекта 6) git log -- project.cbp (данная команда показывает коммиты, затрагивающие файл project.cbp): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log -- project.cbp commit d275a067c25de0eba5a6e3d8dc8ad7ce92418fd6 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:19:03 2024 +0300 build: добавлен файл проекта 11. Просмотрела предпоследний коммит тремя способами: 1) git show HEAD~1 (от поледнего коммита отступить на 1) 2) git show main~1 (по имени ветви) 3) git show 2b81c3f (по хэшу данного коммита) Результат: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git show HEAD~1 commit 2b81c3fea87a4d5e613d210f4231239cfbb663a3 Author: Alice (DeviatovaMY) Date: Sun Mar 3 18:46:26 2024 +0300 code: добавлен вывод разности двух чисел diff --git a/main.cpp b/main.cpp index 7e12fbf..4688377 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"; } Отображается хэш, автор, дата коммита, сообщение, код программы в main.cpp с удаленными (-) и добавленными (+) строками. 12. Добавила в main.cpp вывод произведения двух чисел. Просмотрела изменения в рабочей копии через git diff: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index 4688377..7991f2d 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"; } Была удалена строка с печатью разности. Были добавлены измененная строка с печатью разности и печатью произведения двух чисел. Просмотрела изменения между самым первым коммитом и коммитом, добавляющим вывод разности двух чисел. Для этого использовала два аргумента в виде хэша этих коммитов: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff 2ff127d 2b81c3f diff --git a/main.cpp b/main.cpp index b4392ec..4688377 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,9 @@ using namespace std; int main() { - cout << "Hello world!" << endl; - return 0; + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << "\n" + << "A - B = " << a - b << "\n"; } Были удалены строки с печатью "Hello world!", добавлены строки вводом чисел и выводом суммы и разности. 13. Закоммитила вывод произведения двух чисел. Откатила этот коммит через git reset --hard HEAD~1 (HEAD~1 - коммит, к которому нужно откатить состояние рабочей копии; --hard означает, что рабочая копия должна быть приведена к состоянию данного коммита): ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: добавлен вывод произведения двух чисел' [main 8dc7c91] code: добавлен вывод произведения двух чисел 1 file changed, 2 insertions(+), 1 deletion(-) ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git reset --hard HEAD~1 HEAD is now at eb72fb4 git: создан файл для игнорирования файлов, производных от кода Внесла изменения в файл main.cpp и откатила этот файл к состоянию в последнем коммите через git checkout HEAD -- main.cpp: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git checkout HEAD -- main.cpp 14. Отправила проект на сервер (), предварительно создав там репозитарий: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git remote add origin http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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 4 threads Compressing objects: 100% (16/16), done. Writing objects: 100% (18/18), 2.42 KiB | 77.00 KiB/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/DeviatovaMY/cs-lab02.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. 15. Начала работать от имени Боба. Через git clone получила проект с сервера: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob $ git clone http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git project Cloning into 'project'... remote: Enumerating objects: 18, done. remote: Counting objects: 100% (18/18), done. remote: Compressing objects: 100% (16/16), 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. Перешла в каталог проекта и настроила Git через git config, чтобы коммиты были от имени Боба: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob $ cd project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.name 'Bob (DeviatovaMY)' ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git config user.email 'DeviatovaMY@mpei.ru' 16. Добавила в программу вывод произведения чисел и закоммитила от имени Боба. Убедилась, что он действительно сделан от имени Боба: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -a -m 'code: добавлен вывод произведения двух чисел' [main bf9c01e] code: добавлен вывод произведения двух чисел 1 file changed, 2 insertions(+), 1 deletion(-) ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git show HEAD commit bf9c01edae18cb5d72704cbd548e4ccd9896076d (HEAD -> main) Author: Bob (DeviatovaMY) Date: Sun Mar 31 15:30:41 2024 +0300 code: добавлен вывод произведения двух чисел diff --git a/main.cpp b/main.cpp index 4688377..7991f2d 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"; } Отправила этот коммит на сервер: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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. Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 440 bytes | 110.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/DeviatovaMY/cs-lab02.git eb72fb4..bf9c01e main -> main 17. Перешла "на машину Алисы", загрузила изменения с сервера (при этом рабочая копия Алисы не изменилась). Просмотрела историю всех веток, видно, что main отстает от origin/main (на сервере). Продвинула main к версии, скачанной с сервера, через git pull --ff-only: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ cd ~/Desktop/lab02/alice/project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git fetch remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 420 bytes | 2.00 KiB/s, done. From http://uit.mpei.ru/git/DeviatovaMY/cs-lab02 eb72fb4..bf9c01e main -> origin/main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * bf9c01e (origin/main) code: добавлен вывод произведения двух чисел * eb72fb4 (HEAD -> main) git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull --ff-only Updating eb72fb4..bf9c01e Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 18. От лица Алисы добавила вывод частного двух чисел, сделала коммит и отправила изменения на сервер. Проделала аналогичные шаги, что и в предыдущем пункте, поменяв роли Алисы и Боба местами: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: добавлен вывод частного двух чисел' [main 2c30e66] code: добавлен вывод частного двух чисел 1 file changed, 2 insertions(+), 1 deletion(-) ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 436 bytes | 436.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/DeviatovaMY/cs-lab02.git bf9c01e..2c30e66 main -> main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ cd ~/Desktop/lab02/bob/project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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), 416 bytes | 0 bytes/s, done. From http://uit.mpei.ru/git/DeviatovaMY/cs-lab02 bf9c01e..2c30e66 main -> origin/main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * 2c30e66 (origin/main, origin/HEAD) code: добавлен вывод частного двух чисел * bf9c01e (HEAD -> main) code: добавлен вывод произведения двух чисел * eb72fb4 git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git pull --ff-only Updating bf9c01e..2c30e66 Fast-forward main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 19. Добавила вывод максимума от лица Алисы, закоммитила и отправила на сервер. Аналогично для Боба, но изменения не были приняты в силу того, что они были основаны не на последнем коммите. Попробовала через git rebase переместить коммит Боба поверх последнего коммита на сервере, но изменения так же не были приняты. В файле main.cpp возник конфликт, исправила его, учитывая и правки Боба, и правки Алисы. Продолжила отправку коммита Боба на сервер через git rebase --continue, добавив перед этим файл с кодом в индекс. Убедившись, что теперь коммит Боба поверх коммита Алисы, успешно отправила коммит Боба на сервер. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ cd ~/Desktop/lab02/alice/project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: добавлен вывод максимума' [main db458b4] code: добавлен вывод максимума 1 file changed, 4 insertions(+) ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 456 bytes | 456.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/DeviatovaMY/cs-lab02.git 2c30e66..db458b4 main -> main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ cd ~/Desktop/lab02/bob/project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git commit -a -m 'code: добавлен вывод минимума' [main 39b60ec] code: добавлен вывод минимума 1 file changed, 4 insertions(+) ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git push To http://uit.mpei.ru/git/DeviatovaMY/cs-lab02.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'http://uit.mpei.ru/git/DeviatovaMY/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. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/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), 436 bytes | 2.00 KiB/s, done. From http://uit.mpei.ru/git/DeviatovaMY/cs-lab02 2c30e66..db458b4 main -> origin/main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * 39b60ec (HEAD -> main) code: добавлен вывод минимума | * db458b4 (origin/main, origin/HEAD) code: добавлен вывод максимума |/ * 2c30e66 code: добавлен вывод частного двух чисел * bf9c01e code: добавлен вывод произведения двух чисел * eb72fb4 git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git rebase origin/main Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: could not apply 39b60ec... 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 39b60ec... code: добавлен вывод минимума ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) $ git add main.cpp ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) $ git rebase --continue [detached HEAD fbe0f36] code: добавлен вывод минимума 1 file changed, 4 insertions(+), 2 deletions(-) Successfully rebased and updated refs/heads/main. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git log --oneline --decorate --all --graph * fbe0f36 (HEAD -> main) code: добавлен вывод минимума * db458b4 (origin/main, origin/HEAD) code: добавлен вывод максимума * 2c30e66 code: добавлен вывод частного двух чисел * bf9c01e code: добавлен вывод произведения двух чисел * eb72fb4 git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 425 bytes | 425.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/DeviatovaMY/cs-lab02.git db458b4..fbe0f36 main -> main 20. Перешла "на машину Алисы", создала новую ветку double и переключилась на нее. Изменила тип переменных с int на double и сделала коммит. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/bob/project (main) $ cd ~/Desktop/lab02/alice/project ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git branch double ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git checkout double Switched to branch 'double' ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (double) $ git commit -a -m 'code: изменен тип переменных на double' [double 3e220e1] code: изменен тип переменных на double 1 file changed, 1 insertion(+), 1 deletion(-) Переключилась на ветку main, синхронизировала ее с изменениями на сервере, просмотрела историю всех веток: ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (double) $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git pull --ff-only Updating db458b4..fbe0f36 Fast-forward main.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 3e220e1 (double) code: изменен тип переменных на double | * fbe0f36 (HEAD -> main, origin/main) code: добавлен вывод минимума |/ * db458b4 code: добавлен вывод максимума * 2c30e66 code: добавлен вывод частного двух чисел * bf9c01e code: добавлен вывод произведения двух чисел * eb72fb4 git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы Видно, что после коммита с печатью максимума происходит разветвление, в коммите Алисы в скобках указана ветка double. После этого слила double в main (т.к. в текстовом редакторе оставила пустое сообщение, отдельной командой закоммитила слияние веток). Затем отправила все изменения на сервер и еще раз просмотрела историю веток. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git merge double Auto-merging main.cpp error: Empty commit message. Not committing merge; use 'git commit' to complete the merge. ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main|MERGING) $ git commit [main 01aedfb] git: ветка double слита в main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git push Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 4 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 803 bytes | 803.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/DeviatovaMY/cs-lab02.git fbe0f36..01aedfb main -> main ASUS X507UF@LAPTOP-KB81OPAN MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 01aedfb (HEAD -> main, origin/main) git: ветка double слита в main |\ | * 3e220e1 (double) code: изменен тип переменных на double * | fbe0f36 code: добавлен вывод минимума |/ * db458b4 code: добавлен вывод максимума * 2c30e66 code: добавлен вывод частного двух чисел * bf9c01e code: добавлен вывод произведения двух чисел * eb72fb4 git: создан файл для игнорирования файлов, производных от кода * 2b81c3f code: добавлен вывод разности двух чисел * a610fc4 code: добавлен вывод суммы двух чисел * 4bdf8cd code: добавлен ввод двух чисел * d275a06 build: добавлен файл проекта * 2ff127d code: заготовка программы Коммиты fbe0f36 и 3e220e1 находятся на разных ветках (main и double соответственно). Последний коммит является результатом слияния этих веток