project: добавлен отчет

master
Alice (AnikeevAA) 2 лет назад
Родитель f02fbf6934
Сommit 072b1ce0ae

@ -0,0 +1,692 @@
Отчет по лабораторной работе № 2 "Система контроля версий Git"
Выполнил: Аникеев А. А.
Группа: А-03-22
Примечание: работа выполнялась на Windows.
1. Создал lab02 и запустил Git Bash:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$
2. Просмотрел файлы в рабочем каталоге можно командой "ls":
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ ls
3. Создал каталоги alise, bob, которые будут иммитировать компьютеры 2 людей в л.р.
Использовал команду cd для перехода между каталогами. Создал каталог project на компьютере alise.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ mkdir alice
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ mkdir bob
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ cd alice
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice
$ mkdir project
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice
$ cd project
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project
$ cd ..
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice
$ cd project
4. Инициализировал и настроил репозитарий Алисы в каталоге project:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Andrey/Desktop/lab02/alice/project/.git/
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.name 'Alice (AnikeevAA)'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.email 'AnikeevAnA@mpei.ru'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ ls -A
.git/ bin/ main.cpp obj/ project.cbp
5. Запускаем CodeBlocks и создаем проект в репозитарии Алисы. Собираем его.
Смотрим состояние рабочей копии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master //на ветке мастер
No commits yet //нет коммитов
Untracked files: //не отслеживающиеся файлы
(use "git add <file>..." 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) //ничего не добавлено для коммита, используйте для отслеживания
6. Добавим файл main.cpp в отслеживаемые (в индекс) и посмотрим состояние рабочей копии снова:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add main.cpp
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
No commits yet
Changes to be committed: // изменения которые теперь можно закоммитить
(use "git rm --cached <file>..." to unstage) // используйте чтобы убрать из индекса
new file: main.cpp // новый файл
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.cbp
7. Выполним коммит с файлом main.cpp и project.cbp:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 4459bbe] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add project.cbp
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'build: add project file'
[master 2d0a9cc] build: add project file
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
8. Заменим тело функции main() на ввод двух чисел и просмотрим состояние рабочей копии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Changes not staged for commit: // изменения не в индексе коммита
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory) // используйте чтобы отменить изменения в каталоге
modified: main.cpp // изменен main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
no changes added to commit (use "git add" and/or "git commit -a")
9. Добавляем в программу вывод суммы, разности и делаем коммит:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -a -m "code: заготовка программы"
[master 222e0a1] code: заготовка программы
1 file changed, 8 insertions(+), 1 deletion(-)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
nothing added to commit but untracked files present (use "git add" to track)
10. Заносим каталоги bin и obj в список игнорируемых, создаем коммит темой git:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
obj/
nothing added to commit but untracked files present (use "git add" to track)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add .gitignore
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m "git"
[master 13c49fe] git
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
11. Команды работы с журналом репозитария:
Просмотр журнала репозитария:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log
commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master)
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:40:22 2023 +0300
git
commit 222e0a19ba70da024947adc54a20545536361195
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:10:48 2023 +0300
code: заготовка программы
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:00:50 2023 +0300
build: add project file
commit 4459bbe2d05dc2f8673f8c457e1070e24db9c287
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 14:48:22 2023 +0300
code: заготовка программы
:
Коммиты компактно:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate
13c49fe (HEAD -> master) git
222e0a1 code: заготовка программы
2d0a9cc build: add project file
4459bbe code: заготовка программы
Файлы, измененные в коммитах:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --stat
commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master)
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:40:22 2023 +0300
git
.gitignore | 2 ++
1 file changed, 2 insertions(+)
commit 222e0a19ba70da024947adc54a20545536361195
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:10:48 2023 +0300
code: заготовка программы
main.cpp | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 // хеш коммита
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru> // автор коммита
Date: Mon Mar 6 15:00:50 2023 +0300 // дата и время коммита
build: add project file // имя коммита
:
(гит игнорирует файлы add и obj (2 бинарных файла) так же есть изменение одного файла в мейне)
12. нахождение коммитов по теме build, потом затрагивающие project.cbp:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --grep "build:"
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:00:50 2023 +0300
build: add project file
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log -- project.cbp
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:00:50 2023 +0300
build: add project file
13. Просмотрим предпоследний коммит:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git show HEAD~1
commit 222e0a19ba70da024947adc54a20545536361195
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:10:48 2023 +0300
code: заготовка программы
diff --git a/main.cpp b/main.cpp
index b4392ec..962f806 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,13 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
+ cout << "Enter A and B: ";
+
+ int a, b;
+
+ cin >> a >> b;
+
+ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+
14. Добавим печать произведения чисел, но не станем пока делать коммит:
Посмотрим изменения в рабочей копии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git diff
diff --git a/main.cpp b/main.cpp // показ изменений от указанного коммита до последнего
index 962f806..0d0652c 100644 // индекс
--- a/main.cpp // заголовок
+++ b/main.cpp // заголовок
@@ -12,5 +12,7 @@ int main() //место изменения в файле
cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; // существующая строка
+ cout << "A * B = " << a * b << '\n'; // добавленная строка
+
return 0; // существующая строка
}
15. Просмотр изменени1 между самым первым коммитом и коммитом, добавляющим вывод разности:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git diff HEAD~3 HEAD~1
diff --git a/main.cpp b/main.cpp
index b4392ec..962f806 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,13 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
+ cout << "Enter A and B: ";
+
+ int a, b;
+
+ cin >> a >> b;
+
+ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+
return 0;
}
16. Практикуем откат изменений, для этого коммитим и откатываем изменение в рабочей копии (вывод произведения):
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -a -m "progect: произведение"
[master 5f67aad] progect: произведение
1 file changed, 2 insertions(+)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git reset --hard HEAD~1
HEAD is now at 13c49fe git
17. Создание пары ключей:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Andrey/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Andrey/.ssh/id_rsa
Your public key has been saved in /c/Users/Andrey/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:bgF32to5uWHiw75mWh6aIAn6kJmcBAcpAUbx8fj9Rag Andrey@LAPTOP-VQB0AJDR
The key's randomart image is:
+---[RSA 3072]----+
|**.. |
|+.. + . |
|o .o .. .... |
|.. . .o.+. |
|.. . ES .. |
|+=.. ..+.o |
|*oo . .B.B |
| o . . B=+ + |
| . +==o. |
+----[SHA256]-----+
18. Запускаем агент:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ eval `ssh-agent -s`
Agent pid 558
19. Загружаем ключ:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ ssh-add
Enter passphrase for /c/Users/Andrey/.ssh/id_rsa:
Identity added: /c/Users/Andrey/.ssh/id_rsa (Andrey@LAPTOP-VQB0AJDR)
20. Отображаем открытый ключ:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzWdOWFmQ9iObuQBXhyeZG00yPdmkxtO7ZRHpQVTmZibdrrbNt0uHA0SE+2CLggwHZYEzvT5AZQ/xGb/nGIkrdTybdiY0bDImw2v9acWvtyVbgtWcKei4ZrGYLBA5Sa4u0e8xuGy108M76L+jEgg4xMbijpNzgkn5NIgKVv3HSv2x8snI9CuaQPIsqNByZSCx5UU08bVQePvzuK+pVd+CWP8XyPFFDWKGBQ9gV2BlZ3Avz86rQO48RKpoWT39GEmlLjLzphZVjyKszcSidLeEZDVU4gFOYT/hWrVZgx00iAYrb7BpFk+e5h38zpJQ1S01ue6Wgr11k0csMQeb8xTN5Bu/Hk1jonvdOLLVbDkAA77VM60gb+DURcNmbSYsVsEp5pEd1luTCCvauBivSsdKYYcZARD2aLLYOf9sxkKMMR0hcHKRYb3De4w6E1aD2VhZfLnDHnGUVVicmYeV6tvjvO+r+PQ+7/5tLVKBHNCERk+Dq+3NYkP5Ui8FSy5RDLsU= Andrey@LAPTOP-VQB0AJDR
21. Создаем репозитарий и настраиваем удаленную связь с ним: (отправляем проект на сервер)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git remote add origin git@uit.mpei.ru:AnikeevAnA/cs-lab02.git
error: remote origin already exists.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.git'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push -u origin master
The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established.
ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
После того как согласился
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push -u origin master
The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established.
ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts.
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 16 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (12/12), 1.56 KiB | 1.56 MiB/s, done.
Total 12 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:AnikeevAnA/cs-lab02.git
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.
22. Получаем проект с сервера с машины Боба, настраиваем git config аналогично машине Алисы:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:AnikeevAnA/cs-lab02.git project
Cloning into 'project'...
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 12 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git config user.name 'bob (AnikeevAA)'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git config user.email 'AnikeevAnA@mpei.ru'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ ls -A
.git/ .gitignore main.cpp project.cbp
23. Делаем изменение на машине Боба и отправляем их на сервер:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git commit -a -m 'project: произведение'
[master f010db0] project: произведение
1 file changed, 2 insertions(+)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git show head
commit f010db0fb00686ac63e91d822247580378a26df6 (HEAD -> master)
Author: bob (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 17:32:27 2023 +0300
project: произведение
diff --git a/main.cpp b/main.cpp
index 962f806..0d0652c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -12,5 +12,7 @@ int main()
cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+ cout << "A * B = " << a * b << '\n';
+
return 0;
}
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
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), 394 bytes | 394.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:AnikeevAnA/cs-lab02.git
13c49fe..f010db0 master -> master
24. Делаем загрузку изменений Боба на машине Алисы с сервера:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ 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), 374 bytes | 31.00 KiB/s, done.
From uit.mpei.ru:AnikeevAnA/cs-lab02
13c49fe..f010db0 master -> origin/master
25. Просмотрим историю всех веток:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* f010db0 (origin/master) project: произведение
* 13c49fe (HEAD -> master) git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
26. Продвигаем ветку master к скачанной версии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git pull --ff-only
Updating 13c49fe..f010db0
Fast-forward
main.cpp | 2 ++
1 file changed, 2 insertions(+)
(убеждаемся что рабочая копия проекта у Алисы соответствует версии у Боба)
27. Сделали все то же самое, только теперь от имени Алисы сделали коммит, отправили изменения на сервер,
а со стороны Боба приняли изменения и продвинули ветку мастер до версии этой же ветки из удаленного репозитария.
28. На машине Алиса дополним программу выводом масимума, делаем коммит и отправляем на сервер.
В это же время на машине Боба дополняем программу выводом минимума и так же отправляем на сервер:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git commit -a -m 'project: минимум'
[master 2cf1199] project: минимум
1 file changed, 2 insertions(+)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
To uit.mpei.ru:AnikeevAnA/cs-lab02.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.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.
(Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git pull --ff-only
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
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), 381 bytes | 22.00 KiB/s, done.
From uit.mpei.ru:AnikeevAnA/cs-lab02
5f4c5ab..fda6c91 master -> origin/master
fatal: Not possible to fast-forward, aborting.
(Ветка мастер раздвоилась)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git log --oneline --decorate --all --graph
* 2cf1199 (HEAD -> master) project: минимум
| * fda6c91 (origin/master, origin/HEAD) project: максимум
|/
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git rebase origin/master
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 2cf1199... project: минимум
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", 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 2cf1199... project: минимум
(на машине боба место конфликта будет отмечено прямо в коде, нужно удалить эти метки конфликта и затем
отредактировать код так, чтобы он включал правки и Алисы, и Боба)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git rebase origin/master
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 2cf1199... project: минимум
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", 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 2cf1199... project: минимум
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git log --oneline --decorate --all --graph
* ff7356a (HEAD -> master) project: минимум
* fda6c91 (origin/master, origin/HEAD) project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
(В первый раз, когда делал со стороны Боба, при продолжении функции rebase, продолжили возникать ошибки,
проделал те же самые операции в обратную сторону, в сторону машины Алисы и тогда смог произвести перемещение
коммита Алисы поверх коммита Боба, и отправил изменения на сервер)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git rebase origin/master
Successfully rebased and updated refs/heads/master.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* 775b709 (HEAD -> master) project: hello
* 39e15e8 (origin/master) восстановление
* f0c2cde project: bob min
* ff7356a project: минимум
* fda6c91 project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
Everything up-to-date
29. Создаем ветку double, меняем тип переменных и делаем коммит.
После коммита переключаемся на ветку мастер, синхронизируем ветку master с сервером:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch double
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git checkout double
Switched to branch 'double'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Смотрим историю всех веток:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* f02fbf6 (double) double
* 775b709 (HEAD -> master, origin/master) project: hello
* 39e15e8 восстановление
* f0c2cde project: bob min
* ff7356a project: минимум
* fda6c91 project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
30. Смотрим историю всех веток:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* f02fbf6 (HEAD -> master, origin/master, double) double
* 775b709 project: hello
* 39e15e8 восстановление
* f0c2cde project: bob min
* ff7356a project: минимум
* fda6c91 project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы

