Отчёт по лабораторной работе № 2 "Система контроля Git"


Выполнил: Кобзев А. В.
Группа: А-01-22
Проверил:

Примечание работа выполнялась на Windows.

1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:


sasha@Sasha MINGW64 ~/Desktop/lab02
$


2. Просмотрел файлы в рабочем каталоге командой "ls" --- пусто:


sasha@Sasha MINGW64 ~/Desktop/lab02
$ ls


3. Создал каталоги Алисы и Боба, создал каталог "project",
изучил команду "cd" в процессе:


sasha@Sasha MINGW64 ~/Desktop/lab02
$ mkdir alice

sasha@Sasha MINGW64 ~/Desktop/lab02
$ mkdir bob

sasha@Sasha MINGW64 ~/Desktop/lab02
$ cd alice

sasha@Sasha MINGW64 ~/Desktop/lab02/alice
$ mkdir project

sasha@Sasha MINGW64 ~/Desktop/lab02/alice
$ cd project

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project
$ cd ..

sasha@Sasha MINGW64 ~/Desktop/lab02/alice
$ ls
project/

sasha@Sasha MINGW64 ~/Desktop/lab02/alice
$ cd project


4. Инициализировал репозитарий:


$ git init
Initialized empty Git repository in C:/Users/sasha/Desktop/lab02/alice/project/.git/


5. Поменял имя ветки с "master" на "main":


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main


6. Настроил репозиторий Алисы, чтобы коммиты были от её имени:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.name 'Alice (KobzevAV)'

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.email 'KobzevAV@mpei.ru'


7. Создал проект в CodeBlocks, проверил состояние рабочей копии:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main // В ветке main

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) //ничего не добавлено для фиксации, но присутствуют неотслеживаемые файлы (для того что бы отслеживать "git add")


8. Начанал отслеживать main.cpp, проверил состояние рабочей копии ещё раз:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main

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


9. Выполнил коммит с файлом 'main.cpp' и коротким сообщением:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заголовка программы'
[main (root-commit) ad1988c] code: заголовка программы
 1 file changed, 9 insertions(+)
 create mode 100644 main.cpp


10. Начал отслеживать project.cbp и закоммитил его с сообщением:


sasha@Sasha 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

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main c1c3420] build: добавлен файл проекта
 1 file changed, 40 insertions(+)
 create mode 100644 project.cbp


11. Изменил функцию main и постмотрел стаус, закоммитил первым способом(выбираем файлы которые должны войти в коммит, делаем коммит):


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
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  

// Видим, что появилось сообщение о незакомичинном изменённом файле

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")

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заголовка программы'
[main 491fb0a] code: заголовка программы
 1 file changed, 3 insertions(+), 2 deletions(-)

12. Изменил функцию main, закоммитил вторым способом(добавляем в индекс все изменения и делаем комит):


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заголовка программы'
[main 367ea53] code: заголовка программы
 1 file changed, 1 insertion(+)


13. Изменил функцию main, закоммитил третим способом(добавляем все изменения в индекс и делаем коммит в один шаг):


$ git commit -a -m 'code: заголовка программы'
On branch main
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)


14. Создал список игнорируемых файлов и добавил туда bin и obj, проверил что они начали игнорироваться:


$ git status
On branch main
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)


15. Сделал коммит с .gitignore:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: добавлен список игнорируемых файлов'
[main cd8ae79] git: добавлен список игнорируемых файлов
 1 file changed, 2 insertions(+)
 create mode 100644 .gitignore


16. Посмотрел журнал коммитов 3 способами:


1)
sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --stat
commit cd8ae79e9408469f1488ecbb4abc4f36d83deab7 (HEAD -> main) //хэш коммита 
Author: Alice (KobzevAV) <KobzevAlV@mpei.ru> // кто коммитил 
Date:   Mon Mar 13 11:44:31 2023 +0300  //дата и время коммита 

    git: добавлен список игнорируемых файлов  // Комментарий при коммите

 .gitignore | 2 ++                 // файл | кол-во изменённых строк gi
 1 file changed, 2 insertions(+)   // кол-во изменённых файлов и изменения

commit 83b7b707a1ea4e9bfa02d92f54393d6531752e2a
Author: Alice (KobzevAV) <KobzevAlV@mpei.ru>
Date:   Mon Mar 13 11:24:00 2023 +0300

    code: заголовка программы

 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
...


2)
sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
cd8ae79 (HEAD -> main) git: добавлен список игнорируемых файлов
83b7b70 code: заголовка программы
f7c1b9a code: заголовка программы
367ea53 code: заголовка программы
491fb0a code: заголовка программы
c1c3420 build: добавлен файл проекта
ad1988c code: заголовка программы


