Родитель
5197778cc7
Сommit
e6a4e3ca6e
@ -0,0 +1,737 @@
|
|||||||
|
Федеральное государственное бюджетное образовательное учреждение высшего образования «Национальный исследовательский университет «МЭИ»
|
||||||
|
Институт информационных и вычислительных технологий
|
||||||
|
Кафедра Управления и интеллектуальных технологий
|
||||||
|
|
||||||
|
Дисциплина:
|
||||||
|
Разработка программного обеспечения систем управления
|
||||||
|
|
||||||
|
Лабораторная работа №2
|
||||||
|
Система контроля версий Git
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Выполнила студентка группы
|
||||||
|
А-03-24
|
||||||
|
Пяпиева Айлана Витальевна
|
||||||
|
Проверил
|
||||||
|
Козлюк Дмитрий Александрович
|
||||||
|
Москва 2025
|
||||||
|
Цель работы
|
||||||
|
1. Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними.
|
||||||
|
2. Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также типовой web-интерфейс Gitea.
|
||||||
|
Ход работы
|
||||||
|
Вход в терминал и создание структуры каталогов
|
||||||
|
Создаем папки пользователей (mkdir alice, mkdir bob)
|
||||||
|
В папке пользователя alice создаем папку project
|
||||||
|
Инициализация репозитария и настройка Git
|
||||||
|
Инициализируем хранилище git (git init)
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||||
|
$ git init
|
||||||
|
Initialized empty Git repository in C:/Users/pyapi/OneDrive/Рабочий стол/lab02/alice/project/.git/
|
||||||
|
Настраиваем папки пользователя, с которым будем работать:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master)
|
||||||
|
$ git config user.name 'Alice (PyapievaAV)'
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабоий стол/lab02/alice/project (master)
|
||||||
|
$ git config user.email 'PiapiyevaAV@mpei.ru'
|
||||||
|
|
||||||
|
Создание коммитов:
|
||||||
|
Занесение файлов под контроль версий
|
||||||
|
Просматриваем состояние рабочей копии(git status)
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git status
|
||||||
|
On branch 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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
В первой строке надпись означает, что мы сейчас находимся в ветке с именем main и все новые коммиты будут добавляться именно в эту ветку
|
||||||
|
Вторая стр. говорит о том, что еще не было создано коммитов
|
||||||
|
Третья стр. показывает не отслеживаемые файлы в хранилище git, и подсказывает как их добавить
|
||||||
|
Последняя стр. говорит о том, что нет добавленных (отслеживаемых) файлов, которые можно будет закоммитить
|
||||||
|
|
||||||
|
Добавляем файл с кодом и просматриваем изменения
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/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
|
||||||
|
|
||||||
|
Появилась строка с файлами в индексе, стоящими в очереди на коммит
|
||||||
|
|
||||||
|
Составление сообщений к коммитам
|
||||||
|
Создаем 2 коммита с информацией о коде программы
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'code: заготовка программы'
|
||||||
|
[main (root-commit) abf5030] code: заготовка программы
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
create mode 100644 main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 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
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'build: добавлен файл проекта'
|
||||||
|
[main 994d8ff] build: добавлен файл проекта
|
||||||
|
1 file changed, 40 insertions(+)
|
||||||
|
create mode 100644 project.cbp
|
||||||
|
|
||||||
|
После добавления в программу ввода 2х чисел видим, что файл main.cpp был изменен
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/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")
|
||||||
|
|
||||||
|
|
||||||
|
Проделываем изменения с кодом программы и делаем коммит первым способом
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'code: добавлена сумма а и б'
|
||||||
|
[main bb4241b] code: добавлена сумма а и б
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Игнорирование файлов
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git status
|
||||||
|
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)
|
||||||
|
|
||||||
|
Создадим новый пустой файл под названием “.gitignore” и впишем “/bin”:
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 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/
|
||||||
|
project.depend
|
||||||
|
|
||||||
|
nothing added to commit but untracked files present (use "git add" to track)
|
||||||
|
|
||||||
|
Далее внесем остальные каталоги и файлы в “.gitignore”:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git status
|
||||||
|
On branch main
|
||||||
|
nothing to commit, working tree clean
|
||||||
|
|
||||||
|
Теперь создадим коммит с .gitignore, тема — git:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git add .gitignore
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'git: создан коммит'
|
||||||
|
[main ad49237] git: создан коммит
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
create mode 100644 .gitignore
|
||||||
|
|
||||||
|
Просмотр истории
|
||||||
|
|
||||||
|
С помощью команды git log и различных ее опций просматриваем журнал коммитов
|
||||||
|
Используем команду git log –stat
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git log --stat
|
||||||
|
commit ad49237d2c9f932d2e4129126ef7c57e4fe409e8 (HEAD -> main)
|
||||||
|
commit ad49237d2c9f932d2e4129126ef7c57e4fe409e8 (HEAD -> main)
|
||||||
|
Author: PiapiyevaAV@mpei.ru <alice@example.com>
|
||||||
|
Date: Sat Mar 29 23:17:02 2025 +0300
|
||||||
|
|
||||||
|
git: создан коммит
|
||||||
|
|
||||||
|
.gitignore | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
commit bb2825269072f08b99988f24a2c215b043d60409
|
||||||
|
Author: PiapiyevaAV@mpei.ru <alice@example.com>
|
||||||
|
Date: Sat Mar 29 22:59:06 2025 +0300
|
||||||
|
|
||||||
|
code: добавлена сумма а и б
|
||||||
|
|
||||||
|
main.cpp | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
|
||||||
|
В последнем коммите первой строкой показывается хэш коммита, по которому можно
|
||||||
|
потом найти этот коммит
|
||||||
|
Во 2 стр. записан автор, внесший этот коммит, а стр. ниже – время создания коммита
|
||||||
|
Далее идет комментарий к коммиту
|
||||||
|
Перечисление файлов, в которых произошли изменения и кол-во измененных строчек(“+” добавленная стр., “-” удаленная стр.)
|
||||||
|
В последней стр. приведена статистика изменений данных файлов
|
||||||
|
|
||||||
|
Используем команды для просмотра отдельных коммитов (git log –main.cpp/ git log –grep “code: ”)
|
||||||
|
Найдем коммиты по теме “build”:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git log --grep "build:"
|
||||||
|
commit 994d8ff835893c46320c8948108615012a8d0651
|
||||||
|
Author: PiapiyevaAV@mpei.ru <alice@example.com>
|
||||||
|
Date: Sat Mar 29 22:46:50 2025 +0300
|
||||||
|
|
||||||
|
build: добавлен файл проекта
|
||||||
|
Теперь коммиты, затрагивающие “project.cbp”:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git log -- project.cbp
|
||||||
|
commit 994d8ff835893c46320c8948108615012a8d0651
|
||||||
|
Author: PiapiyevaAV@mpei.ru <alice@example.com>
|
||||||
|
Date: Sat Mar 29 22:46:50 2025 +0300
|
||||||
|
|
||||||
|
build: добавлен файл проекта
|
||||||
|
|
||||||
|
(Таким способом мы просмотрели информацию о коммите по измененному файлу и по теме коммита)
|
||||||
|
|
||||||
|
|
||||||
|
Просмотр коммитов
|
||||||
|
|
||||||
|
Просмотрим тремя способами информацию о последнем коммите
|
||||||
|
(результат всех способов один, поэтому в отчете не повторялся)
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git show HEAD
|
||||||
|
commit ad49237d2c9f932d2e4129126ef7c57e4fe409e8 (HEAD -> main)
|
||||||
|
Author: PiapiyevaAV@mpei.ru <alice@example.com>
|
||||||
|
Date: Sat Mar 29 23:17:02 2025 +0300
|
||||||
|
|
||||||
|
git: создан коммит
|
||||||
|
|
||||||
|
diff --git a/.gitignore b/.gitignore
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..60898a8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/.gitignore
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+/bin
|
||||||
|
+/obj/
|
||||||
|
+/project.depend
|
||||||
|
|
||||||
|
|
||||||
|
Далее также просматриваем информацию о предпоследнем коммите
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git show head~1
|
||||||
|
commit bb2825269072f08b99988f24a2c215b043d60409
|
||||||
|
Author: PiapiyevaAV@mpei.ru <alice@example.com>
|
||||||
|
Date: Sat Mar 29 22:59:06 2025 +0300
|
||||||
|
|
||||||
|
code: добавлена сумма а и б
|
||||||
|
|
||||||
|
diff --git a/main.cpp b/main.cpp
|
||||||
|
index 03b22ce..867eb54 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;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Просмотр изменений
|
||||||
|
|
||||||
|
Добавим изменения в рабочую копию и посмотрим их с помощью команды git diff
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git diff
|
||||||
|
diff --git a/main.cpp b/main.cpp
|
||||||
|
index 867eb54..2ed6802 100644
|
||||||
|
--- a/main.cpp
|
||||||
|
+++ b/main.cpp
|
||||||
|
@@ -8,5 +8,6 @@ int main()
|
||||||
|
int a, b;
|
||||||
|
cin >> a >> b;
|
||||||
|
cout << a + b;
|
||||||
|
+ cout << a*b;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
В первой строке говорится что сравниваются две версии файла main.cpp (a/main.cpp – старая версия, b/main.cpp – новая версия).
|
||||||
|
Во второй строке - хеши версий файла в Git (867eb54 и 2ed6802) и права доступа к файлу (100644) (обычный файл с правами чтения/записи)
|
||||||
|
В третьей строке заголовок для старой версии файла (до изменений).
|
||||||
|
В четвертой заголовок для новой версии файла (после изменений).
|
||||||
|
Затем в пятой строке описание изменённого блока (-8,5 - в старой версии: 5 строк, начиная с 8-й строки, +8,6 - в новой версии: 6 строк, начиная с 8-й строки (добавилась 1 строка).
|
||||||
|
Затем показан код и зеленым выделена добавленная строка.
|
||||||
|
|
||||||
|
Откат изменений
|
||||||
|
Вносим изменения в код, а потом откатываем их до состояния в опр.коммите с помощью команды git reset.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m "code: добавлен вывод произведения"
|
||||||
|
[main cb37078] code: добавлен вывод произведения
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git reset --hard HEAD~1
|
||||||
|
HEAD is now at a66d232 code: добавлен вывод разности двух чисел
|
||||||
|
|
||||||
|
Теперь добавим над функцией main комментарий и уберем изменение другим способом — откатив этот файл к состоянию в последнем коммите
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git checkout HEAD -- main.cpp
|
||||||
|
|
||||||
|
Обмен кодом через удаленное хранилище
|
||||||
|
|
||||||
|
Зарегистрируемся на Git УИТ
|
||||||
|
|
||||||
|
Так как работа ведется не из университета и нет доступа к сети МЭИ, будем взаимодействовать с сервером по протоколу HTTP.
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ ssh-keygen
|
||||||
|
Generating public/private ed25519 key pair.
|
||||||
|
Enter file in which to save the key (/c/Users/pyapi/.ssh/id_ed25519):
|
||||||
|
Created directory '/c/Users/pyapi/.ssh'.
|
||||||
|
Enter passphrase for "/c/Users/pyapi/.ssh/id_ed25519" (empty for no passphrase):
|
||||||
|
Enter same passphrase again:
|
||||||
|
Your identification has been saved in /c/Users/pyapi/.ssh/id_ed25519
|
||||||
|
Your public key has been saved in /c/Users/pyapi/.ssh/id_ed25519.pub
|
||||||
|
The key fingerprint is:
|
||||||
|
SHA256:kmJ4Atoe6hGl7V5VGt40I0NF/4JRxD6c+AGdeBWCWvs pyapi@LAPTOP-H2THKBH4
|
||||||
|
The key's randomart image is:
|
||||||
|
+--[ED25519 256]--+
|
||||||
|
| .oo*+oo. |
|
||||||
|
| . =o=. |
|
||||||
|
|. . +o*B.. |
|
||||||
|
|.o+. .oOo=*. |
|
||||||
|
|.o=.+ o+Soo.o. |
|
||||||
|
| oo= ... E. |
|
||||||
|
|.... . |
|
||||||
|
|. o . |
|
||||||
|
| . . |
|
||||||
|
+----[SHA256]-----+
|
||||||
|
|
||||||
|
Также после этого отображаются уникальные данные для ключа. Поскольку в работе вводить пароль при каждом использовании ключа может быть неудобно, используем программу-агент, которую достаточно запустить перед началом работы:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ ssh-add
|
||||||
|
Enter passphrase for /c/Users/pyapi/.ssh/id_ed25519:
|
||||||
|
Identity added: /c/Users/pyapi/.ssh/id_ed25519 (pyapi@LAPTOP-H2THKBH4)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ cat ~/.ssh/id_ed25519.pub
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINKsmPZK/F79ySvyzABB3IxXyCyWqrbqD39Pj6becSBP pyapi@LAPTOP-H2THKBH4
|
||||||
|
|
||||||
|
Затем в настройках аккаунта Github нужно добавить публичный ключ.
|
||||||
|
Теперь добавим репозитарий на который будем загружать хранилище git, и загрузим хранилище git на GitHub с помощью команды git push
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git remote set-url origin http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git
|
||||||
|
|
||||||
|
$ git push -u origin main
|
||||||
|
The authenticity of host 'github.com (140.82.121.3)' can't be established.
|
||||||
|
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git push -u origin main
|
||||||
|
warning: auto-detection of host provider took too long (>2000ms)
|
||||||
|
warning: see https://aka.ms/gcm/autodetect for more information.
|
||||||
|
warning: use of unencrypted HTTP remote URLs is not recommended; see https://aka.ms/gcm/unsaferemotes for more information.
|
||||||
|
Enumerating objects: 15, done.
|
||||||
|
Counting objects: 100% (15/15), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (13/13), done.
|
||||||
|
Writing objects: 100% (15/15), 2.04 KiB | 347.00 KiB/s, done.
|
||||||
|
Total 15 (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/PiapiyevaAV/cs-lab02.git
|
||||||
|
* [new branch] main -> main
|
||||||
|
branch 'main' set up to track 'origin/main'.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
К работе присоединяется боб. Клонируем репозитарий с помощью git clone.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob (master)
|
||||||
|
$ git clone http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git project
|
||||||
|
Cloning into 'project'...
|
||||||
|
remote: Enumerating objects: 15, done.
|
||||||
|
remote: Counting objects: 100% (15/15), done.
|
||||||
|
remote: Compressing objects: 100% (13/13), done.
|
||||||
|
remote: Total 15 (delta 1), reused 0 (delta 0), pack-reused 0
|
||||||
|
Receiving objects: 100% (15/15), done.
|
||||||
|
Resolving deltas: 100% (1/1), done.
|
||||||
|
|
||||||
|
Перейдем в каталог Боба:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob (master)
|
||||||
|
$ cd project
|
||||||
|
|
||||||
|
Настроим хранилище Боба:
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git config user.email "PiapiyevaAV@mpei.ru"
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git config user.name "PiapiyevaAV"
|
||||||
|
|
||||||
|
|
||||||
|
Боб добавляет новый коммит, опережающий версию на сервере, и загружает его на GitHub.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git commit -m "code: добавлен вывод произведения чисел"
|
||||||
|
[main 5e5ebad] code: добавлен вывод произведения чисел
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 5, done.
|
||||||
|
Counting objects: 100% (5/5), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (3/3), 437 bytes | 437.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/PiapiyevaAV/cs-lab02.git
|
||||||
|
ad49237..5e5ebad main -> main
|
||||||
|
|
||||||
|
Обновляем версию программы у Алисы
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 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), 417 bytes | 19.00 KiB/s, done.
|
||||||
|
From http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02
|
||||||
|
ad49237..5e5ebad main -> origin/main
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 5e5ebad (origin/main, origin/HEAD) code: добавлен вывод произведения чисел
|
||||||
|
* ad49237 (HEAD -> main) git: создан коммит
|
||||||
|
* bb28252 code: добавлена сумма а и б
|
||||||
|
* bb4241b code: добавлена сумма а и б
|
||||||
|
* 994d8ff build: добавлен файл проекта
|
||||||
|
* abf5030 code: заготовка программы
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git pull --ff-only
|
||||||
|
Updating ad49237..5e5ebad
|
||||||
|
Fast-forward
|
||||||
|
main.cpp | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Далее Алиса вносит новое изменение, а Боб его скачивает:
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m "code: добавлен вывод деления а на b"
|
||||||
|
[main 15d2800] code: добавлен вывод деления а на b
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 5, done.
|
||||||
|
Counting objects: 100% (5/5), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (3/3), 417 bytes | 417.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/PiapiyevaAV/cs-lab02.git
|
||||||
|
5e5ebad..15d2800 main -> main
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/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), 397 bytes | 44.00 KiB/s, done.
|
||||||
|
From http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02
|
||||||
|
5e5ebad..15d2800 main -> origin/main
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git pull --ff-only
|
||||||
|
Updating 5e5ebad..15d2800
|
||||||
|
Fast-forward
|
||||||
|
main.cpp | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
Теперь Алиса и Боб добавляют в программу печать максимума и минимума соответственно, а затем пробуют загрузить изменения на репозитарий на сервере.
|
||||||
|
Алиса:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git commit -m 'code: добавлен максимум'
|
||||||
|
[main e3a7493] code: добавлен максимум
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 5, done.
|
||||||
|
Counting objects: 100% (5/5), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (3/3), 471 bytes | 471.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/PiapiyevaAV/cs-lab02.git
|
||||||
|
22c82c5..e3a7493 main -> main
|
||||||
|
Боб:
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git commit -m "code: добавлен минимум"
|
||||||
|
[main 350301f] code: добавлен минимум
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git push
|
||||||
|
To http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02.git
|
||||||
|
! [rejected] main -> main (fetch first)
|
||||||
|
error: failed to push some refs to 'http://uit.mpei.ru/git/PiapiyevaAV/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.
|
||||||
|
|
||||||
|
|
||||||
|
Однако загрузить на сервер изменения получается только у Алисы потому, что Боб затем пытается загрузить версию, основанную на более старом коммите, чем самый новый коммит в репозитарии GitHub.
|
||||||
|
Загрузим версию с сервера
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/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), 451 bytes | 56.00 KiB/s, done.
|
||||||
|
From http://uit.mpei.ru/git/PiapiyevaAV/cs-lab02
|
||||||
|
22c82c5..e3a7493 main -> origin/main
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 350301f (HEAD -> main) code: добавлен минимум
|
||||||
|
| * e3a7493 (origin/main, origin/HEAD) code: добавлен максимум
|
||||||
|
|/
|
||||||
|
* 22c82c5 code:добавлена разность а и b
|
||||||
|
* 15d2800 code: добавлен вывод деления а на b
|
||||||
|
* 5e5ebad code: добавлен вывод произведения чисел
|
||||||
|
* ad49237 git: создан коммит
|
||||||
|
* bb28252 code: добавлена сумма а и б
|
||||||
|
* bb4241b code: добавлена сумма а и б
|
||||||
|
* 994d8ff build: добавлен файл проекта
|
||||||
|
* abf5030 code: заготовка программы
|
||||||
|
|
||||||
|
|
||||||
|
(Ветка main раздвоилась.)
|
||||||
|
Объединим коммиты Боба и Алисы, поместив коммит Боба выше с помощью комманды git rebase.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 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 350301f... 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".
|
||||||
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
||||||
|
Could not apply 350301f... code: добавлен минимум
|
||||||
|
|
||||||
|
Комманда завершается с ошибкой из-за конфликта в файле с кодом main.cpp. Производный файл от файла Алисы и Боба записывается в рабочую копию с помеченными метками конфликта. Убираем метки конфликта, и дорабатываем код так, чтобы программа компилировалась и работала. Затем загружаем изменения в индекс и продолжаем операцию git rebase, с помощью флага –continue.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git rebase --continue
|
||||||
|
fatal: no rebase in progress
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 2fe44de (HEAD -> main) code: добавлен минимум
|
||||||
|
* e3a7493 (origin/main, origin/HEAD) code: добавлен максимум
|
||||||
|
* 22c82c5 code:добавлена разность а и b
|
||||||
|
* 15d2800 code: добавлен вывод деления а на b
|
||||||
|
* 5e5ebad code: добавлен вывод произведения чисел
|
||||||
|
* ad49237 git: создан коммит
|
||||||
|
* bb28252 code: добавлена сумма а и б
|
||||||
|
* bb4241b code: добавлена сумма а и б
|
||||||
|
* 994d8ff build: добавлен файл проекта
|
||||||
|
* abf5030 code: заготовка программы
|
||||||
|
|
||||||
|
(Получили желаемый результат)
|
||||||
|
Отправим изменения на сервер.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/bob/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 5, done.
|
||||||
|
Counting objects: 100% (5/5), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (3/3), done.
|
||||||
|
Writing objects: 100% (3/3), 410 bytes | 410.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/PiapiyevaAV/cs-lab02.git
|
||||||
|
e3a7493..2fe44de main -> main
|
||||||
|
|
||||||
|
В это время Алиса создаёт новую ветку (с помощью комманды git branch) для изменения типа переменных на вещественный. Начинает она с коммита, когда добавлена печать максимума.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git branch double
|
||||||
|
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git checkout double
|
||||||
|
Switched to branch 'double'
|
||||||
|
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double)
|
||||||
|
$ git add main.cpp
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double)
|
||||||
|
$ git commit -m 'code: изменен тип переменных'
|
||||||
|
[double 5ac2d26] code: изменен тип переменных
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Затем переключается на ветку main. И синхронизирует её
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (double)
|
||||||
|
$ git checkout main
|
||||||
|
Switched to branch 'main'
|
||||||
|
Your branch is up to date with 'origin/main'.
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git fetch --all
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git reset --hard origin/main
|
||||||
|
HEAD is now at 2fe44de code: добавлен минимум
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git log --oneline --decorate --all --graph
|
||||||
|
* 5ac2d26 (double) code: изменен тип переменных
|
||||||
|
| * 2fe44de (HEAD -> main, origin/main, origin/HEAD) code: добавлен минимум
|
||||||
|
|/
|
||||||
|
* e3a7493 code: добавлен максимум
|
||||||
|
* 22c82c5 code:добавлена разность а и b
|
||||||
|
* 15d2800 code: добавлен вывод деления а на b
|
||||||
|
* 5e5ebad code: добавлен вывод произведения чисел
|
||||||
|
* ad49237 git: создан коммит
|
||||||
|
* bb28252 code: добавлена сумма а и б
|
||||||
|
* bb4241b code: добавлена сумма а и б
|
||||||
|
* 994d8ff build: добавлен файл проекта
|
||||||
|
* abf5030 code: заготовка программы
|
||||||
|
|
||||||
|
|
||||||
|
(Получаем одновременно две ветки)
|
||||||
|
Объединяем их с помощью комманды git merge. Вносим последние изменения и загружаем на GitHub.
|
||||||
|
|
||||||
|
|
||||||
|
$ git merge double
|
||||||
|
Auto-merging project/project.cpp
|
||||||
|
Merge made by the 'ort' strategy.
|
||||||
|
project/project.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git push
|
||||||
|
Enumerating objects: 8, done.
|
||||||
|
Counting objects: 100% (8/8), done.
|
||||||
|
Delta compression using up to 4 threads
|
||||||
|
Compressing objects: 100% (4/4), done.
|
||||||
|
Writing objects: 100% (4/4), 590 bytes | 590.00 KiB/s, done.
|
||||||
|
Total 4 (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/PiapiyevaAV/cs-lab02.git
|
||||||
|
f7b6ce9..20bee54 main -> main
|
||||||
|
|
||||||
|
pyapi@LAPTOP-H2THKBH4 MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main)
|
||||||
|
$ git log --all --oneline --graph
|
||||||
|
* 5197778 (HEAD -> main, origin/main, origin/HEAD) Merge branch 'double'
|
||||||
|
|\
|
||||||
|
| * 5ac2d26 (double) code: изменен тип переменных
|
||||||
|
* | 2fe44de code: добавлен минимум
|
||||||
|
|/
|
||||||
|
* e3a7493 code: добавлен максимум
|
||||||
|
* 22c82c5 code:добавлена разность а и b
|
||||||
|
* 15d2800 code: добавлен вывод деления а на b
|
||||||
|
* 5e5ebad code: добавлен вывод произведения чисел
|
||||||
|
* ad49237 git: создан коммит
|
||||||
|
* bb28252 code: добавлена сумма а и б
|
||||||
|
* bb4241b code: добавлена сумма а и б
|
||||||
|
* 994d8ff build: добавлен файл проекта
|
||||||
|
* abf5030 code: заготовка программы
|
Загрузка…
Ссылка в новой задаче