@ -0,0 +1,692 @@
Отчет по лабораторной работе № 2 "Система контроля версий Git"
Выполнил: Аникеев А. А.
Группа: А-03-22
Примечание: работа выполнялась на Windows.
1. Создал lab02 и запустил Git Bash:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$
2. Просмотрел файлы в рабочем каталоге можно командой "ls":
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ ls
3. Создал каталоги alise, bob, которые будут иммитировать компьютеры 2 людей в л.р.
Использовал команду cd для перехода между каталогами. Создал каталог project на компьютере alise.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ mkdir alice
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ mkdir bob
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02
$ cd alice
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice
$ mkdir project
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice
$ cd project
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project
$ cd ..
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice
$ cd project
4. Инициализировал и настроил репозитарий Алисы в каталоге project:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Andrey/Desktop/lab02/alice/project/.git/
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.name 'Alice (AnikeevAA)'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.email 'AnikeevAnA@mpei.ru'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ ls -A
.git/ bin/ main.cpp obj/ project.cbp
5. Запускаем CodeBlocks и создаем проект в репозитарии Алисы. Собираем его.
Смотрим состояние рабочей копии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master //на ветке мастер
No commits yet //нет коммитов
Untracked files: //не отслеживающиеся файлы
(use "git add <file>..." 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) //ничего не добавлено для коммита, используйте для отслеживания
6. Добавим файл main.cpp в отслеживаемые (в индекс) и посмотрим состояние рабочей копии снова:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add main.cpp
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
No commits yet
Changes to be committed: // изменения которые теперь можно закоммитить
(use "git rm --cached <file>..." to unstage) // используйте чтобы убрать из индекса
new file: main.cpp // новый файл
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.cbp
7. Выполним коммит с файлом main.cpp и project.cbp:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 4459bbe] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add project.cbp
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'build: add project file'
[master 2d0a9cc] build: add project file
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
8. Заменим тело функции main() на ввод двух чисел и просмотрим состояние рабочей копии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Changes not staged for commit: // изменения не в индексе коммита
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory) // используйте чтобы отменить изменения в каталоге
modified: main.cpp // изменен main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
no changes added to commit (use "git add" and/or "git commit -a")
9. Добавляем в программу вывод суммы, разности и делаем коммит:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -a -m "code: заготовка программы"
[master 222e0a1] code: заготовка программы
1 file changed, 8 insertions(+), 1 deletion(-)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
nothing added to commit but untracked files present (use "git add" to track)
10. Заносим каталоги bin и obj в список игнорируемых, создаем коммит темой git:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
obj/
nothing added to commit but untracked files present (use "git add" to track)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add .gitignore
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m "git"
[master 13c49fe] git
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
11. Команды работы с журналом репозитария:
Просмотр журнала репозитария:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log
commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master)
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:40:22 2023 +0300
git
commit 222e0a19ba70da024947adc54a20545536361195
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:10:48 2023 +0300
code: заготовка программы
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:00:50 2023 +0300
build: add project file
commit 4459bbe2d05dc2f8673f8c457e1070e24db9c287
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 14:48:22 2023 +0300
code: заготовка программы
:
Коммиты компактно:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate
13c49fe (HEAD -> master) git
222e0a1 code: заготовка программы
2d0a9cc build: add project file
4459bbe code: заготовка программы
Файлы, измененные в коммитах:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --stat
commit 13c49febbd2c6a1046c14f9afdb206c250d32ec8 (HEAD -> master)
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:40:22 2023 +0300
git
.gitignore | 2 ++
1 file changed, 2 insertions(+)
commit 222e0a19ba70da024947adc54a20545536361195
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:10:48 2023 +0300
code: заготовка программы
main.cpp | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125 // хеш коммита
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru> // автор коммита
Date: Mon Mar 6 15:00:50 2023 +0300 // дата и время коммита
build: add project file // имя коммита
:
(гит игнорирует файлы add и obj (2 бинарных файла) так же есть изменение одного файла в мейне)
12. нахождение коммитов по теме build, потом затрагивающие project.cbp:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --grep "build:"
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:00:50 2023 +0300
build: add project file
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log -- project.cbp
commit 2d0a9cc8dfdf302e0b3af1be8c5a1f4cdb5ec125
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:00:50 2023 +0300
build: add project file
13. Просмотрим предпоследний коммит:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git show HEAD~1
commit 222e0a19ba70da024947adc54a20545536361195
Author: Alice (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 15:10:48 2023 +0300
code: заготовка программы
diff --git a/main.cpp b/main.cpp
index b4392ec..962f806 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,13 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
+ cout << "Enter A and B: ";
+
+ int a, b;
+
+ cin >> a >> b;
+
+ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+
14. Добавим печать произведения чисел, но не станем пока делать коммит:
Посмотрим изменения в рабочей копии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git diff
diff --git a/main.cpp b/main.cpp // показ изменений от указанного коммита до последнего
index 962f806..0d0652c 100644 // индекс
--- a/main.cpp // заголовок
+++ b/main.cpp // заголовок
@@ -12,5 +12,7 @@ int main() //место изменения в файле
cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; // существующая строка
+ cout << "A * B = " << a * b << '\n'; // добавленная строка
+
return 0; // существующая строка
}
15. Просмотр изменени1 между самым первым коммитом и коммитом, добавляющим вывод разности:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git diff HEAD~3 HEAD~1
diff --git a/main.cpp b/main.cpp
index b4392ec..962f806 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,13 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
+ cout << "Enter A and B: ";
+
+ int a, b;
+
+ cin >> a >> b;
+
+ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+
return 0;
}
16. Практикуем откат изменений, для этого коммитим и откатываем изменение в рабочей копии (вывод произведения):
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -a -m "progect: произведение"
[master 5f67aad] progect: произведение
1 file changed, 2 insertions(+)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git reset --hard HEAD~1
HEAD is now at 13c49fe git
17. Создание пары ключей:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Andrey/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Andrey/.ssh/id_rsa
Your public key has been saved in /c/Users/Andrey/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:bgF32to5uWHiw75mWh6aIAn6kJmcBAcpAUbx8fj9Rag Andrey@LAPTOP-VQB0AJDR
The key's randomart image is:
+---[RSA 3072]----+
|**.. |
|+.. + . |
|o .o .. .... |
|.. . .o.+. |
|.. . ES .. |
|+=.. ..+.o |
|*oo . .B.B |
| o . . B=+ + |
| . +==o. |
+----[SHA256]-----+
18. Запускаем агент:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ eval `ssh-agent -s`
Agent pid 558
19. Загружаем ключ:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ ssh-add
Enter passphrase for /c/Users/Andrey/.ssh/id_rsa:
Identity added: /c/Users/Andrey/.ssh/id_rsa (Andrey@LAPTOP-VQB0AJDR)
20. Отображаем открытый ключ:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzWdOWFmQ9iObuQBXhyeZG00yPdmkxtO7ZRHpQVTmZibdrrbNt0uHA0SE+2CLggwHZYEzvT5AZQ/xGb/nGIkrdTybdiY0bDImw2v9acWvtyVbgtWcKei4ZrGYLBA5Sa4u0e8xuGy108M76L+jEgg4xMbijpNzgkn5NIgKVv3HSv2x8snI9CuaQPIsqNByZSCx5UU08bVQePvzuK+pVd+CWP8XyPFFDWKGBQ9gV2BlZ3Avz86rQO48RKpoWT39GEmlLjLzphZVjyKszcSidLeEZDVU4gFOYT/hWrVZgx00iAYrb7BpFk+e5h38zpJQ1S01ue6Wgr11k0csMQeb8xTN5Bu/Hk1jonvdOLLVbDkAA77VM60gb+DURcNmbSYsVsEp5pEd1luTCCvauBivSsdKYYcZARD2aLLYOf9sxkKMMR0hcHKRYb3De4w6E1aD2VhZfLnDHnGUVVicmYeV6tvjvO+r+PQ+7/5tLVKBHNCERk+Dq+3NYkP5Ui8FSy5RDLsU= Andrey@LAPTOP-VQB0AJDR
21. Создаем репозитарий и настраиваем удаленную связь с ним: (отправляем проект на сервер)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git remote add origin git@uit.mpei.ru:AnikeevAnA/cs-lab02.git
error: remote origin already exists.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.git'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push -u origin master
The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established.
ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
После того как согласился
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push -u origin master
The authenticity of host 'uit.mpei.ru (193.233.68.149)' can't be established.
ED25519 key fingerprint is SHA256:Q5w0UKEzQKA3J6NyMtjwCLvtAykoxdugIXjx6NwU4NA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts.
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 16 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (12/12), 1.56 KiB | 1.56 MiB/s, done.
Total 12 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:AnikeevAnA/cs-lab02.git
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.
22. Получаем проект с сервера с машины Боба, настраиваем git config аналогично машине Алисы:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:AnikeevAnA/cs-lab02.git project
Cloning into 'project'...
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 12 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git config user.name 'bob (AnikeevAA)'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git config user.email 'AnikeevAnA@mpei.ru'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ ls -A
.git/ .gitignore main.cpp project.cbp
23. Делаем изменение на машине Боба и отправляем их на сервер:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git commit -a -m 'project: произведение'
[master f010db0] project: произведение
1 file changed, 2 insertions(+)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git show head
commit f010db0fb00686ac63e91d822247580378a26df6 (HEAD -> master)
Author: bob (AnikeevAA) <AnikeevAnA@mpei.ru>
Date: Mon Mar 6 17:32:27 2023 +0300
project: произведение
diff --git a/main.cpp b/main.cpp
index 962f806..0d0652c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -12,5 +12,7 @@ int main()
cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
+ cout << "A * B = " << a * b << '\n';
+
return 0;
}
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
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), 394 bytes | 394.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:AnikeevAnA/cs-lab02.git
13c49fe..f010db0 master -> master
24. Делаем загрузку изменений Боба на машине Алисы с сервера:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ 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), 374 bytes | 31.00 KiB/s, done.
From uit.mpei.ru:AnikeevAnA/cs-lab02
13c49fe..f010db0 master -> origin/master
25. Просмотрим историю всех веток:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* f010db0 (origin/master) project: произведение
* 13c49fe (HEAD -> master) git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
26. Продвигаем ветку master к скачанной версии:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git pull --ff-only
Updating 13c49fe..f010db0
Fast-forward
main.cpp | 2 ++
1 file changed, 2 insertions(+)
(убеждаемся что рабочая копия проекта у Алисы соответствует версии у Боба)
27. Сделали все то же самое, только теперь от имени Алисы сделали коммит, отправили изменения на сервер,
а со стороны Боба приняли изменения и продвинули ветку мастер до версии этой же ветки из удаленного репозитария.
28. На машине Алиса дополним программу выводом масимума, делаем коммит и отправляем на сервер.
В это же время на машине Боба дополняем программу выводом минимума и так же отправляем на сервер:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git commit -a -m 'project: минимум'
[master 2cf1199] project: минимум
1 file changed, 2 insertions(+)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git push
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
To uit.mpei.ru:AnikeevAnA/cs-lab02.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'uit.mpei.ru:AnikeevAnA/cs-lab02.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.
(Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git pull --ff-only
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
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), 381 bytes | 22.00 KiB/s, done.
From uit.mpei.ru:AnikeevAnA/cs-lab02
5f4c5ab..fda6c91 master -> origin/master
fatal: Not possible to fast-forward, aborting.
(Ветка мастер раздвоилась)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git log --oneline --decorate --all --graph
* 2cf1199 (HEAD -> master) project: минимум
| * fda6c91 (origin/master, origin/HEAD) project: максимум
|/
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git rebase origin/master
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 2cf1199... project: минимум
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", 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 2cf1199... project: минимум
(на машине боба место конфликта будет отмечено прямо в коде, нужно удалить эти метки конфликта и затем
отредактировать код так, чтобы он включал правки и Алисы, и Боба)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git rebase origin/master
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 2cf1199... project: минимум
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", 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 2cf1199... project: минимум
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/bob/project (master)
$ git log --oneline --decorate --all --graph
* ff7356a (HEAD -> master) project: минимум
* fda6c91 (origin/master, origin/HEAD) project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
(В первый раз, когда делал со стороны Боба, при продолжении функции rebase, продолжили возникать ошибки,
проделал те же самые операции в обратную сторону, в сторону машины Алисы и тогда смог произвести перемещение
коммита Алисы поверх коммита Боба, и отправил изменения на сервер)
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git rebase origin/master
Successfully rebased and updated refs/heads/master.
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* 775b709 (HEAD -> master) project: hello
* 39e15e8 (origin/master) восстановление
* f0c2cde project: bob min
* ff7356a project: минимум
* fda6c91 project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git push
Enter passphrase for key '/c/Users/Andrey/.ssh/id_rsa':
Everything up-to-date
29. Создаем ветку double, меняем тип переменных и делаем коммит.
После коммита переключаемся на ветку мастер, синхронизируем ветку master с сервером:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch double
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git checkout double
Switched to branch 'double'
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Смотрим историю всех веток:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* f02fbf6 (double) double
* 775b709 (HEAD -> master, origin/master) project: hello
* 39e15e8 восстановление
* f0c2cde project: bob min
* ff7356a project: минимум
* fda6c91 project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
30. Смотрим историю всех веток:
Andrey@LAPTOP-VQB0AJDR MINGW64 ~/Desktop/lab02/alice/project (master)
$ git log --oneline --decorate --all --graph
* f02fbf6 (HEAD -> master, origin/master, double) double
* 775b709 project: hello
* 39e15e8 восстановление
* f0c2cde project: bob min
* ff7356a project: минимум
* fda6c91 project: максимум
* 5f4c5ab project: деление
* f010db0 project: произведение
* 13c49fe git
* 222e0a1 code: заготовка программы
* 2d0a9cc build: add project file
* 4459bbe code: заготовка программы
Загрузка…
Отмена
Сохранить