3)
sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* cd8ae79 (HEAD -> main) git: добавлен список игнорируемых файлов
* 83b7b70 code: заголовка программы
* f7c1b9a code: заголовка программы
* 367ea53 code: заголовка программы
* 491fb0a code: заголовка программы
* c1c3420 build: добавлен файл проекта
* ad1988c code: заголовка программы


17. Нашёл коммиты по теме build:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "build:"
commit c1c34200ffddfe3e2e82d0cd31c719315ec57089
Author: Alice (KobzevAV) <KobzevAlV@mpei.ru>
Date:   Mon Mar 13 10:55:17 2023 +0300

    build: добавлен файл проекта


18. Нашёл коммиты затрагивающие project.cbp


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit c1c34200ffddfe3e2e82d0cd31c719315ec57089
Author: Alice (KobzevAV) <KobzevAlV@mpei.ru>
Date:   Mon Mar 13 10:55:17 2023 +0300

    build: добавлен файл проекта


19. Посмотрел предпоследний коммит тремя способами:


1) 
sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD~1

2) 
sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show main~1

3)
sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show 83b7b70 

Результат:

commit 83b7b707a1ea4e9bfa02d92f54393d6531752e2a
Author: Alice (KobzevAV) <KobzevAlV@mpei.ru>
Date:   Mon Mar 13 11:24:00 2023 +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';
 }


20.Изменил main.cpp: добавил печать произведения чисел, и посмотрел изменения в рабочей копии:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index 8435233..f372c78 100644 //хэши двух сравниваемых файлов
--- a/main.cpp  			//a-старая версия файла     
+++ b/main.cpp  			//b-новая версия файла
@@ -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';  //добавленные строки 
 }

-8,5 из версии a извлечено 5 строк начиная с 8 строки
+8,6 из версии b извлечено 6 строк начния с 8 строки



21. Посмотрел изменения между самым первым коммитом и коммитом, в котором добавили вывод разности:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~5 HEAD~1
diff --git a/main.cpp b/main.cpp
index b4392ec..8435233 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';
 }


22. Закоммитил изменение в main.cpp:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заголовка программы'
[main d0ddb7b] code: заголовка программы
 1 file changed, 2 insertions(+), 1 deletion(-)


Откатил коммит, в ответ консоль вывела, что:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at cd8ae79 git: добавлен список игнорируемых файлов


23. Добавил комменатрий в main.cpp и откатил его до состояния последнего коммита:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp


24. Создал пару ключей, а начале консоль предложила изменить путь файла где будет сохранены ключи. Ввёл пароль и повторил его. После чего строка вывела путь куда сохранились ключи, а так же отпечаток ключа и случайное изображение ключа.


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/sasha/.ssh/id_rsa):
Created directory '/c/Users/sasha/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/sasha/.ssh/id_rsa
Your public key has been saved in /c/Users/sasha/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:npLjTWvgoz5SegWoq4oyTR1qE8BQ1ezIVD5kXUgXVRE sasha@Sasha
The key's randomart image is:
+---[RSA 3072]----+
|+....++o.o+o..Eo |
|..  .+o o.       |
| . + oo          |
|  o = ..         |
| . + o  S        |
|. = o oo .       |
| = + o+.+        |
|= + o.o=..       |
|B. +oo.oo        |
+----[SHA256]-----+


25. Запустил программу-агент, чтобы постоянно не вводить пароль при использовании ключа, загрузил ключ и ввёл пароль:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 444

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-add
Enter passphrase for /c/Users/sasha/.ssh/id_rsa:
Identity added: /c/Users/sasha/.ssh/id_rsa (sasha@Sasha)



26. Отобразил открый ключ и добавил его в свой аккаунт на сервере:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFVPwBsT3Q3OukwvOH4NQmsozllnumQ2e78f83OQjBNXuRm2H3Mg4CXmLjhChrpcBZsVC3JzIai+5GDbaU+PjRgR6zE0LvM+2YXYwQBgAUhElsEvHCfNeOrfIYwkRhC12SHOrOIYiOnl/J4PaJhDWFASWxuNyI5nEbOoz1Z04+u1h7oS/ovJFkmdV3SuZuJ7ldTJzPaZF8+SpOHZXHQspODL2B/gnM7dxUrFYmxEh5lZR7DDXQKSNSruIMnX796SvFspV3CEZ7jGhDOm0VWo1THITg4Zex5rPumbn/EuVCjtqvd0tZzLYfkIjVxbH3p4T/EEUI8/sjMqaeIfKaiXwOGQJYYfejx3GbTaEhDtqmuTNHvG1vPfNmcUgvUsNVC7a8xAdDNKT2FgCoHiB2vAtjdxHThMfDe8qWHinx8uhoFt+QDwyDRzle8qJRvUVhdO19QijhRWMnz84emshR0Tk+65R3VDysnSzvoIxsI+qW/1rj4wdAGrUSH3WLU+LWurs= sasha@Sasha


