diff --git a/l2 n.txt b/l2 n.txt new file mode 100644 index 0000000..889c2ec --- /dev/null +++ b/l2 n.txt @@ -0,0 +1,720 @@ +Вход в терминал и создание структуры каталогов +Создём папки пользователей(mkdir alice, mkdir bob) +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2 +$ mkdir alice + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2 +$ mkdir bob + +В папке пользователя alice создаём папку project +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice +$ cd alice + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice +$ mkdir project + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice +$ cd project + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project +$ cd .. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice +$ cd project + +Инициализация репозитария и настройка Git +Инициализируем хранилище git(git init) +Настраиваем папки пользователя, с которым будем работать +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project +git init +Initialized empty Git repository in C:/Users/vikkt/Desktop/1 semestr lab/LAB2/alice/project/.git/ + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (master) +$ git branch -m main + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git config user.name 'alice(victoriaCS)' + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git config user.email 'CherniukVS@mpei.ru' + + +Создание коммитов +Занесение файлов под контроль версий +Просматриваем состояние рабочей копии(git status) +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git status +On branch main + +No commits yet + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + main.cpp + obj/ + project.cbp + +nothing added to commit but untracked files present (use "git add" to track) + +В первой строке ссылка РУФВ указывает на ветку main; +Вторая строка говорит о том, что ещё не было создано коммитов; +Третья строка показывает неотслеживаемые файлы в хранилище git и подсказывает как их добавить; +Последняя строка говорит о том, что нет добавленных(отслеживаемых) файлов, которые можно будет закоммитить; +Добавляем файл с кодом и проверяем изменения + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git status +On branch main + +No commits yet + +Changes to be committed: + (use "git rm --cached ..." to unstage) + new file: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.cbp + +Появилась строка с файлами в индексе, стоящими в очереди на коммит + +Составление сообщений к коммитам +Создаём два коммита с информацией о коде программы +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) 3e087e4] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add project.cbp +warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'build: add project file' +[main 5a6462f] build: add project file + 1 file changed, 38 insertions(+) + create mode 100644 project.cbp +После добавления в программу ввода двух чисел, видим, что файл main.cpp был изменён +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git status +On branch main +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + +no changes added to commit (use "git add" and/or "git commit -a") + +Проделываем ряд изменений с кодом программы и делаем коммиты суммы и разности + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: вывод суммы' +[main 0b91b8d] code: вывод суммы + 1 file changed, 4 insertions(+), 2 deletions(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: вывод разности' +[main a300ded] code: вывод разности + 1 file changed, 2 insertions(+), 1 deletion(-) + +Игнорирование файлов +Укажем git игнорировать присутствие каталога bin и obj +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + obj/ + +nothing added to commit but untracked files present (use "git add" to track) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + project.depend + +nothing added to commit but untracked files present (use "git add" to track) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + +nothing added to commit but untracked files present (use "git add" to track) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add .gitignore + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: игнорирование бинарных файлов' +[main daa19f7] code: игнорирование бинарных файлов + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + + +Просмотр истории +С помощью команды git log и различных её опций просматриваем журнал коммитов +Используем команду git log--stat +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log --stat +commit daa19f7ce2a1201910f4981b36a7cb460d2b067e (HEAD -> main) +Author: alice(victoriaCS) +Date: Sat Apr 12 11:42:51 2025 +0300 + + code: игнорирование бинарных файлов + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 +Author: alice(victoriaCS) +Date: Sat Apr 12 11:29:13 2025 +0300 + + code: вывод разности + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0b91b8d933527ef48e1779a37d267c2c988a10d4 +Author: alice(victoriaCS) +Date: Sat Apr 12 11:27:28 2025 +0300 + + code: вывод суммы +В последнем коммите первой строкой показывается хэш коммита, по которому можно потом найти этот коммит; +Во второй строке записан автор, внёсший этот коммит, а строкой ниже - время создания коммита; +Далее идёт комментарий к коммиту; +Перечисление файлов, в которых произошли изменения и количество изменённых строчек('+' добавленная строк, '-' удалённая строка); + +Другие способы просмотра историй +В последней строке приведена статистика изменений данных файлов +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log --oneline --decorate +daa19f7 (HEAD -> main) code: игнорирование бинарных файлов +a300ded code: вывод разности +0b91b8d code: вывод суммы +5a6462f build: add project file +3e087e4 code: заготовка программы + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log --oneline --decorate --all --graph +* daa19f7 (HEAD -> main) code: игнорирование бинарных файлов +* a300ded code: вывод разности +* 0b91b8d code: вывод суммы +* 5a6462f build: add project file +* 3e087e4 code: заготовка программы + +Используем команды для просмотра отдельных коммитов(git log - main.cpp/git log - grep "code:") +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log --grep "build:" +commit 5a6462f0e30e123a5ee61a141212ad9db6cf348b +Author: alice(victoriaCS) +Date: Sat Apr 12 11:20:58 2025 +0300 + + build: add project file + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log -- project.cbp +commit 5a6462f0e30e123a5ee61a141212ad9db6cf348b +Author: alice(victoriaCS) +Date: Sat Apr 12 11:20:58 2025 +0300 + + build: add project file + +Таким образом, мы посмотрели информацию о коммите по изменённому файлу и по теме коммита + +Просмотр коммитов +Тремя способами просматриваем информацию о предпоследнем коммите + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git show HEAD~1 +commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 +Author: alice(victoriaCS) +Date: Sat Apr 12 11:29:13 2025 +0300 + + code: вывод разности + +diff --git a/main.cpp b/main.cpp +index 4364dbc..8435233 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git show main~1 +commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 +Author: alice(victoriaCS) +Date: Sat Apr 12 11:29:13 2025 +0300 + + code: вывод разности + +diff --git a/main.cpp b/main.cpp +index 4364dbc..8435233 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } + + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git show a300ded +commit a300ded928d4bfba3c6bd73f3a2dcb2ff6664162 +Author: alice(victoriaCS) +Date: Sat Apr 12 11:29:13 2025 +0300 + + code: вывод разности + +diff --git a/main.cpp b/main.cpp +index 4364dbc..8435233 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -7,5 +7,6 @@ int main() + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; +- cout << "A + B = " << a + b << '\n'; ++ cout << "A + B = " << a + b << '\n' ++ << "A - B = " << a - b << '\n'; + } + +Просмотр изменений +Добавим изменения в рабочую копию ипосмотрим их с помощью команды git diff +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 8435233..f372c78 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -8,5 +8,6 @@ int main() + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' +- << "A - B = " << a - b << '\n'; ++ << "A - B = " << a - b << '\n' ++ << "A * B = " << a * b << '\n'; + } +В качестве первой строки мы видим входные данные команды для сравнения файлов; +Далее идёт заголовок с легендой изменения, место изменённого кода и изменённая функция; +На следующей строке идут строки вокруг изменённой части, удалённые и добавленные строки + +Откат изменений +Вносим изменения в код, а потом откатываем их до состояния в определённом коммите с помощью команды git reset +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: вывод произведения' +[main db14ba7] code: вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git reset --hard HEAD~1 +HEAD is now at daa19f7 code: игнорирование бинарных файлов + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git checkout HEAD -- main.cpp + +Обмен кодом через удаленное хранилище +Для загрузки данных в репозитарий GitHub будет использоваться протокол SSH, поэтому для обмена данными с сервером нужно сгенерировать пару из открытого и закрытого ключей + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ ssh-keygen +Generating public/private ed25519 key pair. +Enter file in which to save the key (/c/Users/vikkt/.ssh/id_ed25519): /c/Users/vikkt/.ssh/id_ed25519 +/c/Users/vikkt/.ssh/id_ed25519 already exists. +Overwrite (y/n)? y +Enter passphrase for "/c/Users/vikkt/.ssh/id_ed25519" (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /c/Users/vikkt/.ssh/id_ed25519 +Your public key has been saved in /c/Users/vikkt/.ssh/id_ed25519.pub +The key fingerprint is: +SHA256:tmrCLoV3ZXGGKh5ghV4DQFBi3IazgCgZ5K4Y0ZSRFdQ vikkt@Vika +The key's randomart image is: ++--[ED25519 256]--+ +|%OBX=o . | +|OB*oo E o o | +|++=o . . + | +|.o. o . o | +|.. o o oS | +|o.. + .. . | +|o + . . | +| . o .. | +| o.o. | ++----[SHA256]-----+ + +Также после этого отображаются уникальные данные ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, можно использовать программу-агент, которую достаточно запустить перед началом работы +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ eval $(ssh-agent -s) +Agent pid 3805 + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ ssh-add +Identity added: /c/Users/vikkt/.ssh/id_ed25519 (vikkt@Vika) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKlnFWPunMrqRAWni8+iXhJyBNMBiEjuWoOdZl5VQer vikkt@Vika +Затем в настройках аккаунта GitHub нужно добавить публичный ключ, который по умолчанию записывается в файл id_ed25519 + +Теперь добавим репозитарий, на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git remote add origin git@uit.mpei.ru:ChernyukVS/cs-lab02.git + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git push -u origin main +Enumerating objects: 15, done. +Counting objects: 100% (15/15), done. +Delta compression using up to 12 threads +Compressing objects: 100% (13/13), done. +Writing objects: 100% (15/15), 1.99 KiB | 156.00 KiB/s, done. +Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:ChernyukVS/cs-lab02.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git remote -v +origin git@uit.mpei.ru:ChernyukVS/cs-lab02.git (fetch) +origin git@uit.mpei.ru:ChernyukVS/cs-lab02.git (push) + +Получение проекта с сервера +К работе присоединяется Боб. Клонируем репозитарий с помощью git clone +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob +$ git clone http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git +Cloning into 'cs-lab02'... +remote: Enumerating objects: 15, done. +remote: Counting objects: 100% (15/15), done. +remote: Compressing objects: 100% (13/13), done. +remote: Total 15 (delta 1), reused 0 (delta 0), pack-reused 0 +Receiving objects: 100% (15/15), done. +Resolving deltas: 100% (1/1), done. + +Настроим хранилище Боба +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git config user.name 'bob(victoriaCS)' + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git config user.email 'CherniukVS@mpei.ru' + +Совместная работа над проектом без конфликтов правок +Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git commit -m 'code: вывод произведения' +[main 552905a] code: вывод произведения + 1 file changed, 2 insertions(+), 1 deletion(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 418 bytes | 418.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git + daa19f7..552905a main -> main + +Обновляем версию программы у Алисы. Для этого используем загрузку изменений с помощью git fetch. А затем переносим ветку main на скаченную версию с помощью git pull , который вызывает git fetch, поэтому его ручной вызов необязателен + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 398 bytes | 99.00 KiB/s, done. +From uit.mpei.ru:ChernyukVS/cs-lab02 + daa19f7..552905a main -> origin/main + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log --oneline --decorate --all --graph +* 552905a (origin/main, origin/HEAD) code: вывод произведения +* daa19f7 (HEAD -> main) code: игнорирование бинарных файлов +* a300ded code: вывод разности +* 0b91b8d code: вывод суммы +* 5a6462f build: add project file +* 3e087e4 code: заготовка программы + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git pull --ff-only +Updating daa19f7..552905a +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Алиса вносит новое изменение, а Боб скачивает его. +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: вывод деления' +[main 63aa70e] code: вывод деления + 1 file changed, 2 insertions(+), 1 deletion(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 404 bytes | 404.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:ChernyukVS/cs-lab02.git + 552905a..63aa70e main -> main + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 384 bytes | 48.00 KiB/s, done. +From http://uit.mpei.ru/git/ChernyukVS/cs-lab02 + 552905a..63aa70e main -> origin/main + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git pull --ff-only +Updating 552905a..63aa70e +Fast-forward + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Разрешение конфликтов правок при совместной работе +Теперь Алисаи Боб добавляют в программу печать максимума и минимума, а затем пробуют загрузить изменения репозитарий на сервере. +Вывод максимума +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git commit -m 'code: вывод максимума' +[main 05368e9] code: вывод максимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 412 bytes | 412.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:ChernyukVS/cs-lab02.git + 63aa70e..05368e9 main -> main + +Вывод минимума +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git commit -m 'code: вывод минимума' +[main 13fa6fe] code: вывод минимума + 1 file changed, 2 insertions(+), 1 deletion(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git push +To http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git + ! [rejected] main -> main (fetch first) +error: failed to push some refs to 'http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git' +hint: Updates were rejected because the remote contains work that you do not +hint: have locally. This is usually caused by another repository pushing to +hint: the same ref. If you want to integrate the remote changes, use +hint: 'git pull' before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. + +Загрузить изменения на сервер получается только у Алисы, потому что Боб пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub. + +Загрузим версию с сервера. +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 392 bytes | 39.00 KiB/s, done. +From http://uit.mpei.ru/git/ChernyukVS/cs-lab02 + 63aa70e..05368e9 main -> origin/main + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git log --oneline --decorate --all --graph +* 13fa6fe (HEAD -> main) code: вывод минимума +| * 05368e9 (origin/main, origin/HEAD) code: вывод максимума +|/ +* 63aa70e code: вывод деления +* 552905a code: вывод произведения +* daa19f7 code: игнорирование бинарных файлов +* a300ded code: вывод разности +* 0b91b8d code: вывод суммы +* 5a6462f build: add project file +* 3e087e4 code: заготовка программы + +Ветка main раздвоилась +Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью команды git rebase. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git rebase origin/main +Auto-merging main.cpp +CONFLICT (content): Merge conflict in main.cpp +error: could not apply 13fa6fe... code: вывод минимума +hint: Resolve all conflicts manually, mark them as resolved with +hint: "git add/rm ", then run "git rebase --continue". +hint: You can instead skip this commit: run "git rebase --skip". +hint: To abort and get back to the state before "git rebase", run "git rebase --abort". +hint: Disable this message with "git config set advice.mergeConflict false" +Could not apply 13fa6fe... code: вывод минимума + +Команда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase с помощью флага - continue. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main|REBASE 1/1) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main|REBASE 1/1) +$ git rebase --continue +Successfully rebased and updated refs/heads/main. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git log --oneline --decorate +0acbd36 (HEAD -> main, origin/main, origin/HEAD) code: вывод минимума +05368e9 code: вывод максимума +63aa70e code: вывод деления +552905a code: вывод произведения +daa19f7 code: игнорирование бинарных файлов +a300ded code: вывод разности +0b91b8d code: вывод суммы +5a6462f build: add project file +3e087e4 code: заготовка программы + + +Отправим изменения на сервер. +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/bob/project (main) +$ git push +Enumerating objects: 5, done. +Counting objects: 100% (5/5), done. +Delta compression using up to 12 threads +Compressing objects: 100% (3/3), done. +Writing objects: 100% (3/3), 417 bytes | 417.00 KiB/s, done. +Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To http://uit.mpei.ru/git/ChernyukVS/cs-lab02.git + 05368e9..0acbd36 main -> main + +Использование веток. +Алиса создаёт новую ветку с помощью для изменения типа переменных на вещественный. Начинает с коммита, когда добавлена печать максимума. +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git branch double + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git checkout double +Switched to branch 'double' + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (double) +$ git add main.cpp + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (double) +$ git commit -m 'code: изменён тип переменных с int на double' +[double 7d94bd6] code: изменён тип переменных с int на double + 1 file changed, 1 insertion(+), 1 deletion(-) + +Затем переключается на ветку main и сихронизирует её. +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/lab02/alice/project (double) +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (double) +$ git checkout main +Switched to branch 'main' +Your branch is up to date with 'origin/main'. + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git fetch +remote: Enumerating objects: 5, done. +remote: Counting objects: 100% (5/5), done. +remote: Compressing objects: 100% (3/3), done. +remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 +Unpacking objects: 100% (3/3), 397 bytes | 56.00 KiB/s, done. +From uit.mpei.ru:ChernyukVS/cs-lab02 + 05368e9..0acbd36 main -> origin/main + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git log --oneline --decorate --all --graph +* 7d94bd6 (double) code: изменён тип переменных с int на double +| * 0acbd36 (origin/main, origin/HEAD) code: вывод минимума +|/ +* 05368e9 (HEAD -> main) code: вывод максимума +* 63aa70e code: вывод деления +* 552905a code: вывод произведения +* daa19f7 code: игнорирование бинарных файлов +* a300ded code: вывод разности +* 0b91b8d code: вывод суммы +* 5a6462f build: add project file +* 3e087e4 code: заготовка программы + + +Получаем одновременно две ветки. Объединяем их с помощью команды git merge. Вносим последние изменения и загружаем на GitHub. +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git merge double +Auto-merging main.cpp +Fast-forward + main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +vikkt@Vika MINGW32 ~/Desktop/1 semestr lab/LAB2/alice/project (main) +$ git push +Enumerating objects: 10, done. +Counting objects: 100% (10/10), done. +Delta compression using up to 12 threads +Compressing objects: 100% (6/6), done. +Writing objects: 100% (6/6), 751 bytes | 751.00 KiB/s, done. +Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) +remote: . Processing 1 references +remote: Processed 1 references in total +To uit.mpei.ru:ChernyukVS/cs-lab02.git + 0acbd36..8903c62 main -> main + +