Родитель
f02ac5078e
Сommit
0cc2f7b235
@ -0,0 +1,437 @@
|
|||||||
|
Отчет по лабораторной работе № 2 "Система контроля версий Git"
|
||||||
|
|
||||||
|
Выполнил: Подловченко Д. Д.
|
||||||
|
Группа: А-01-24
|
||||||
|
Проверил: Козлюк Д. А.
|
||||||
|
|
||||||
|
Примечание: работа выполнялась на Windows.
|
||||||
|
|
||||||
|
|
||||||
|
1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02
|
||||||
|
$
|
||||||
|
|
||||||
|
|
||||||
|
2. Просмотрел файлы в рабочем каталоге командой "ls" --- пусто:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02
|
||||||
|
$ ls
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02
|
||||||
|
$
|
||||||
|
|
||||||
|
|
||||||
|
3. Создал каталоги Алисы и Боба, создал каталог "project",
|
||||||
|
изучил команду "cd" в процессе:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02
|
||||||
|
$ mkdir alice
|
||||||
|
mkdir bob
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02
|
||||||
|
$ cd alice
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice
|
||||||
|
$ mkdir project
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice
|
||||||
|
$ cd project
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project
|
||||||
|
$ cd ..
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice
|
||||||
|
$ cd project
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project
|
||||||
|
$
|
||||||
|
|
||||||
|
|
||||||
|
4. Инициализировал репозитарий:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project
|
||||||
|
$ git init
|
||||||
|
Initialized empty Git repository in C:/Users/Admin/Desktop/lab02/alice/project/.git/
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$
|
||||||
|
|
||||||
|
сообщение-подсказку, строки которого начинаются с hint: не выдало,
|
||||||
|
поэтому менять название на main буду позже
|
||||||
|
|
||||||
|
|
||||||
|
5. Настроил репозитарий Алисы, чтобы коммиты были от ее имени:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git config user.name 'Alice (PodlovchenkoDD)'
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git config user.email 'PodlovchenkoDD@mpei.ru'
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$
|
||||||
|
|
||||||
|
|
||||||
|
6. Запустил CodeBlocks и создал проект в репозитарии Алисы,
|
||||||
|
Resulting filename: "C:\Users\Admin\Desktop\lab02\alice\project\project.cbp",
|
||||||
|
Собрал проект и на этом этапе структура файлов следующая:
|
||||||
|
lab02
|
||||||
|
├── alice
|
||||||
|
│ └── project <--------- текущий рабочий каталог
|
||||||
|
│ ├── .git <--------- создан командой "git init"
|
||||||
|
│ ├── bin <--------- создан CodeBlocks при сборке
|
||||||
|
│ ├── obj <--------- (то же самое)
|
||||||
|
│ ├── main.cpp <-- код программы
|
||||||
|
│ └── project.cbp <-- файл проекта
|
||||||
|
└── bob
|
||||||
|
|
||||||
|
|
||||||
|
7. Вернувшись в Git Bash, просмотрел состояние рабочей копии:
|
||||||
|
|
||||||
|
Admin@zhi-es 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)
|
||||||
|
|
||||||
|
Данные строки показывают, что пока не существует коммитов и есть не отслеживаемые файлы,
|
||||||
|
которые пока не индексированы.
|
||||||
|
|
||||||
|
8. Начинаю отслеживать "main.cpp", добавляя файл в индекс и
|
||||||
|
выполняю коммит с файлом main.cpp и коротким сообщением::
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git add main.cpp
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git commit -m 'code: заготовка программы'
|
||||||
|
[master (root-commit) 814a45e] code: заготовка программы
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
create mode 100644 main.cpp
|
||||||
|
|
||||||
|
9. Заменил тело функции main() на ввод двух чисел, пересобрал и
|
||||||
|
увидел различие:
|
||||||
|
|
||||||
|
Admin@zhi-es 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
|
||||||
|
|
||||||
|
Untracked files:
|
||||||
|
(use "git add <file>..." to include in what will be committed)
|
||||||
|
bin/
|
||||||
|
obj/
|
||||||
|
project.cbp
|
||||||
|
|
||||||
|
no changes added to commit (use "git add" and/or "git commit -a")
|
||||||
|
|
||||||
|
Появилось уведомление, что "main.cpp" модифицировался и просит использовать другую команду,
|
||||||
|
чтобы занести изменения в репозиторий
|
||||||
|
|
||||||
|
|
||||||
|
10. Занёс все нужные файлы в .gitignore и закоммитил его с заголовком "git":
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git add .gitignore
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git commit -m "git"
|
||||||
|
[master 79acfbc] git
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
create mode 100644 .gitignore
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$
|
||||||
|
|
||||||
|
|
||||||
|
11. Попробовав все вариации команд git log, в частности git log --stat:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git log --stat
|
||||||
|
commit 79acfbc5460e6b1320fef4b339237d0d7eb775a4 (HEAD -> master)
|
||||||
|
Author: Alice (PodlovchenkoDD) <PodlovchenkoDD@mpei.ru>
|
||||||
|
Date: Sun Mar 23 19:24:08 2025 +0300
|
||||||
|
|
||||||
|
git
|
||||||
|
|
||||||
|
.gitignore | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$
|
||||||
|
|
||||||
|
команда выводит хэш коммита -> автора -> дату -> содержимое коммита ->
|
||||||
|
-> название и количество затронутых файлов
|
||||||
|
|
||||||
|
|
||||||
|
12. Посмотрел предпоследний коммит с помощью команды git show HEAD~1:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git show HEAD~1
|
||||||
|
commit 814a45e6ab5c823aea95d0b93aae7481724b71e9
|
||||||
|
Author: Alice (PodlovchenkoDD) <PodlovchenkoDD@mpei.ru>
|
||||||
|
Date: Sun Mar 23 18:16:06 2025 +0300
|
||||||
|
|
||||||
|
code: заготовка программы
|
||||||
|
|
||||||
|
diff --git a/main.cpp b/main.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..b4392ec
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/main.cpp
|
||||||
|
@@ -0,0 +1,9 @@
|
||||||
|
+#include <iostream>
|
||||||
|
+
|
||||||
|
+using namespace std;
|
||||||
|
+
|
||||||
|
+int main()
|
||||||
|
+{
|
||||||
|
+ cout << "Hello world!" << endl;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
|
||||||
|
13. Внес изменения в main.cpp: добавил печать произведения чисел, но не стал пока делать коммит.
|
||||||
|
С помощью git diff получил:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (master)
|
||||||
|
$ git diff
|
||||||
|
diff --git a/main.cpp b/main.cpp
|
||||||
|
index b4392ec..64da2d3 100644
|
||||||
|
--- a/main.cpp
|
||||||
|
+++ b/main.cpp
|
||||||
|
@@ -4,6 +4,11 @@ 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'
|
||||||
|
+ << "A * B = " << a * b << '\n';
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
Как видно команда отображает какие строки исчезли(-) и какие прибавились(+), так же хэш последнего коммита.
|
||||||
|
|
||||||
|
|
||||||
|
14. Успешно подключил рабочую версию к удалённой, отправил проект на сервер...
|
||||||
|
|
||||||
|
15. Получил проект с помощью git clone в папку боба и зарегистрировался(git config) от имени боба:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main)
|
||||||
|
$ git clone git@uit.mpei.ru:PodlovchenkoDD/cs-lab02.git project
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main)
|
||||||
|
$ git config user.name "Bob (PodlovchenkoDD)"
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main)
|
||||||
|
$ git config user.email "PodlovchenkoDD@mpei.ru"
|
||||||
|
|
||||||
|
16. Отправил коммит с произведением от имени боба на сервер с помощью git push и принял изменения от имени Алисы с помощью git fetch:
|
||||||
|
Боб:
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main)
|
||||||
|
$ git push
|
||||||
|
Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519':
|
||||||
|
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), 365 bytes | 365.00 KiB/s, done.
|
||||||
|
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
|
||||||
|
remote: . Processing 1 references
|
||||||
|
remote: Processed 1 references in total
|
||||||
|
To uit.mpei.ru:PodlovchenkoDD/cs-lab02.git
|
||||||
|
ccc711f..ce2e41a main -> main
|
||||||
|
|
||||||
|
Алиса:
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git fetch
|
||||||
|
Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519':
|
||||||
|
remote: Enumerating objects: 5, done.
|
||||||
|
remote: Counting objects: 100% (5/5), done.
|
||||||
|
remote: Compressing objects: 100% (3/3), done.
|
||||||
|
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
|
||||||
|
Unpacking objects: 100% (3/3), 345 bytes | 11.00 KiB/s, done.
|
||||||
|
From uit.mpei.ru:PodlovchenkoDD/cs-lab02
|
||||||
|
ccc711f..ce2e41a main -> origin/main
|
||||||
|
|
||||||
|
17. Просмотрел историю всех веток(git log --oneline --decorate --all --graph) и подвинул ветку main к скачанной версии(git pull --ff-only):
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* ce2e41a (origin/main, origin/HEAD) code: произведение после ошибки
|
||||||
|
* ccc711f (HEAD -> main) добавление proj
|
||||||
|
* 3075de5 code: без произведения перед бобом
|
||||||
|
* 5c5d769 first commit
|
||||||
|
* ca1511a (master) code:вывод произведения
|
||||||
|
* 79acfbc git
|
||||||
|
* 814a45e code: заготовка программы
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git pull --ff-only
|
||||||
|
Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519':
|
||||||
|
Updating ccc711f..ce2e41a
|
||||||
|
Fast-forward
|
||||||
|
main.cpp | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
18. Перешёл к "Разрешение конфликтов правок при совместной работе", синхронизировал у обоих пользователей:
|
||||||
|
|
||||||
|
cout << "A + B = " << a + b << '\n'
|
||||||
|
<< "A - B = " << a - b << '\n'
|
||||||
|
<< "A * B = " << a * b << '\n'
|
||||||
|
<< "A / B = " << a / b << '\n';
|
||||||
|
|
||||||
|
19. После добавления в код минимума(Алиса) и максимума(боб), после отправки на сервер
|
||||||
|
возникла ожидаемая ошибка, git rebase origin/main и после git show HEAD можем заметить:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main)
|
||||||
|
$ git show HEAD
|
||||||
|
commit e64fb31d7e1cc64f067052811999a092cc9a7306 (HEAD -> main)
|
||||||
|
Author: Bob (PodlovchenkoDD) <PodlovchenkoDD>
|
||||||
|
Date: Mon Mar 24 15:49:52 2025 +0300
|
||||||
|
|
||||||
|
Добавление максимума от лица боба
|
||||||
|
|
||||||
|
diff --git a/main.cpp b/main.cpp
|
||||||
|
index 38bc977..2f6e5f4 100644
|
||||||
|
--- a/main.cpp
|
||||||
|
+++ b/main.cpp
|
||||||
|
@@ -11,4 +11,13 @@ int main()
|
||||||
|
<< "A - B = " << a - b << '\n'
|
||||||
|
<< "A * B = " << a * b << '\n'
|
||||||
|
<< "A / B = " << a / b << '\n';
|
||||||
|
+ if(a > b){
|
||||||
|
+ cout << "Max: " << a << '\n';
|
||||||
|
+ }
|
||||||
|
+ if(b > a){
|
||||||
|
+ cout << "Max: " << b << '\n';
|
||||||
|
+ }
|
||||||
|
+ else{
|
||||||
|
+ cout << "Max: " << a << b << '\n';
|
||||||
|
+ }
|
||||||
|
|
||||||
|
То есть последний коммит на вывод максимума
|
||||||
|
|
||||||
|
20. После выхода из состояния rebase(git add main.cpp
|
||||||
|
git rebase --continue) и редактирования файла получаем:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/bob/project (main)
|
||||||
|
$ git show HEAD
|
||||||
|
commit 32f18606672dd7f3fb41694b7ba161c7798b7274 (HEAD -> main)
|
||||||
|
Author: Bob (PodlovchenkoDD) <PodlovchenkoDD>
|
||||||
|
Date: Mon Mar 24 15:49:52 2025 +0300
|
||||||
|
|
||||||
|
Добавление максимума от лица боба
|
||||||
|
|
||||||
|
diff --git a/main.cpp b/main.cpp
|
||||||
|
index 5d5692a..d6dbc1d 100644
|
||||||
|
--- a/main.cpp
|
||||||
|
+++ b/main.cpp
|
||||||
|
@@ -11,6 +11,7 @@ int main()
|
||||||
|
<< "A - B = " << a - b << '\n'
|
||||||
|
<< "A * B = " << a * b << '\n'
|
||||||
|
<< "A / B = " << a / b << '\n';
|
||||||
|
+
|
||||||
|
if(a < b){
|
||||||
|
cout << "Min: " << a << '\n';
|
||||||
|
}
|
||||||
|
@@ -19,5 +20,15 @@ int main()
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cout << "Min: " << a << b << '\n';
|
||||||
|
+
|
||||||
|
+ if(a > b){
|
||||||
|
+ cout << "Max: " << a << '\n';
|
||||||
|
+ }
|
||||||
|
+ if(b > a){
|
||||||
|
+ cout << "Max: " << b << '\n';
|
||||||
|
+ }
|
||||||
|
+ else{
|
||||||
|
+ cout << "Max: " << a << b << '\n';
|
||||||
|
+
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
21. История всех веток после замены типа на double у Алисы:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* d48e22d (double) А и б теперь double
|
||||||
|
| * 32f1860 (origin/main, origin/HEAD) Добавление максимума от лица боба
|
||||||
|
|/
|
||||||
|
* da101ef (HEAD -> main) Добавление минимума для Алисы
|
||||||
|
* d9df2c2 Разрешение конфликтов правок
|
||||||
|
* ce2e41a code: произведение после ошибки
|
||||||
|
* ccc711f добавление proj
|
||||||
|
* 3075de5 code: без произведения перед бобом
|
||||||
|
* 5c5d769 first commit
|
||||||
|
* ca1511a (master) code:вывод произведения
|
||||||
|
* 79acfbc git
|
||||||
|
* 814a45e code: заготовка программы
|
||||||
|
|
||||||
|
22. 1)После создания ветки double, переключаемся на неё:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git branch double
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git checkout double
|
||||||
|
Switched to branch 'double'
|
||||||
|
|
||||||
|
2)Далее меняю тип данных на double и переключаюсь обратно на main.
|
||||||
|
|
||||||
|
3)После слияниe (git merge double):
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git merge double
|
||||||
|
Updating da101ef..d48e22d
|
||||||
|
Fast-forward
|
||||||
|
main.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
4)отправляю новый коммит:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git push
|
||||||
|
Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519':
|
||||||
|
To uit.mpei.ru:PodlovchenkoDD/cs-lab02.git
|
||||||
|
Enter passphrase for key '/c/Users/Admin/.ssh/id_ed25519':
|
||||||
|
Auto-merging main.cpp
|
||||||
|
Merge made by the 'ort' strategy.
|
||||||
|
main.cpp | 11 +++++++++++
|
||||||
|
1 file changed, 11 insertions(+)
|
||||||
|
|
||||||
|
5)Отправляю последний коммит со всеми изменениями и сверяю логи:
|
||||||
|
|
||||||
|
Admin@zhi-es MINGW64 ~/Desktop/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* f02ac50 (HEAD -> main) Merge branch 'main' of uit.mpei.ru:PodlovchenkoDD/cs-lab02
|
||||||
|
|\
|
||||||
|
| * 32f1860 (origin/main, origin/HEAD) Добавление максимума от лица боба
|
||||||
|
* | d48e22d (double) А и б теперь double
|
||||||
|
|/
|
||||||
|
* da101ef Добавление минимума для Алисы
|
||||||
|
* d9df2c2 Разрешение конфликтов правок
|
||||||
|
* ce2e41a code: произведение после ошибки
|
||||||
|
* ccc711f добавление proj
|
||||||
|
* 3075de5 code: без произведения перед бобом
|
||||||
|
* 5c5d769 first commit
|
||||||
|
* ca1511a (master) code:вывод произведения
|
||||||
|
* 79acfbc git
|
||||||
|
* 814a45e code: заготовка программы
|
||||||
|
|
||||||
|
Всего получилось 11 коммитов, потому что много раз делал повторные действия)
|
Загрузка…
Ссылка в новой задаче