Сommit
3e63c00a4a
@ -0,0 +1,866 @@
|
||||
# Отчет по лабораторной работе № 2 «Система контроля версий Git»
|
||||
|
||||
Выполнил: Тимошенко А.А. \
|
||||
Группа: А-01-23 \
|
||||
Проверил: Филатов С.А.
|
||||
|
||||
|
||||
1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02
|
||||
$
|
||||
|
||||
```
|
||||
|
||||
2. Просмотрел файлы в рабочем каталоге можно командой `ls` — пусто:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02
|
||||
$ ls
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02
|
||||
$
|
||||
```
|
||||
|
||||
3. Создал каталоги Алисы и Боба, создал каталог `project`,
|
||||
изучил команду `cd` в процессе:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02
|
||||
$ mkdir alice
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02
|
||||
$ mkdir bob
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02
|
||||
$ cd alice
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice
|
||||
$ mkdir project
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice
|
||||
$ cd project
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project
|
||||
$ cd ..
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice
|
||||
$ cd project
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project
|
||||
$
|
||||
```
|
||||
|
||||
4. Инициализировал репозитарий:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project
|
||||
$ git init
|
||||
Initialized empty Git repository in C:/Users/mapon/OneDrive/Рабочий стол/lab02lice/project/.git/
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||
```
|
||||
|
||||
У меня имя ветки по умолчанию не настроено.
|
||||
Git создал ветку под названием `master`, что видно в приглашении терминала.
|
||||
Подсказка о смене ветки не появилась. Позже имя ветки будет изменено на `main`
|
||||
|
||||
5. Настраиваем имя пользователя и email
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||
$ git config user.name "Alice (TimoshenkoAA)"
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||
$ git config user.email "timoshenkoaa@mpei.ru"
|
||||
```
|
||||
|
||||
6. Просмотрим статус репозитария
|
||||
|
||||
```
|
||||
$ git status
|
||||
On branch master
|
||||
|
||||
No commits yet
|
||||
|
||||
nothing to commit (create/copy files and use "git add" to track)
|
||||
|
||||
```
|
||||
В ветке MASTER отсутствуют коммиты.
|
||||
|
||||
7. Добавим main.cpp и посмотрим статус репозитария
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/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)
|
||||
project.cbp
|
||||
|
||||
```
|
||||
Git status показывает, что в изменениях для следующего коммита присутствует новый файл main.cpp
|
||||
|
||||
8. Закоммитим main.cpp
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||
$ git commit -m 'code: заготовка программы'
|
||||
[master (root-commit) f218e95] code: заготовка программы
|
||||
1 file changed, 9 insertions(+)
|
||||
create mode 100644 main.cpp
|
||||
```
|
||||
|
||||
9. Переименуем ветку из master в main
|
||||
Добавим под контроль версий файл проекта.
|
||||
И, соответственно, сразу создаём коммит "code:..."
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||
$ git branch -m main
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/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
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -m 'build: добавлен файл проекта'
|
||||
[main c236982] build: добавлен файл проекта
|
||||
1 file changed, 40 insertions(+)
|
||||
create mode 100644 project.cbp
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
11. Создадим коммит с вводом чисел:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -m "code: Добавлена ввод"
|
||||
[main 68ce0a7] code: Добавлена ввод
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
```
|
||||
|
||||
"16 deletions(-)" означает, что я стёр эти 16 строк подсказок от VS
|
||||
|
||||
12. Добавим в программу вывод суммы и сделаем коммит, а потом и разность:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git add -u
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -m:"code: Добавлена сумма"
|
||||
[main c0f111e] :code: Добавлена сумма
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -a -m "code: Добавлена разность"
|
||||
[main 0c4bcdd] code: Добавлена разность
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
|
||||
13. Создал файл .gitignore и занёс в него сначала "bin" и "obj"
|
||||
Между занесениями вводил git status
|
||||
Также внесём в git данный файл
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git status
|
||||
On branch main
|
||||
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)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ 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)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git add .gitignore
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -m "git: Добавлен gitignore"
|
||||
[main b735c11] git: Добавлен gitignore
|
||||
1 file changed, 2 insertions(+)
|
||||
create mode 100644 .gitignore
|
||||
```
|
||||
Теперь в git не будут заноситься каталог bin и obj
|
||||
|
||||
14. Посмотрим историю коммитов в трёх исполнениях
|
||||
Просто вывод, сжато и сжато+дерево
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log
|
||||
commit b735c118a2a74302e790b694203c252908ae3996 (HEAD -> main)
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:37:28 2024 +0300
|
||||
|
||||
git: Добавлен gitignore
|
||||
|
||||
commit 0c4bcdd532e5b0c5741d667f1167704d89688002
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:21:50 2024 +0300
|
||||
|
||||
code: Добавлена разность
|
||||
|
||||
commit c0f111e2b2743afe2f7ac078829e5d2f161faa57
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:19:18 2024 +0300
|
||||
|
||||
:code: Добавлена сумма
|
||||
|
||||
commit 68ce0a749787cec2a85d5794cff09485136b19e9
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:11:56 2024 +0300
|
||||
|
||||
code: Добавлена ввод
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log --oneline --decorate
|
||||
b735c11 (HEAD -> main) git: Добавлен gitignore
|
||||
0c4bcdd code: Добавлена разность
|
||||
c0f111e :code: Добавлена сумма
|
||||
68ce0a7 code: Добавлена ввод
|
||||
c236982 build: добавлен файл проекта
|
||||
f218e95 code: заготовка программы
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log --oneline --decorate --all --graph
|
||||
* b735c11 (HEAD -> main) git: Добавлен gitignore
|
||||
* 0c4bcdd code: Добавлена разность
|
||||
* c0f111e :code: Добавлена сумма
|
||||
* 68ce0a7 code: Добавлена ввод
|
||||
* c236982 build: добавлен файл проекта
|
||||
* f218e95 code: заготовка программы
|
||||
```
|
||||
|
||||
15. Введём git log --stat и посмотрим, что он скажет относительно последнего коммита
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log --stat
|
||||
commit b735c118a2a74302e790b694203c252908ae3996 (HEAD -> main)
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:37:28 2024 +0300
|
||||
|
||||
git: Добавлен gitignore
|
||||
|
||||
.gitignore | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
```
|
||||
Показывается хэш коммита, кто его сделал, точное время создания коммита с часовым поясом,
|
||||
тема коммита, добавленный файл. Показывается, сколько файлов изменено и сколько строк в этом файле вставлено
|
||||
|
||||
16. Посмотрим коммиты с темой "build" и коммиты, относящиеся к project.cbp
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log --grep "build:"
|
||||
commit c236982eb24750647df8c4a3d73fd30cf8490926
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 11:51:12 2024 +0300
|
||||
|
||||
build: добавлен файл проекта
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log -- project.cbp
|
||||
commit c236982eb24750647df8c4a3d73fd30cf8490926
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 11:51:12 2024 +0300
|
||||
|
||||
build: добавлен файл проекта
|
||||
```
|
||||
|
||||
17. Посмотрим предпоследний коммит тремя способами: c помощью HEAD, по имени ветви, по хэшу нужного коммита
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git show HEAD~1
|
||||
commit 0c4bcdd532e5b0c5741d667f1167704d89688002
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:21:50 2024 +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';
|
||||
}
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git show main~1
|
||||
commit 0c4bcdd532e5b0c5741d667f1167704d89688002
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:21:50 2024 +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';
|
||||
}
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git show 0c4bcdd
|
||||
commit 0c4bcdd532e5b0c5741d667f1167704d89688002
|
||||
Author: Alice (TimoshenkoAA) <timoshenkoaa@mpei.ru>
|
||||
Date: Sun Mar 31 12:21:50 2024 +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';
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
Показывается хэш, автор, дата, время, тема. Код программы: - означает удаление указанной строки, а + добавление
|
||||
|
||||
18. Добавим печать произведения в программу но не станем пока делать коммит
|
||||
Посмотрим изменения в рабочей копии
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/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';
|
||||
}
|
||||
```
|
||||
Показывается хэш, автор, дата, время, тема. Код программы: - означает удаление указанной строки, а + добавление
|
||||
|
||||
19. Посмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности
|
||||
Для этого используем хэши этих коммитов, которые написаны сильно выше
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git diff f218e95 0c4bcdd
|
||||
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';
|
||||
}
|
||||
```
|
||||
f218e95 — хэш самого первого коммита, а 0c4bcdd — коммита вывода разности
|
||||
|
||||
20. Закоммитим изменения в рабочей копии (вывод произведения)
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -m "code: вывод произведения"
|
||||
[main 818e7f5] code: вывод произведения
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
|
||||
21. Откатимся к предпоследнему коммиту:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git reset --hard HEAD~1
|
||||
HEAD is now at b735c11 git: Добавлен gitignore
|
||||
```
|
||||
|
||||
22. Добавим над функцией main() комментарий и Уберем изменения в main.cpp другим способом — откатив этот файл к состоянию в последнем коммите (HEAD):
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git checkout HEAD -- main.cpp
|
||||
```
|
||||
|
||||
23. Сгенерируем приватный ключ для gitea на сайте кафедры
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ ssh-keygen
|
||||
Generating public/private ed25519 key pair.
|
||||
Enter file in which to save the key (/c/Users/mapon/.ssh/id_ed25519):
|
||||
........
|
||||
```
|
||||
|
||||
24. Запустим ssh-agent и загрузим ключ
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ eval $(ssh-agent -s)
|
||||
Agent pid 581
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ ssh-add
|
||||
Identity added: /c/Users/mapon/.ssh/id_ed25519 (mapon@notebook)
|
||||
```
|
||||
|
||||
25. После добавления открытого ключа в профиль на git сайта кафедры связываем локальный и удалённый репозитарий и отправляем всё в облако
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git remote add origin http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02.git
|
||||
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git push -u origin main
|
||||
Enumerating objects: 18, done.
|
||||
Counting objects: 100% (18/18), done.
|
||||
Delta compression using up to 16 threads
|
||||
Compressing objects: 100% (16/16), done.
|
||||
Writing objects: 100% (18/18), 2.31 KiB | 787.00 KiB/s, done.
|
||||
Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
|
||||
remote: . Processing 1 references
|
||||
remote: Processed 1 references in total
|
||||
To http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02.git
|
||||
* [new branch] main -> main
|
||||
branch 'main' set up to track 'origin/main'.
|
||||
|
||||
```
|
||||
|
||||
26. На машине Боба.
|
||||
Клонируем репозитарий с облака, указав URL и папку
|
||||
Перейдём в папку проекта
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob
|
||||
$ git clone http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02.git project
|
||||
Cloning into 'project'...
|
||||
remote: Enumerating objects: 18, done.
|
||||
remote: Counting objects: 100% (18/18), done.
|
||||
remote: Compressing objects: 100% (16/16), done.
|
||||
remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0
|
||||
Receiving objects: 100% (18/18), done.
|
||||
Resolving deltas: 100% (2/2), done.
|
||||
```
|
||||
|
||||
27. Настроим локальный репозитарий для Боба
|
||||
Изменим имя пользователя и email
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git config user.name "Bob (TimoshenkoAA)"
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git config user.email "timoshenkoaa@mpei.ru"
|
||||
```
|
||||
|
||||
28. Добавим печать произведения, сделаем коммит и отправим на сервер
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git commit -m "code: Добавил произведение"
|
||||
[main dc066f8] code: Добавил произведение
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/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), 420 bytes | 420.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/TimoshenkoAA/cs-lab02.git
|
||||
b735c11..dc066f8 main -> main
|
||||
```
|
||||
|
||||
29. На машине Алисы загрузим изменения Боба
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/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), 400 bytes | 14.00 KiB/s, done.
|
||||
From http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02
|
||||
b735c11..dc066f8 main -> origin/main
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log --oneline --decorate --all --graph
|
||||
* dc066f8 (origin/main) code: Добавил произведение
|
||||
* b735c11 (HEAD -> main) git: Добавлен gitignore
|
||||
* 0c4bcdd code: Добавлена разность
|
||||
* c0f111e :code: Добавлена сумма
|
||||
* 68ce0a7 code: Добавлена ввод
|
||||
* c236982 build: добавлен файл проекта
|
||||
* f218e95 code: заготовка программы
|
||||
|
||||
gorda@DESKTOP-2IL75KC MINGW64 ~/OneDrive/Рабочий стол/LABA2/alice/project (main)
|
||||
$ git pull --ff-only
|
||||
You are not currently on a branch.
|
||||
Please specify which branch you want to merge with.
|
||||
See git-pull(1) for details.
|
||||
|
||||
git pull <remote> <branch>
|
||||
|
||||
```
|
||||
После введения первой команды земетим, что в рабочей копии изменений еще не произошло
|
||||
Просмотрим историю и увидим, ветка main отстает на один коммит от ветки origin/main (версии ветки main из удаленного репозитария под названием origin, то есть на сервере).
|
||||
Пододвинем Main к скачанной версии
|
||||
|
||||
29. Добавим в программу печать деления, сделаем коммит и отправим на сервер
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git commit -m "code: Добавил частное"
|
||||
[detached HEAD 47c4325] code: Добавил частное
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git push origin HEAD:main
|
||||
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), 413 bytes | 413.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/TimoshenkoAA/cs-lab02.git
|
||||
dc066f8..47c4325 HEAD -> main
|
||||
```
|
||||
|
||||
30. У Алисы. Дополним программу печатью максимума, сделаем коммит и отправим на сервер
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git commit -m "code: Добавлена печать максимума"
|
||||
[detached HEAD cf6718a] code: Добавлена печать максимума
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git push origin HEAD:main
|
||||
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), 442 bytes | 442.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/TimoshenkoAA/cs-lab02.git
|
||||
47c4325..cf6718a HEAD -> main
|
||||
```
|
||||
|
||||
31. На машине Боба:
|
||||
Не обновляя локальный репозитарий, добавим печать минимума, сделаем коммит и попытаемся отправить на сервер
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git commit -m "code: Добавлена печать минимума"
|
||||
[main 58348bb] code: Добавлена печать минимума
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git push
|
||||
To http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02.git
|
||||
! [rejected] main -> main (fetch first)
|
||||
error: failed to push some refs to 'http://uit.mpei.ru/git/TimoshenkoAA/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.
|
||||
|
||||
```
|
||||
Видно, что Git не дайт этого сделать, так как коммит Боба основан не на последнем существующем коммите
|
||||
|
||||
32. Посмотрим всю историю коммитов, предварительно загрузим их
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git fetch
|
||||
remote: Enumerating objects: 8, done.
|
||||
remote: Counting objects: 100% (8/8), done.
|
||||
remote: Compressing objects: 100% (6/6), done.
|
||||
remote: Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
|
||||
Unpacking objects: 100% (6/6), 781 bytes | 12.00 KiB/s, done.
|
||||
From http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02
|
||||
dc066f8..cf6718a main -> origin/main
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git log --oneline --decorate --all --graph
|
||||
* 58348bb (HEAD -> main) code: Добавлена печать минимума
|
||||
| * cf6718a (origin/main, origin/HEAD) code: Добавлена печать максимума
|
||||
| * 47c4325 code: Добавил частное
|
||||
|/
|
||||
* dc066f8 code: Добавил произведение
|
||||
* b735c11 git: Добавлен gitignore
|
||||
* 0c4bcdd code: Добавлена разность
|
||||
* c0f111e :code: Добавлена сумма
|
||||
* 68ce0a7 code: Добавлена ввод
|
||||
* c236982 build: добавлен файл проекта
|
||||
* f218e95 code: заготовка программы
|
||||
|
||||
```
|
||||
Видно, что возник конфликт коммитов. Это можно понять по символам "|" перед последним удачно отправленным коммитом
|
||||
|
||||
33. Попытаемся перенести коммит Боба поверх коммита Алисы, то есть поверх origin/main
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||
$ git rebase origin/main
|
||||
Auto-merging main.cpp
|
||||
CONFLICT (content): Merge conflict in main.cpp
|
||||
error: could not apply 58348bb... 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 58348bb... code: Добавлена печать минимума
|
||||
```
|
||||
На что получаем сообщение о конфликте кода. Необходимо сначала привести код Боба к тому виду, как у Алисы, а потом добавлять его функцию
|
||||
Сделаем это вручную.
|
||||
|
||||
34. После изменения кода нужно добавить файл в индекс и продолжить прерванную операцию rebase, а также отправим изменения на сервер:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|REBASE 1/1)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main|REBASE 1/1)
|
||||
$ git rebase --continue
|
||||
Successfully rebased and updated refs/heads/main.
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/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), 497 bytes | 497.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/TimoshenkoAA/cs-lab02.git
|
||||
cf6718a..e21f90e main -> main
|
||||
|
||||
```
|
||||
|
||||
35. Перейдём на машину Алисы. Создадим ветку double и перейдём в неё
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git branch double
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git checkout double
|
||||
Switched to branch 'double'
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double)
|
||||
$
|
||||
```
|
||||
Видим, что приглашение в командной строке изменилось. "(main)" стало "(double)"
|
||||
|
||||
36. Перейдём в ветку main, синхронзируем репозитарии и посмотрим историю:
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git checkout main
|
||||
Switched to branch 'main'
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ 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), 477 bytes | 14.00 KiB/s, done.
|
||||
From http://uit.mpei.ru/git/TimoshenkoAA/cs-lab02
|
||||
cf6718a..e21f90e main -> origin/main
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git log --oneline --decorate --all --graph
|
||||
* dbeedcb (double) code: Изменён тип переменной
|
||||
| * cdf30fd (origin/main) code: Добавлена печать минимума
|
||||
|/
|
||||
* 92284ce (HEAD -> main) code: Добавлена печать максимума
|
||||
* 22dd72f code: Добавил частное
|
||||
* fa9ce57 code: Добавил произведение
|
||||
* 20f7ad4 code: Вывод произведения
|
||||
* 47a638a git: Добавлен gitignore
|
||||
* 666c1db code: Вывод разности
|
||||
* 8420143 code: Теперь точно сумма
|
||||
* 8691b4c code: Добавлена сумма
|
||||
* ff38e89 biuld: добавлены файлы проекта
|
||||
* 6f61cde code: заготовка программы
|
||||
```
|
||||
Видим две вещи:
|
||||
1) Версия кода Алисы не совпадает с версией кода Боба. Т.к. перед созданием ветки мы не сделали обновление локального репозитария
|
||||
2) коммит с хэшем "dbeedcb", в котором мы меняли тип переменной в другой ветке
|
||||
|
||||
37. Сольём ветку double с главной
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main|REBASE 1/1)
|
||||
$ git merge double
|
||||
Updating 92284ce..dbeedcb
|
||||
Fast-forward
|
||||
main.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
|
||||
38. Попытаемся отправить изменения на сервер
|
||||
Но т.к. существует конфликт версий, о котором я писал в шаге 36, получаем ошибку
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git push
|
||||
To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git
|
||||
! [rejected] main -> main (non-fast-forward)
|
||||
error: failed to push some refs to 'http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git'
|
||||
hint: Updates were rejected because the tip of your current branch is behind
|
||||
hint: its remote counterpart. If you want to integrate the remote changes,
|
||||
hint: use 'git pull' before pushing again.
|
||||
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
||||
```
|
||||
Для исправления переключлся в ветку double, добавил правки Боба, создал коммит и отправил на сервер
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git checkout double
|
||||
Switched to branch 'double'
|
||||
M main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git add main.cpp
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git commit -m "code: Изменён тип переменной (double)"
|
||||
[double ad91778] code: Изменён тип переменной (double)
|
||||
1 file changed, 6 insertions(+)
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git checkout main
|
||||
Switched to branch 'main'
|
||||
Your branch and 'origin/main' have diverged,
|
||||
and have 1 and 1 different commits each, respectively.
|
||||
(use "git pull" if you want to integrate the remote branch with yours)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git merge double
|
||||
Updating dbeedcb..ad91778
|
||||
Fast-forward
|
||||
main.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git push
|
||||
Enumerating objects: 11, done.
|
||||
Counting objects: 100% (11/11), done.
|
||||
Delta compression using up to 8 threads
|
||||
Compressing objects: 100% (7/7), done.
|
||||
Writing objects: 100% (7/7), 802 bytes | 802.00 KiB/s, done.
|
||||
Total 7 (delta 5), reused 0 (delta 0), pack-reused 0
|
||||
remote: . Processing 1 references
|
||||
remote: Processed 1 references in total
|
||||
To http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02.git
|
||||
cdf30fd..d77ebc2 main -> main
|
||||
```
|
||||
По причине того, что я не удалил коммит, который был сделан для кода бз правок Боба, но с изменением переменной Алисы,
|
||||
Он тоже загрузился на сервер, но его сразу перекрыл нужный.
|
||||
|
||||
39. Посмотрим историю всех веток репозитария
|
||||
|
||||
```
|
||||
mapon@notebook MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||
$ git log --oneline --decorate --all --graph
|
||||
* d77ebc2 (HEAD -> main, origin/main) merge branch 'main' of http://uit.mpei.ru/git/GordiyevskikDA/cs-lab02
|
||||
|\
|
||||
* | ad91778 (double) code: Изменён тип переменной (double)
|
||||
* | dbeedcb code: Изменён тип переменной
|
||||
|/
|
||||
* cdf30fd code: Добавлена печать минимума
|
||||
* 92284ce code: Добавлена печать максимума
|
||||
* 22dd72f code: Добавил частное
|
||||
* fa9ce57 code: Добавил произведение
|
||||
* 20f7ad4 code: Вывод произведения
|
||||
* 47a638a git: Добавлен gitignore
|
||||
* 666c1db code: Вывод разности
|
||||
* 8420143 code: Теперь точно сумма
|
||||
* 8691b4c code: Добавлена сумма
|
||||
* ff38e89 biuld: добавлены файлы проекта
|
||||
* 6f61cde code: заготовка программы
|
||||
```
|
||||
Видно, что два предпоследних коммита находятся в другой ветке
|
||||
А последний коммит — слияние веток
|
Загрузка…
Ссылка в новой задаче