Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
|
2 лет назад | |
---|---|---|
.gitignore | 2 лет назад | |
README.txt | 2 лет назад | |
main.cpp | 2 лет назад | |
project.cbp | 2 лет назад |
README.txt
Отчет по лабораторной работе № 2 "Система контроля версий Git"
Выполнил: Никиткин Т. Ю.
Группа: А-01-22
Проверил: Козлюк Д. А.
Примечание: работа выполнялась на Linux.
1. Создал на рабочем столе каталог lab02 и запустил терминал:
archlinux%
2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто:
archlinux% ls
archlinux%
3. Создал каталоги Алисы и Боба, создал каталог "project",
изучил команду "cd" в процессе:
archlinux% mkdir alice
archlinux% mkdir bob
archlinux% cd alice
archlinux% mkdir project
archlinux% cd project
archlinux% pwd
/home/sage/Desktop/lab02/alice/project
archlinux% cd ..
archlinux% pwd
/home/sage/Desktop/lab02/alice
archlinux% cd project
archlinux% pwd
/home/sage/Desktop/lab02/alice/project
archlinux%
4. Инициализировал репозитарий и подтвердил командой ls -A наличие папки .git:
archlinux% git init
подсказка: Using 'master' as the name for the initial branch. This default branch name
подсказка: is subject to change. To configure the initial branch name to use in all
подсказка: of your new repositories, which will suppress this warning, call:
подсказка:
подсказка: git config --global init.defaultBranch <name>
подсказка:
подсказка: Names commonly chosen instead of 'master' are 'main', 'trunk' and
подсказка: 'development'. The just-created branch can be renamed via this command:
подсказка:
подсказка: git branch -m <name>
Инициализирован пустой репозиторий Git в /home/sage/Desktop/lab02/alice/project/.git/
archlinux% git branch -m main
archlinux% ls -A
.git
archlinux%
5. Настроил репозитарий Алисы, чтобы коммиты были от её имени:
archlinux% git config user.name 'Alice (NikitkinTY)'
archlinux% git config user.email 'NikitkinTY@mpei.ru'
archlinux%
6. Запустил CodeBlocks и создал проект в репозитарии Алисы со следующими
настройками:
Project title: project
Folder to create project in: /home/sage/Desktop/lab02/alice/
Project filename: project.cbp
Resulting filename: /home/sage/Desktop/lab02/alice/project/project.cbp
7. Собрал проект, после чего вернулся в git и просмотрел состояние
рабочей копии:
archlinux% git status
Текущая ветка: main
Еще нет коммитов
Неотслеживаемые файлы:
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
bin/
main.cpp
obj/
project.cbp
индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%
Пояснение к выведенной информации:
Текущая ветка: main #Вывод названия текущей ветки
Еще нет коммитов #Констатация отсутствия коммитов
Неотслеживаемые файлы: #Вывод всех неотслеживаемых файлов с подсказкой о
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) #git add
bin/
main.cpp
obj/
project.cbp
индекс пуст, но есть неотслеживаемые файлы #Понятно из содержания
(используйте «git add», чтобы проиндексировать их) #Подсказка о добавление в индекс
8. Добавил main.cpp в индекс, то есть в набор изменений, который войдет
в очередной коммит:
archlinux% git add main.cpp
archlinux%
9. Ещё раз проверил состояние рабочей копии:
archlinux% git status
Текущая ветка: main
Еще нет коммитов
Изменения, которые будут включены в коммит:
(используйте «git rm --cached <файл>...», чтобы убрать из индекса)
новый файл: main.cpp
Неотслеживаемые файлы:
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
bin/
obj/
project.cbp
archlinux%
Пояснение к выведенной информации:
Текущая ветка: main #Вывод названия текущей ветки
Еще нет коммитов #Констатация отсутствия коммитов
Изменения, которые будут включены в коммит: #Вывод файла (main.cpp), который попадёт в
(используйте «git rm --cached <файл>...», чтобы убрать из индекса) #следующий коммит, и подсказка о выводе файла
новый файл: main.cpp #из индекса
Неотслеживаемые файлы: #Вывод всех оставшихся неотслеживаемых файлов с
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) #подсказкой о git add
bin/
obj/
project.cbp
Из изменений - сообщение о пустом индексе и появление списка для нового коммита
10. Выполнил коммит с файлом main.cpp и коротким сообщением:
archlinux% git commit -m 'code: заготовка программы'
[main (корневой коммит) 0f2fab6] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
archlinux%
11. Проверил состояние проекта, добавил файл project.cbp в индекс и
сделал коммит с ним, тема — build:
uarchlinux% git add project.cbp
archlinux% git commit -m 'build: добавлен файл проекта'
[main 451a2b6] build: добавлен файл проекта
1 file changed, 38 insertions(+)
create mode 100644 project.cbp
archlinux%
12. Заменил тело функции main() на ввод двух чисел и сохранил файл:
cout << "Enter A and B: ";
int a, b;
cin >> a >> b;
13. Просмотрел состоянние репозитария:
archlinux% git status
Текущая ветка: main
Изменения, которые не в индексе для коммита:
(используйте «git add <файл>...», чтобы добавить файл в индекс)
(используйте «git restore <файл>...», чтобы отменить изменения в рабочем каталоге)
изменено: main.cpp
Неотслеживаемые файлы:
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
bin/
obj/
индекс пуст (используйте «git add» и/или «git commit -a»)
archlinux%
Заметил, что main.cpp больше не находится под "Неотслеживаемые файлы:", теперь
main.cpp отображается выше с припиской "изменено:".
Отличие от случая, когда добавлялся новый файл и изменялся существующий в том,
что новый файл входил в индекс, а изменёный нет.
14. Использовал первый способ для коммита изменений, а именно выбор файла,
изменния в которых должны войти в коммит, после чего сам коммит:
archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен ввод двух чисел'
[main 1a522a3] code: добавлен ввод двух чисел
1 file changed, 3 insertions(+), 1 deletion(-)
archlinux%
15. Добавил в программу вывод суммы a и b:
cout << "A + B = " << a + b << '\n';
16. Использовал второй способ для коммита изменений, а именно добавить
в индекс все изменения, затем сам коммит:
archlinux% git add -u
archlinux% git commit -m 'code: добавлен вывод суммы чисел'
[main 76b205d] code: добавлен вывод суммы чисел
1 file changed, 1 insertion(+)
archlinux%
17. Добавил в программу вывод разности a и b:
cout << "A + B = " << a + b << '\n'
<< "A - B = " << a - b << '\n';
18. использовал третий способ для коммита изменений, а именно добавление
всех изменений в индекс и сам коммит в один шаг.
archlinux% git commit -a -m 'code: добавлен вывод разности чисел'
[main 4bf99bf] code: добавлен вывод разности чисел
1 file changed, 2 insertions(+), 1 deletion(-)
archlinux%
19. Проверил состояние проекта и заметил наличие каталогов bin/ , obj/ :
archlinux% git status
Текущая ветка: main
Неотслеживаемые файлы:
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
bin/
obj/
индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%
20. Создал в CodeBlocks файл .gitignore в корне репозитария со строчкой
/bin , после чего проверил состояние проекта:
archlinux% git status
Текущая ветка: main
Неотслеживаемые файлы:
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
.gitignore
obj/
индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%
21. Добавил в файл .gitignore строчки /obj и /*.layout, после чего проверил
состояние проекта.
archlinux% git status
Текущая ветка: main
Неотслеживаемые файлы:
(используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
.gitignore
индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
archlinux%
22. Создал коммит с .gitignore, тема - git :
archlinux% git add .gitignore
archlinux% git commit -m 'git'
[main 9374e7a] git
1 file changed, 3 insertions(+)
create mode 100644 .gitignore
archlinux%
23. Опробовал git log, который показывает журнал репозитария:
archlinux% git log
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:26:50 2023 +0300
git
commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:17:22 2023 +0300
code: добавлен вывод разности чисел
commit 76b205dcf4d398984a32e7749a2c182ba3685b12
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 12:45:17 2023 +0300
code: добавлен вывод суммы чисел
commit 1a522a3f2ae2dc6ea7b247471898f7543727f2f5
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 12:29:57 2023 +0300
code: добавлен ввод двух чисел
commit 451a2b6ca5e601babdd5db674769b3324ed25214
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 12:19:37 2023 +0300
archlinux%
24. Опробовал git log --stat показывает файлы, который измененные в коммитах:
archlinux% git log --stat
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:26:50 2023 +0300
git
.gitignore | 3 +++
1 file changed, 3 insertions(+)
commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:17:22 2023 +0300
code: добавлен вывод разности чисел
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit 76b205dcf4d398984a32e7749a2c182ba3685b12
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 12:45:17 2023 +0300
code: добавлен вывод суммы чисел
main.cpp | 1 +
1 file changed, 1 insertion(+)
commit 1a522a3f2ae2dc6ea7b247471898f7543727f2f5
archlinux%
Пояснение к последнему коммиту:
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) #Вывод хэша коммита и указания на то, что это последний коммит
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru> #Имя и почта автора коммита
Date: Sun Mar 26 14:26:50 2023 +0300 #Время и дата совершения коммита
git #Тема коммита
.gitignore | 3 +++ #Название файла вошедшего в коммит и количество изменений в нём
1 file changed, 3 insertions(+) #Вывод общего количества изменёных файлов и изменений в них
25. Опробовал git log --oneline --decorate показывает файлы, который
показывает коммиты компактно (--oneline), а также показывает ссылки, концы
веток и тэги (--decorate):
archlinux% git log --oneline --decorate
9374e7a (HEAD -> main) git
4bf99bf code: добавлен вывод разности чисел
76b205d code: добавлен вывод суммы чисел
1a522a3 code: добавлен ввод двух чисел
451a2b6 build: добавлен файл проекта
0f2fab6 code: заготовка программы
archlinux%
26. Опробовал git log --oneline --decorate --all --graph,
который делает то же для всех веток (--all), причем коммиты отображаются
в терминале в виде дерева (--graph):
archlinux% git log --oneline --decorate --all --graph
* 9374e7a (HEAD -> main) git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%
27. Нашёл коммиты по теме built:
archlinux% git log --grep "build:"
commit 451a2b6ca5e601babdd5db674769b3324ed25214
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 12:19:37 2023 +0300
build: добавлен файл проекта
archlinux%
28. Нашёл коммиты затрагивающие project.cbp:
archlinux% git log -- project.cbp
commit 451a2b6ca5e601babdd5db674769b3324ed25214
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 12:19:37 2023 +0300
build: добавлен файл проекта
archlinux%
29. Просмотрел последний коммит, как текущий коммит:
archlinux% git show HEAD
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:26:50 2023 +0300
git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
archlinux%
30. Просмотрел последний коммит по имени ветви
archlinux% git show main
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:26:50 2023 +0300
git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
archlinux%
31. Просмотрел последний коммит по хэшу нужного коммита
archlinux% git show 9374e7a
commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main)
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:26:50 2023 +0300
git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d85abef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/*.layout
archlinux%
32. Просмотрел предпоследний коммит:
archlinux% git show HEAD~1
commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac
Author: Alice (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 14:17:22 2023 +0300
code: добавлен вывод разности чисел
diff --git a/main.cpp b/main.cpp
index 6de6dd2..5371b30 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,6 +7,7 @@ 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';
return 0;
}
archlinux%
33. Добавил вывод произведения чисел:
cout << "A + B = " << a + b << '\n'
<< "A + B = " << a + b << '\n'
<< "A - B = " << a - b << '\n';
34. Просмотрел изменения рабочей копии:
archlinux% git diff
diff --git a/main.cpp b/main.cpp
index 5371b30..fbd9488 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,6 +8,7 @@ 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';
return 0;
}
archlinux%
Пояснение к выведенной информации:
diff --git a/main.cpp b/main.cpp #Вывод входных данных сравнения
index 5371b30..fbd9488 100644 #Метаданные git
--- a/main.cpp #Маркер изменений входных данных
+++ b/main.cpp #Маркер изменений входных данных
@@ -8,6 +8,7 @@ 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';
return 0;
}
35. Просмотрел изменения от первого коммита до коммита, добавляющего вывод разности:
archlinux% git diff 0f2fab6 4bf99bf
diff --git a/main.cpp b/main.cpp
index b4392ec..5371b30 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,10 @@ 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;
}
diff --git a/project.cbp b/project.cbp
new file mode 100644
index 0000000..c4697a9
--- /dev/null
+++ b/project.cbp
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="project" />
+ <Option pch_mode="2" />
archlinux%
36. Выполнил коммит с выводом произведения:
archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод произведения чисел'
[main cf68a51] code: добавлен вывод произведения чисел
1 file changed, 2 insertions(+), 1 deletion(-)
archlinux%
37. Откатил проект до предыдущего коммита:
archlinux% git reset --hard HEAD~1
Указатель HEAD сейчас на коммите 9374e7a git
archlinux%
В программе остались только вывод суммы и разности чисел.
38. Добавил в main.cpp строчку:
// you may type whatever you want
39. Откатил main.cpp до последнего коммита:
archlinux% git checkout HEAD -- main.cpp
archlinux%
Из программы был убран комментарий.
40. Выполнил регестрацию на Git УИТ
41. Создал пару ключей:
archlinux% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sage/.ssh/id_rsa):
Created directory '/home/sage/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sage/.ssh/id_rsa
Your public key has been saved in /home/sage/.ssh/id_rsa.pub
...
archlinux%
42. Запустил программу-агент и загрузил ключ:
archlinux% eval $(ssh-agent -s)
Agent pid 30472
archlinux% ssh-add
Enter passphrase for /home/sage/.ssh/id_rsa:
Identity added: /home/sage/.ssh/id_rsa (sage@archlinux)
43. Отобразил открытый ключ:
archlinux% cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClkkIgxFNp7UpMQ62HusJpdbiyakrZ9JoP4SsIniUs81/vxBW464KBFsuNPQZnLWheNvOQBH2QPMNPFeIpLUWnJHw5DaivOxpBfglqPK0JKjO5vTvJW7ImDIeGlBt3gjuycnGhotbquhgg0VdQJUXGPc7VgXUiw45B7c8n5bCEuTljMxCioole2SfLdRTBwfLdcevEZR529R6zLmikSURo5H3W1bJ2JyqRbrYP2tfN62q58R78VPwevBmIfx3CJ1wntidQhqLQtL79qiO+yPaJHsRI2+ODheSt+Qn4BKWVXwvWwvRlHg0sJTz2bG0TvRaGYUi7SCd3p+cf6ykxqBZAbiegwtDnBotnR8M72lX9xC5uWzykZKMrQx5wRT3Rq5J8pUZNie2BB/sKJ64ZR4bssYAefwcy3FYMSEhnWAN6vI8LfuD778Y5V72fKuUkQKH5GYfjh6tStMfrvcxe85RcxIK2ILDk9JEaG/U7fuuzzjRMFU+5SbxFRbYrtYp8eR0= sage@archlinux
archlinux%
44. Добавил открытый ключ в SSH keys в список открытых ключей своей учетной записи.
45. Создал на сервере пустой репозитарий cs-lab02, после чего настроил связь с удалённым хранилищем:
archlinux% git remote add origin git@uit.mpei.ru:NikitkinTY/cs-lab02.git
archlinux% 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.
Перечисление объектов: 18, готово.
Подсчет объектов: 100% (18/18), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (16/16), готово.
Запись объектов: 100% (18/18), 2.32 КиБ | 2.32 МиБ/с, готово.
Всего 18 (изменений 2), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
archlinux%
46. Клонировал проект в папке Боба и выполнил переход в каталог проекта:
archlinux% git clone git@uit.mpei.ru:NikitkinTY/cs-lab02.git project
Клонирование в «project»...
Enter passphrase for key '/home/sage/.ssh/id_rsa':
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
Получение объектов: 100% (18/18), готово.
Определение изменений: 100% (2/2), готово.
archlinux% cd project
archlinux%
47. Выполнил настройку Git "на машине Боба":
archlinux% git config user.name 'Bob (NikitkinTY)'
archlinux% git config user.email 'NikitkinTY@mpei.ru'
archlinux%
48. Добавил в main.cpp вывод произведения чисел и закоммитил, после чего убедился, что коммит сделан от имени Боба:
archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод произведения чисел'
[main c2aa84d] code: добавлен вывод произведения чисел
1 file changed, 2 insertions(+), 1 deletion(-)
archlinux% git log
commit c2aa84da3b1fd033a51f9591960daa5ec93961b4 (HEAD -> main)
Author: Bob (NikitkinTY) <NikitkinTY@mpei.ru>
Date: Sun Mar 26 18:14:10 2023 +0300
code: добавлен вывод произведения чисел
...
49. Отправил коммит на сервер:
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 428 байтов | 428.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
9374e7a..c2aa84d main -> main
archlinux%
50. «На машине Алисы» выполнил загрузку изменений:
archlinux% 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
Распаковка объектов: 100% (3/3), 408 байтов | 408.00 КиБ/с, готово.
Из uit.mpei.ru:NikitkinTY/cs-lab02
9374e7a..c2aa84d main -> origin/main
archlinux%
51. Посмотрел историю всех веток:
archlinux% git log --oneline --decorate --all --graph
* c2aa84d (origin/main) code: добавлен вывод произведения чисел
* 9374e7a (HEAD -> main) git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%
Заметил, что ветка main отстает на один коммит от ветки origin/main
52. Продвинул ветку main к скаченной версии:
archlinux% git pull --ff-only
Обновление 9374e7a..c2aa84d
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
archlinux%
53. Убедился, что рабочая копия проекта «у Алисы» соответствует версии «у Боба»:
archlinux% git status
Текущая ветка: main
Эта ветка соответствует «origin/main».
нечего коммитить, нет изменений в рабочем каталоге
archlinux%
54. Добавил в программу печать разности чисел, сделал коммит, отправил его на сервер и получил новую версию «на машине Боба»:
<< "A / B = " << a / b << '\n';
archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод частного двух чисел'
[main 70fe935] code: добавлен вывод частного двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)
archlinux% git push
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 449 байтов | 449.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
c2aa84d..70fe935 main -> main
archlinux%
archlinux% git pull
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Обновление c2aa84d..70fe935
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
archlinux% git status
Текущая ветка: main
Эта ветка соответствует «origin/main».
нечего коммитить, нет изменений в рабочем каталоге
archlinux%
55. «На машине Алисы» дополнил программу печатью максимума, сделал коммит и отправил его на сервер:
Примечание:
Я добавил вывод и максимума и минимума, что позже исправил следующим коммитом.
if(a > b) {cout << "Maximum from A and B = " << a << '\n';}
else {cout << "Minimum from A and B = " << b << '\n';
archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод максимума из чисел'
[main 020760b] code: добавлен вывод максимума из чисел
1 file changed, 2 insertions(+)
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 476 байтов | 476.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
70fe935..020760b main -> main
archlinux%
if(a > b) {cout << "Maximum from A and B = " << a << '\n';}
archlinux% git add main.cpp
archlinux% git commit -m 'code: исправлен вывод максимального значения'
[main 5e40d05] code: исправлен вывод максимального значения
1 file changed, 1 deletion(-)
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
Перечисление объектов: 5, готово.
Подсчет объектов: 100% (5/5), готово.
При сжатии изменений используется до 12 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 424 байта | 424.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:NikitkinTY/cs-lab02.git
020760b..5e40d05 main -> main
archlinux%
56. «На машине Боба» дополнил программу печатью минимума, сделал коммит и попытался отправить его на сервер.
archlinux% git add main.cpp
archlinux% git commit -m 'code: добавлен вывод минимального минимального значения'
[main a89f6b6] code: добавлен вывод минимального минимального значения
1 file changed, 1 insertion(+)
archlinux% git push
Enter passphrase for key '/home/sage/.ssh/id_rsa':
To uit.mpei.ru:NikitkinTY/cs-lab02.git
! [rejected] main -> main (fetch first)
error: не удалось отправить некоторые ссылки в «uit.mpei.ru:NikitkinTY/cs-lab02.git»
подсказка: Обновления были отклонены, так как внешний репозиторий содержит
подсказка: изменения, которых у вас нет в вашем локальном репозитории.
подсказка: Обычно, это связанно с тем, что кто-то уже отправил изменения в
подсказка: то же место. Перед повторной отправкой ваших изменений, вам нужно
подсказка: забрать и слить изменения из внешнего репозитория себе
подсказка: (например, с помощью «git pull ...»).
подсказка: Для дополнительной информации, смотрите «Заметку о быстрой перемотке»
подсказка: в «git push --help».
archlinux%
archlinux%
57. «От лица Боба» загрузил коммиты из удаленного хранилища и отобразил историю всех веток:
archlinux% git fetch
Enter passphrase for key '/home/sage/.ssh/id_rsa':
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
Распаковка объектов: 100% (6/6), 829 байтов | 829.00 КиБ/с, готово.
Из uit.mpei.ru:NikitkinTY/cs-lab02
70fe935..5e40d05 main -> origin/main
archlinux% git log --oneline --decorate --all --graph
* a89f6b6 (HEAD -> main) code: добавлен вывод минимального минимального значения
| * 5e40d05 (origin/main, origin/HEAD) code: исправлен вывод максимального значения
| * 020760b code: добавлен вывод максимума из чисел
|/
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%
58. Попытался от лица Боба переместить свой коммит поверх коммита Алисы:
archlinux% git rebase origin/main
Автослияние main.cpp
КОНФЛИКТ (содержимое): Конфликт слияния в main.cpp
error: не удалось применить коммит a89f6b6... code: добавлен вывод минимального минимального значения
подсказка: Resolve all conflicts manually, mark them as resolved with
подсказка: "git add/rm <conflicted_files>", then run "git rebase --continue".
подсказка: You can instead skip this commit: run "git rebase --skip".
подсказка: To abort and get back to the state before "git rebase", run "git rebase --abort".
Не удалось применить коммит a89f6b6... code: добавлен вывод минимального минимального значения
archlinux% git status
интерактивное перемещение в процессе; над 5e40d05
Last command done (1 command done):
pick a89f6b6 code: добавлен вывод минимального минимального значения
Команд больше не осталось.
Вы сейчас перемещаете ветку «main» над «5e40d05».
(разрешите конфликты, затем запустите «git rebase --continue»)
(используйте «git rebase --skip», чтобы пропустить этот патч)
(используйте «git rebase --abort», чтобы перейти на оригинальную ветку)
Не слитые пути:
(используйте «git restore --staged <файл>...», чтобы убрать из индекса)
(используйте «git add <файл>...», чтобы пометить разрешение конфликта)
оба изменены: main.cpp
индекс пуст (используйте «git add» и/или «git commit -a»)
archlinux%
Пояснение к выведенной информации:
интерактивное перемещение в процессе; над 5e40d05 #Констатирование попытки переместится к последнему
#коммиту Алисы
Last command done (1 command done): #Вывод комманд сделанных в текущей ветке
pick a89f6b6 code: добавлен вывод минимального минимального значения
Команд больше не осталось.
Вы сейчас перемещаете ветку «main» над «5e40d05». #Констатация перемещения текущей ветки на новую
(разрешите конфликты, затем запустите «git rebase --continue») #с подсказками о разрешении конфликтов
(используйте «git rebase --skip», чтобы пропустить этот патч)
(используйте «git rebase --abort», чтобы перейти на оригинальную ветку)
Не слитые пути: #Вывод конфликтного файла
(используйте «git restore --staged <файл>...», чтобы убрать из индекса)
(используйте «git add <файл>...», чтобы пометить разрешение конфликта)
оба изменены: main.cpp
индекс пуст (используйте «git add» и/или «git commit -a»)
59. «На машине Боба» в CodeBlocks исправил код, добавил файл в индекс и продолжить прерванную операцию:
archlinux% git add main.cpp
archlinux% git rebase --continue
[отделённый HEAD 59c71d0] code: добавлен вывод минимального минимального значения
1 file changed, 1 insertion(+)
Успешно перемещён и обновлён refs/heads/main.
archlinux%
60. Убедился, что история хранилища имеет желательный вид:
archlinux% git log --oneline --decorate --all --graph
* 59c71d0 (HEAD -> main) code: добавлен вывод минимального минимального значения
* 5e40d05 (origin/main, origin/HEAD) code: исправлен вывод максимального значения
* 020760b code: добавлен вывод максимума из чисел
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%
61. "На машине Алисы" создал ветку double, переключился на неё, изменил в main.cpp тип переменных,
сделал коммит и вернулся облратно на ветку origin/main.
archlinux% git add main.cpp
archlinux% git commit -m 'code: изменен тип чисел с целых на действительные'
[double c2288f3] code: изменен тип чисел с целых на действительные
1 file changed, 1 insertion(+), 1 deletion(-)
archlinux% git checkout main
Переключились на ветку «main»
Эта ветка соответствует «origin/main».
archlinux%
62. Синхронизировал ветку main «на машине Алисы» с сервером. Просмотрел историю всех веток.
archlinux% git status
Текущая ветка: main
Эта ветка соответствует «origin/main».
нечего коммитить, нет изменений в рабочем каталоге
archlinux% git log --oneline --decorate --all --graph
* c2288f3 (double) code: изменен тип чисел с целых на действительные
* 5e40d05 (HEAD -> main, origin/main) code: исправлен вывод максимального значения
* 020760b code: добавлен вывод максимума из чисел
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы
archlinux%
63. Сделал слияние ветки double и main:
archlinux% git merge double
Обновление 5e40d05..c2288f3
Fast-forward
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
archlinux% git log --oneline --decorate --all --graph
* c2288f3 (HEAD -> main, origin/main, double) code: изменен тип чисел с целых на действительные
* 5e40d05 code: исправлен вывод максимального значения
* 020760b code: добавлен вывод максимума из чисел
* 70fe935 code: добавлен вывод разности двух чисел
* c2aa84d code: добавлен вывод произведения чисел
* 9374e7a git
* 4bf99bf code: добавлен вывод разности чисел
* 76b205d code: добавлен вывод суммы чисел
* 1a522a3 code: добавлен ввод двух чисел
* 451a2b6 build: добавлен файл проекта
* 0f2fab6 code: заготовка программы