27. Отправил проект на сервер:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote add origin git@uit.mpei.ru:KobzevAV/cs-lab02.git

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push -u origin main
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
Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts.
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 16 threads
Compressing objects: 100% (19/19), done.
Writing objects: 100% (21/21), 2.65 KiB | 1.32 MiB/s, done.
Total 21 (delta 3), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:KobzevAV/cs-lab02.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.


28. Клонировал проект в каталог bob, перешёл в каталог project:


sasha@Sasha MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:KobzevAV/cs-lab02.git project
Cloning into 'project'...
Enter passphrase for key '/c/Users/sasha/.ssh/id_rsa':
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 21 (delta 3), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (21/21), done.
Resolving deltas: 100% (3/3), done.

sasha@Sasha MINGW64 ~/Desktop/lab02/bob
$ cd project/


29. Настроил Git на "машине Боба":


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (KobzevAV)'

sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.email 'KobzevAlV@mpei.ru'


30. Изменил main.cpp с машины Боба, закоммитил, проверил что последний коммит был от Боба:


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m 'code: заголовка программы'
[main 91d6ad9] code: заголовка программы
 1 file changed, 2 insertions(+), 1 deletion(-)
 
sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --stat
commit 91d6ad9f3af9599c018a7fb31dd70a8386cc178e (HEAD -> main)
Author: Bob (KobzevAV) <KobzevAlV@mpei.ru>
Date:   Sun Mar 26 21:31:05 2023 +0300

    code: заголовка программы

 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit cd8ae79e9408469f1488ecbb4abc4f36d83deab7 (origin/main, origin/HEAD)
Author: Alice (KobzevAV) <KobzevAlV@mpei.ru>
Date:   Mon Mar 13 11:44:31 2023 +0300

    git: добавлен список игнорируемых файлов

 .gitignore | 2 ++
 1 file changed, 2 insertions(+)
...


31. Отправил коммит на сервер с машиниы Боба:


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/sasha/.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), 416 bytes | 416.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:KobzevAV/cs-lab02.git
   cd8ae79..91d6ad9  main -> main


32. Выполнил загрузку изменений на машину Алисы:


sasha@Sasha 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), 396 bytes | 99.00 KiB/s, done.
From uit.mpei.ru:KobzevAV/cs-lab02
   cd8ae79..91d6ad9  main       -> origin/main


33. Посмотрел историю всех веток и увидел, что main остатёт на один коммит от origin/main:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 91d6ad9 (origin/main) code: заголовка программы
* cd8ae79 (HEAD -> main) git: добавлен список игнорируемых файлов
* 83b7b70 code: заголовка программы
* f7c1b9a code: заголовка программыB
* 367ea53 code: заголовка программы
* 491fb0a code: заголовка программы
* c1c3420 build: добавлен файл проекта
* ad1988c code: заголовка программы


34. Подвинул веку main к скачанной версии:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull --ff-only
Updating cd8ae79..91d6ad9
Fast-forward
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)


35. Изменил main.cpp у Алисы, закоммитил и отправил на сервер:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заголовка программы'
[main 985488d] code: заголовка программы
 1 file changed, 2 insertions(+), 1 deletion(-)

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
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), 415 bytes | 415.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:KobzevAV/cs-lab02.git
   91d6ad9..985488d  main -> main


Получил новую версию на машине Боба:


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull
Enter passphrase for key '/c/Users/sasha/.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), 395 bytes | 26.00 KiB/s, done.
From uit.mpei.ru:KobzevAV/cs-lab02
   91d6ad9..985488d  main       -> origin/main
Updating 91d6ad9..985488d
Fast-forward
 main.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)


36. Добавил вывод максимума с машины Алисы, отправил на сервер:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заголовка программы'
[main d49044f] code: заголовка программы
 1 file changed, 7 insertions(+), 2 deletions(-)

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 468 bytes | 468.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:KobzevAV/cs-lab02.git
   985488d..d49044f  main -> main


37. Добавил вывод минимума с машины Боба, отправил на сервер, консоль выдала ошибку:


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -m 'code: заголовка программы'
[main cb155e3] code: заголовка программы
 1 file changed, 7 insertions(+), 2 deletions(-)

sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
To uit.mpei.ru:KobzevAV/cs-lab02.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'uit.mpei.ru:KobzevAV/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.


38. Загрузил коммиты с сервера и посмотрел историю веток:


sasha@Sasha 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), 448 bytes | 29.00 KiB/s, done.
From uit.mpei.ru:KobzevAV/cs-lab02
   985488d..d49044f  main       -> origin/main

sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* cb155e3 (HEAD -> main) code: заголовка программы
| * d49044f (origin/main, origin/HEAD) code: заголовка программы
|/
* 985488d code: заголовка программы
* 91d6ad9 code: заголовка программы
* cd8ae79 git: добавлен список игнорируемых файлов
* 83b7b70 code: заголовка программы
* f7c1b9a code: заголовка программы
* 367ea53 code: заголовка программы
* 491fb0a code: заголовка программы
* c1c3420 build: добавлен файл проекта
* ad1988c code: заголовка программы


39. Попробовал поместить коммит Боба по верх коммита Алисы, получил ошибку, посмотрел состояние хранилища:


sasha@Sasha 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 cb155e3... code: заголовка программы
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 cb155e3... code: заголовка программы


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git status
interactive rebase in progress; onto d49044f
Last command done (1 command done):
   pick cb155e3 code: заголовка программы
No commands remaining.
You are currently rebasing branch 'main' on 'd49044f'.  
  (fix conflicts and then run "git rebase --continue")          
  (use "git rebase --skip" to skip this patch)                   
  (use "git rebase --abort" to check out the original branch)

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both modified:   main.cpp

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        project.layout

no changes added to commit (use "git add" and/or "git commit -a")


40. Отредактирывал код, чтобы он включал попрваки Боба и Алисы и продолжил прерванную операцию rebase: 


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git add main.cpp
sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)

$ git rebase --continue
Successfully rebased and updated refs/heads/main.


41. Проверил состояние хранилища:


sasha@Sasha MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 3b57a88 (HEAD -> main) code: заголовка программы
* d49044f (origin/main, origin/HEAD) code: заголовка программы
* 985488d code: заголовка программы
* 91d6ad9 code: заголовка программы
* cd8ae79 git: добавлен список игнорируемых файлов
* 83b7b70 code: заголовка программы
* f7c1b9a code: заголовка программы
* 367ea53 code: заголовка программы
* 491fb0a code: заголовка программы
* c1c3420 build: добавлен файл проекта
* ad1988c code: заголовка программы


42. Cоздал новую ветку и переключлся на неё:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git branch double

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'
M       main.cpp


43. Изменил тип данных в main.cpp на машине Алисы, и закоммитил их в ветке double:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (double)
$ git add main.cpp

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (double)
$ git commit -m 'code: изменение типа данных'
[double 248c594] code: изменение типа данных
 1 file changed, 1 insertion(+), 1 deletion(-)


44. Переключился на main и синхронизировал её с сервером, и посмотрел историю веток:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git fetch

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 248c594 (double) code: изменение типа данных
* d49044f (HEAD -> main, origin/main) code: заголовка программы
* 985488d code: заголовка программы
* 91d6ad9 code: заголовка программы
* cd8ae79 git: добавлен список игнорируемых файлов
* 83b7b70 code: заголовка программы
* f7c1b9a code: заголовка программы
* 367ea53 code: заголовка программы
* 491fb0a code: заголовка программы
* c1c3420 build: добавлен файл проекта
* ad1988c code: заголовка программы


45. Слил ветку double в main, и загрузил изменения на сервер:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git merge double
Updating d49044f..248c594
Fast-forward
 main.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
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), 398 bytes | 398.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:KobzevAV/cs-lab02.git
   d49044f..248c594  main -> main


46. Проверил историю всех веток:


sasha@Sasha MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
*   5540262 (HEAD -> main) Merge branch 'double'
|\
| * 1c19221 (double) code: тип данных
* | 6141998 (origin/main) text: report
* | 1b212e0 code: заголовка программы
|/
* 248c594 code: изменение типа данных
* d49044f code: заголовка программы
* 985488d code: заголовка программы
* 91d6ad9 code: заголовка программы
* cd8ae79 git: добавлен список игнорируемых файлов
* 83b7b70 code: заголовка программы
* f7c1b9a code: заголовка программы
* 367ea53 code: заголовка программы
* 491fb0a code: заголовка программы
* c1c3420 build: добавлен файл проекта
* ad1988c code: заголовка программы