Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
1085 строки
48 KiB
Markdown
1085 строки
48 KiB
Markdown
Отчет по лабораторной работе №2 "Система контроля версий Git"
|
|
_____
|
|
Выполнила: Ишутина Е. И.
|
|
Группа: А-01-22
|
|
Проверил: Козлюк Д. А.
|
|
_____
|
|
Примечание: работа выполнялась на Windows.
|
|
_____
|
|
|
|
## 1. Начало работы
|
|
|
|
На рабочем столе создала каталог "lab02" и запустила в нем Git Bash. Эмулятор терминала вывел
|
|
приглашение:
|
|
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02
|
|
$
|
|
```
|
|
Команда ls показала, что каталог пуст:
|
|
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02
|
|
$ ls
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02
|
|
$
|
|
```
|
|
|
|
С помощью команды mkdir создаю каталоги alice и bob
|
|
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02
|
|
$ mkdir alice
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02
|
|
$ mkdir bob
|
|
```
|
|
|
|
Перехожу в каталог alice, создаю там подкаталог project, захожу в него и выхожу.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02
|
|
$ cd alice
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice
|
|
$ mkdir project
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice
|
|
$ cd project
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project
|
|
$ cd ..
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice
|
|
$ ls
|
|
project/
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice
|
|
$ cd project
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project
|
|
$
|
|
```
|
|
## 2. Инициализация репозитория
|
|
В каталоге project инициализирую репозитарий
|
|
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (master)
|
|
$ git init
|
|
Initialized existing Git repository in C:/Users/GSTQ/Desktop/lab02/alice/project/.git/
|
|
```
|
|
Сейчас ветка имеет имя master. Подсказка по переименованию не выведена. Пользуясь командой branch
|
|
опцией -m, переименовываю ветку.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (master)
|
|
$ git branch -m main
|
|
```
|
|
Просматриваю скрытый каталог .git
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ ls -A
|
|
.git/
|
|
```
|
|
Настраиваю репозитарий, изменив имя пользователя и адрес электронной почты
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git config user.name 'Alice (IshutinaYI)'
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git config user.email 'ishutinayi@mpei.ru'
|
|
```
|
|
## 3. Создание коммита
|
|
|
|
В CodeBlocks создаю проект в репозитарии Алисы. Он имеет путь C:\Users\GSTQ\Desktop\lab02\alice
|
|
Внутри каталога project содержатся .git, bin, obj, main, project.cbp
|
|
Это доказывает вызов команды git status
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main ------ В ветке с названием main
|
|
|
|
No commits yet ------ Еще нет ни одного коммита
|
|
|
|
Untracked files: ------ Неотслеживаемые (не являются частью ни одного коммита, Git их еще не
|
|
----------------------------- контролирует) файлы
|
|
(use "git add <file>..." to include in what will be committed) ------ предложение закоммитить что-нибудь
|
|
bin/ ------ Каталог, создаваемый CodeBlocks'ом при сборке проекта
|
|
main.cpp ------ Исполняемый файл проекта
|
|
obj/ ------ Аналогично bin/
|
|
project.cbp ------ Файл проекта CodeBlocks
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track) ------ Сообщение о том,
|
|
------------------------------------------------------------ что еще ничего не занесено под Git, и неплохо было бы
|
|
------------------------------------------------------------ это сделать.
|
|
```
|
|
Файл main.cpp заношу под Git:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add main.cpp
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$
|
|
```
|
|
Теперь я могу посмотреть статус репозитария еще раз...
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
|
|
No commits yet
|
|
|
|
Changes to be committed:
|
|
(use "git rm --cached <file>..." to unstage) ------ ...И увидеть, что main.cpp теперь отслеживается
|
|
---------------------------------------------------------- и будет внесен в ближайший коммит.
|
|
new file: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.cbp ------ main.cpp - больше не неотслеживаемый файл.
|
|
```
|
|
Иногда на Windows можен появиться предупредительное сообщение
|
|
```
|
|
warning: LF will be replaced by CRLF in main.cpp
|
|
The file will have its original line endings in your working directory
|
|
```
|
|
означающее, что перенос строки будет дополнен возвратом каретки.
|
|
В моём случае это сообщение не появилось.
|
|
|
|
|
|
Выполняю коммит, отметив в качестве изменения создание пустого файла проекта:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m 'code: Заготовка программы' ------ -m означает "message" и показывает, что дальше
|
|
------------------------------------------------------------------- нами будет введен текст.
|
|
[main (root-commit) 83e242d] code: Заготовка программы
|
|
1 file changed, 9 insertions(+)
|
|
create mode 100644 main.cpp
|
|
```
|
|
Вношу под Git файл project.cbp
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add project.cbp
|
|
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it ------ Неточности адаптации
|
|
------------------------------------------------------------------------------ Unix-подобных систем и Windows: в первых конец строки
|
|
------------------------------------------------------------------------------ обозначается как Line Feed (перевод строки), а в
|
|
------------------------------------------------------------------------------ Windows - Carriage Return Line Feed - возврат каретки.
|
|
```
|
|
Делаю коммит и проверяю, что у меня получилось:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m 'build: Добавлен файл проекта'
|
|
[main 1a7913c] build: Добавлен файл проекта
|
|
1 file changed, 40 insertions(+)
|
|
create mode 100644 project.cbp
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/ ------ project.cbp исчез из списка неопознанных файлов.
|
|
obj/
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
```
|
|
|
|
Изменяю код: пусть он просит на ввод два числа:
|
|
```
|
|
#include <iostream>
|
|
using namespace std;
|
|
int main(){
|
|
cout << "Enter A and B: ";
|
|
int a, b;
|
|
cin >> a >> b;
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Теперь git status показывает, что файл main.cpp был изменён:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory) ------ Используйте команду restore для отмены изменений в
|
|
------------------------------------------------------------------------- рабочем каталоге
|
|
modified: main.cpp ------ изменено: 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")
|
|
```
|
|
Пробую создать коммит тремя способами.
|
|
Сначала добавляю в код вывод суммы введенных чисел, затем делаю коммит, промежуточно посмотрев статус Git:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add main.cpp
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Changes to be committed:
|
|
(use "git restore --staged <file>..." to unstage)
|
|
modified: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.depend
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m 'code: Добавлен вывод суммы чисел'
|
|
[main a0f4cab] code: Добавлен вывод суммы чисел
|
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
```
|
|
Добавляю в код разность чисел и ее вывод, делаю коммит:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add -u ------ ключ -u (updated) позволяет работать только с измененными файлами.
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Changes to be committed:
|
|
(use "git restore --staged <file>..." to unstage)
|
|
modified: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.depend
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m "code: Добавлен вывод разности файлов"
|
|
[main 71248b0] code: Добавлен вывод разности файлов
|
|
1 file changed, 1 insertion(+)
|
|
|
|
```
|
|
Несколько корретирую внешний вид кода и изпользую последний, самый короткий способ:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -a -m "code: Подкорректировано оформление"
|
|
[main 8bff39f] code: Подкорректировано оформление
|
|
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
```
|
|
## 5. Скрытие ненужного
|
|
Сделаю системные каталоги bin и obj неотображаемыми в status. Создаю в проекте пустой файл, задаю ему имя .gitignore,
|
|
пишу строку /bin, пересобираю и сохраняю проект. Теперь git status показывает следующее:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: project.cbp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
.gitignore ------ bin/ пропал из списка, зато теперь есть файл /gitignore
|
|
obj/
|
|
project.depend
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
```
|
|
Аналогичные махинации проделываю для скрытия obj: записываю во вторую строку файла "/obj", сохраняю и смотрю:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: project.cbp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
.gitignore ------ obj/ тоже исчез.
|
|
project.depend
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
```
|
|
Просматриваю историю. Пробую разные способы вывода изменений.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log ------ Журнал изменений без модификаций, длинный и неудобный
|
|
commit 8bff39f067513947c95539c3591aa3d2d4a7c6b7 (HEAD -> main)
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:38:17 2023 +0300
|
|
|
|
code: Подкорректировано оформление
|
|
|
|
commit 71248b044cf4b0d0ff85543773a2ef598a2f7a3d
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:33:44 2023 +0300
|
|
|
|
code: Добавлен вывод разности файлов
|
|
|
|
commit a0f4cab0833a71f49874ecf58db71f37a582cf9c
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:30:06 2023 +0300
|
|
|
|
code: Добавлен вывод суммы чисел
|
|
|
|
commit 1a7913c37026f930f7219fdad7e040007f688f67
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:17:57 2023 +0300
|
|
|
|
build: Добавлен файл проекта
|
|
|
|
commit 83e242df8a39b03bfc4702a7f8162bf34028ab4d
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 09:59:52 2023 +0300
|
|
|
|
code: Заготовка программы
|
|
```
|
|
Добавление опции --stat отображает все изменения файлов:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --stat
|
|
commit 8bff39f067513947c95539c3591aa3d2d4a7c6b7 (HEAD -> main) ------ после слова commit идет его полный хэш
|
|
---------------------------------------------------------------- (не в краткой форме), по которому к нему в дальнейшем
|
|
---------------------------------------------------------------- можно будет обратиться.
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru> ------ Видно, что изменение юзернейма и почты произошло успешно.
|
|
Date: Mon Mar 13 10:38:17 2023 +0300 ------ Дата создания коммита, время местное с указанием отклонения
|
|
------------------------------------------------------------- по UTC.
|
|
|
|
code: Подкорректировано оформление
|
|
|
|
main.cpp | 5 ++---
|
|
1 file changed, 2 insertions(+), 3 deletions(-) ------ В рамках одного файла произошло пять изменений: два добавления
|
|
-------------------------------------------------------- и три удаления данных.
|
|
|
|
commit 71248b044cf4b0d0ff85543773a2ef598a2f7a3d
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:33:44 2023 +0300
|
|
|
|
code: Добавлен вывод разности файлов
|
|
|
|
main.cpp | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
commit a0f4cab0833a71f49874ecf58db71f37a582cf9c
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:30:06 2023 +0300
|
|
|
|
code: Добавлен вывод суммы чисел
|
|
|
|
main.cpp | 9 +++++----
|
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
|
|
commit 1a7913c37026f930f7219fdad7e040007f688f67
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:17:57 2023 +0300
|
|
|
|
build: Добавлен файл проекта
|
|
|
|
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 40 insertions(+)
|
|
|
|
commit 83e242df8a39b03bfc4702a7f8162bf34028ab4d
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 09:59:52 2023 +0300
|
|
|
|
code: Заготовка программы
|
|
|
|
main.cpp | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
```
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --oneline --decorate ------ Сокращенная форма вывода: короткий хэш, нет данных о времени и авторе,
|
|
--------------------------------------------------- на описание каждого коммита приходится одна строка.
|
|
8bff39f (HEAD -> main) code: Подкорректировано оформление
|
|
71248b0 code: Добавлен вывод разности файлов
|
|
a0f4cab code: Добавлен вывод суммы чисел
|
|
1a7913c build: Добавлен файл проекта
|
|
83e242d code: Заготовка программы
|
|
```
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph ------ опция all выводит историю для всех веток (но у нас она одна,
|
|
-------------------------------------------------------- и изменений мы не увидим). graph показывает историю в виде графа,
|
|
-------------------------------------------------------- но из-за приоритета опции oneline эти графы сократились до одной звёздочки
|
|
-------------------------------------------------------- в каждой строке.
|
|
* 8bff39f (HEAD -> main) code: Подкорректировано оформление
|
|
* 71248b0 code: Добавлен вывод разности файлов
|
|
* a0f4cab code: Добавлен вывод суммы чисел
|
|
* 1a7913c build: Добавлен файл проекта
|
|
* 83e242d code: Заготовка программы
|
|
```
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --graph ------ посмотрим, как выглядит graph в полном виде.
|
|
* commit 8bff39f067513947c95539c3591aa3d2d4a7c6b7 (HEAD -> main)
|
|
| Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
| Date: Mon Mar 13 10:38:17 2023 +0300
|
|
|
|
|
| code: Подкорректировано оформление
|
|
|
|
|
* commit 71248b044cf4b0d0ff85543773a2ef598a2f7a3d
|
|
| Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
| Date: Mon Mar 13 10:33:44 2023 +0300
|
|
|
|
|
| code: Добавлен вывод разности файлов
|
|
|
|
|
* commit a0f4cab0833a71f49874ecf58db71f37a582cf9c
|
|
| Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
| Date: Mon Mar 13 10:30:06 2023 +0300
|
|
|
|
|
| code: Добавлен вывод суммы чисел
|
|
|
|
|
* commit 1a7913c37026f930f7219fdad7e040007f688f67
|
|
| Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
| Date: Mon Mar 13 10:17:57 2023 +0300
|
|
|
|
|
| build: Добавлен файл проекта
|
|
|
|
|
* commit 83e242df8a39b03bfc4702a7f8162bf34028ab4d
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 09:59:52 2023 +0300
|
|
|
|
code: Заготовка программы
|
|
```
|
|
Изучу поиск по изменениям. Если оно связано с файлом, он просто указывается после log:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log -- project.cbp
|
|
commit 1a7913c37026f930f7219fdad7e040007f688f67
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:17:57 2023 +0300
|
|
|
|
build: Добавлен файл проекта
|
|
```
|
|
Если поиск связан с конкретной темой, она указывается в кавычках после опции grep:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --grep "build:"
|
|
commit 1a7913c37026f930f7219fdad7e040007f688f67
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:17:57 2023 +0300
|
|
|
|
build: Добавлен файл проекта
|
|
```
|
|
Выведем информацию о последнем коммите (что именно было изменено):
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git show 8bff39f067513947c95539c3591aa3d2d4a7c6b7
|
|
commit 8bff39f067513947c95539c3591aa3d2d4a7c6b7 (HEAD -> main)
|
|
Author: Alice (IshutinaYI) <ishutinayi@mpei.ru>
|
|
Date: Mon Mar 13 10:38:17 2023 +0300
|
|
|
|
code: Подкорректировано оформление
|
|
|
|
diff --git a/main.cpp b/main.cpp
|
|
index b73d0df..5e77b4a 100644
|
|
--- a/main.cpp
|
|
+++ b/main.cpp
|
|
@@ -4,8 +4,7 @@ int main(){
|
|
cout << "Enter A and B: ";
|
|
int a, b;
|
|
cin >> a >> b;
|
|
- cout << "a + b = " << a + b;
|
|
- cout << "a - b = " << a - b;
|
|
-
|
|
+ cout << "A + B = " << a + b << '\n'
|
|
+ << "A - B = " << a - b << '\n';
|
|
return 0;
|
|
}
|
|
```
|
|
Файл с кодом изменен: добавлен вывод произведения чисел. С помощью git diff просматриваю изменения.
|
|
```
|
|
$ git diff
|
|
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
|
|
diff --git a/main.cpp b/main.cpp ------ показано, что main.cpp имеет две версии: старую "а" и новую "b".
|
|
index 5e77b4a..ed523a8 100644 ------ хэш коммита
|
|
--- a/main.cpp ------ старая версия файла удалена...
|
|
+++ b/main.cpp ------ ... и заменена новой.
|
|
@@ -5,6 +5,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;
|
|
}
|
|
diff --git a/project.cbp b/project.cbp
|
|
index 99bb702..34f06bc 100644
|
|
--- a/project.cbp
|
|
+++ b/project.cbp
|
|
@@ -32,6 +32,7 @@
|
|
<Add option="-Wall" />
|
|
<Add option="-fexceptions" />
|
|
</Compiler>
|
|
+ <Unit filename=".gitignore" /> ------ В .gitignore произошли изменения, ведь он скрывает bin и obj,
|
|
------------------------------------------------------- которые меняются после пересборки.
|
|
<Unit filename="main.cpp" />
|
|
<Extensions>
|
|
<lib_finder disable_auto="1" />
|
|
```
|
|
Сообщим в качестве аргументов для функции diff хэши самого первого коммита и того, где была добавлена разность.
|
|
В выводе будут все изменения между ними, без разделения на промежуточне коммиты, но отдельные для каждого файла.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git diff 83e242df8a39b03bfc4702a7f8162bf34028ab4d 71248b044cf4b0d0ff85543773a2ef598a2f7a3d
|
|
diff --git a/main.cpp b/main.cpp
|
|
index b4392ec..b73d0df 100644
|
|
--- a/main.cpp
|
|
+++ b/main.cpp
|
|
@@ -1,9 +1,11 @@
|
|
#include <iostream>
|
|
-
|
|
using namespace std;
|
|
+int main(){
|
|
+ cout << "Enter A and B: ";
|
|
+ int a, b;
|
|
+ cin >> a >> b;
|
|
+ cout << "a + b = " << a + b;
|
|
+ cout << "a - b = " << a - b;
|
|
|
|
-int main()
|
|
-{
|
|
- cout << "Hello world!" << endl;
|
|
return 0;
|
|
}
|
|
diff --git a/project.cbp b/project.cbp
|
|
new file mode 100644
|
|
index 0000000..99bb702
|
|
--- /dev/null
|
|
+++ b/project.cbp
|
|
@@ -0,0 +1,40 @@
|
|
+<?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" />
|
|
+ <Option compiler="gcc" />
|
|
+ <Build>
|
|
+ <Target title="Debug">
|
|
+ <Option output="bin/Debug/project" prefix_auto="1" extension_auto="1" />
|
|
+ <Option object_output="obj/Debug/" />
|
|
+ <Option type="1" />
|
|
+ <Option compiler="gcc" />
|
|
+ <Compiler>
|
|
+ <Add option="-g" />
|
|
+ </Compiler>
|
|
+ </Target>
|
|
+ <Target title="Release">
|
|
+ <Option output="bin/Release/project" prefix_auto="1" extension_auto="1" />
|
|
+ <Option object_output="obj/Release/" />
|
|
+ <Option type="1" />
|
|
+ <Option compiler="gcc" />
|
|
+ <Compiler>
|
|
+ <Add option="-O2" />
|
|
+ </Compiler>
|
|
+ <Linker>
|
|
+ <Add option="-s" />
|
|
+ </Linker>
|
|
+ </Target>
|
|
+ </Build>
|
|
+ <Compiler>
|
|
+ <Add option="-Wall" />
|
|
+ <Add option="-fexceptions" />
|
|
+ </Compiler>
|
|
+ <Unit filename="main.cpp" />
|
|
+ <Extensions>
|
|
+ <lib_finder disable_auto="1" />
|
|
+ </Extensions>
|
|
+ </Project>
|
|
+</CodeBlocks_project_file>
|
|
```
|
|
## 6. Откат коммитов
|
|
Создаю коммит, зафиксировав добавление произведения:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add -u
|
|
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m "code: Добавлен вывод произведения"
|
|
[main 6962d6d] code: Добавлен вывод произведения
|
|
2 files changed, 3 insertions(+), 1 deletion(-)
|
|
```
|
|
Откачу коммит, вернувшись к тому, что был до него:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git reset --hard HEAD~1 ------ HEAD~1 указывает, что нужный коммит за один шаг до текущего.
|
|
---------------------------------- Ключ --hard - удаление всех отслеживаемых файлов из ветки (например, --soft
|
|
---------------------------------- позволяет выбирать, что удалить)
|
|
HEAD is now at 8bff39f code: Подкорректировано оформление
|
|
```
|
|
Добавляю перед строкой int main(){ комментарий
|
|
> //You may type here whatever you want :)
|
|
|
|
Пересобираю, сохраняю файл, откатываю до состояния предыдущего коммита:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git checkout HEAD -- main.cpp
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$
|
|
```
|
|
После нажатия ОК на предупредительном окне строка исчезает.
|
|
```
|
|
## 7. Подключение к серверу
|
|
```
|
|
Настраиваю SSH, создаю пару ключей.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ ssh-keygen ------ Команда создаст пару ключей: открытый и закрытый.
|
|
---------------------------------------------- Закрытый ключ записывается в файл, для него я создаю
|
|
---------------------------------------------- и подтверждаю пароль.
|
|
Generating public/private rsa key pair.
|
|
Enter file in which to save the key (/c/Users/GSTQ/.ssh/id_rsa):
|
|
Enter passphrase (empty for no passphrase):
|
|
Enter same passphrase again:
|
|
Your identification has been saved in /c/Users/GSTQ/.ssh/id_rsa
|
|
Your public key has been saved in /c/Users/GSTQ/.ssh/id_rsa.pub
|
|
The key fingerprint is:
|
|
SHA256:MZfRrs4VPI3pl/xQ3AzI1lmhFcmUKfrTVsr2OcLpgMo GSTQ@WIN-CBR6EH59CO3
|
|
The key's randomart image is:
|
|
+---[RSA 3072]----+
|
|
| .o ooBB|
|
|
| o=.*= |
|
|
| o o+.=.+.|
|
|
| + .B . *|
|
|
| S o.=.+.|
|
|
| o ooOo |
|
|
| + o.o++.|
|
|
| . . o .+ oo|
|
|
| E ... .|
|
|
+----[SHA256]-----+
|
|
```
|
|
Запустим программу, предоставляющую доступ к ключам без подтверждения пароля каждый раз.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ eval `ssh-agent -s`
|
|
Agent pid 1115 ------ Терминал вернул идентификатор агента. Значит, он запущен.
|
|
```
|
|
Загружаем ключ:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ ssh-add
|
|
Enter passphrase for /c/Users/GSTQ/.ssh/id_rsa: ------ Ввожу пароль.
|
|
Identity added: /c/Users/GSTQ/.ssh/id_rsa (GSTQ@WIN-CBR6EH59CO3)
|
|
```
|
|
Команда cat отображает содержимое файла в консоль:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ cat ~/.ssh/id_rsa.pub
|
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCu+0QycJRDPcxB5teKxeikvNjHzQv+sWU0WooVQbUJgREtb8pSqAT59HVy3drWtNjxzh1JLsVb2BD5pqSA+D0l5KVfX6MZ7K8mBrJ/V4cGGJ8tPALtuJkr+veNOKrSAMNg2+A0XecXFD8lzNhg+U8QOBiUfyIkA6NzHMhcnZ4KyD6T55+qEVmvPrrYgfM+To11B+3wrBmqF3ZTW8IGWbbGcfRyq80y/NAhlbR9ztnhupkSffJ7Bctv+DHS113xDOgsucUFMiZG4LLDV4Jeo+0OcDHwQv53PaGpfWkGp5R/EaPByEi5uUeKE7O8j1XLH++rQNJsFGMjdZ35/OfAZnvPytkPhPTqdLlnVO/k9kMFc9amYHywKxrE+0Tit8R9iL5HCuWBTYWN29sirv6XtLIkGBUAQC57NnU74OGuFXcp5kJL3BuDpUWiGIFA5dbXXQ887FcdjOOpycOjlHcqm3MH4mjpgQ4qujri2EFr6YadPjg/Pctmo99ReE7O6P+7cTk= GSTQ@WIN-CBR6EH59CO3
|
|
```
|
|
Копирую этот ключ, перехожу на сайт Git UIT, Пользователь -> Настройки -> SSH/GPG ключи -> Управление SSH ключами
|
|
-> Добавить ключ. Ввожу ключ, переименовываю его.
|
|
```
|
|
Нажав на +, создаю новый репозитарий. Ввожу имя, настраиваю, подтверждаю создание. Выданы команды для активации,
|
|
ввожу их в командную строку:
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git remote add origin git@uit.mpei.ru:ishutinayi/cs-lab02.git
|
|
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
|
|
Please type 'yes', 'no' or the fingerprint: yes
|
|
Warning: Permanently added 'uit.mpei.ru' (ED25519) to the list of known hosts.
|
|
Enumerating objects: 15, done.
|
|
Counting objects: 100% (15/15), done.
|
|
Delta compression using up to 12 threads
|
|
Compressing objects: 100% (14/14), done.
|
|
Writing objects: 100% (15/15), 2.11 KiB | 1.05 MiB/s, done.
|
|
Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To uit.mpei.ru:ishutinayi/cs-lab02.git
|
|
* [new branch] main -> main
|
|
branch 'main' set up to track 'origin/main'.
|
|
```
|
|
После обновления проекта файлы появились в интерфейсе.
|
|
## 7. Добавление нового пользователя
|
|
|
|
Перехожу в каталог bob и запускаю bash для него. Клонирую проект:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob
|
|
$ git clone git@uit.mpei.ru:ishutinayi/cs-lab02.git project
|
|
Cloning into 'project'...
|
|
Enter passphrase for key '/c/Users/GSTQ/.ssh/id_rsa': ------ Введен пароль.
|
|
remote: Enumerating objects: 15, done.
|
|
remote: Counting objects: 100% (15/15), done.
|
|
remote: Compressing objects: 100% (14/14), done.
|
|
remote: Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
|
|
Receiving objects: 100% (15/15), done.
|
|
Resolving deltas: 100% (2/2), done.
|
|
```
|
|
Инициализирую Боба:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob
|
|
$ cd project
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git config user.name 'Bob (IshutinaYI)'
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git config user.email 'ishutinayi@mpei.ru'
|
|
```
|
|
"На машине Боба" делаю коммит и отправляю его на сервер.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git push
|
|
Enumerating objects: 5, done.
|
|
Counting objects: 100% (5/5), done.
|
|
Delta compression using up to 12 threads
|
|
Compressing objects: 100% (3/3), done.
|
|
Writing objects: 100% (3/3), 390 bytes | 390.00 KiB/s, done.
|
|
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To http://uit.mpei.ru/git/IshutinaYI/cs-lab02.git
|
|
8bff39f..2d4cef2 main -> main
|
|
```
|
|
От имени Алисы загружаю изменения:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git fetch
|
|
Enter passphrase for key '/c/Users/GSTQ/.ssh/id_rsa':
|
|
remote: Enumerating objects: 5, done.
|
|
remote: Counting objects: 100% (5/5), done.
|
|
remote: Compressing objects: 100% (3/3), done.
|
|
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
Unpacking objects: 100% (3/3), 370 bytes | 52.00 KiB/s, done.
|
|
From uit.mpei.ru:ishutinayi/cs-lab02
|
|
8bff39f..2d4cef2 main -> origin/main
|
|
```
|
|
История всех веток:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --oneline --graph --decorate --all
|
|
* 2d4cef2 (origin/main) code: Возвращен вывод произведения
|
|
* 8bff39f (HEAD -> main) code: Подкорректировано оформление
|
|
* 71248b0 Добавлен вывод разности файлов
|
|
* a0f4cab code: Добавлен вывод суммы чисел
|
|
* 1a7913c build: Добавлен файл проекта
|
|
* 83e242d code: Заготовка программы
|
|
```
|
|
Продвигаю ветку main к скачанной версии:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git pull --ff-only
|
|
Updating 8bff39f..2d4cef2
|
|
Fast-forward
|
|
main.cpp | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
```
|
|
От имени Алисы в код был добавлен вывод разности. Теперь код выглядит так:
|
|
```
|
|
<...>
|
|
cout << "A + B = " << a + b << '\n'
|
|
<< "A - B = " << a - b << '\n'
|
|
<< "A * B = " << a * b << '\n'
|
|
<< "A / B = " << a / b << '\n'; <...>
|
|
```
|
|
Добавляю изменение в область отслеживания:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add -u
|
|
```
|
|
Делаю коммит:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m 'code: Добавлен вывод разности'
|
|
[main 380aa92] code: Добавлен вывод разности
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
```
|
|
Отправляю его на сервер:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git push
|
|
Enumerating objects: 5, done.
|
|
Counting objects: 100% (5/5), done.
|
|
Delta compression using up to 12 threads
|
|
Compressing objects: 100% (3/3), done.
|
|
Writing objects: 100% (3/3), 386 bytes | 386.00 KiB/s, done.
|
|
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To http://uit.mpei.ru/git/IshutinaYI/cs-lab02.git
|
|
2d4cef2..380aa92 main -> main
|
|
```
|
|
"Ловлю" изменение "на машине Боба"
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git fetch
|
|
remote: Enumerating objects: 5, done.
|
|
remote: Counting objects: 100% (5/5), done.
|
|
remote: Compressing objects: 100% (3/3), done.
|
|
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
Unpacking objects: 100% (3/3), 366 bytes | 40.00 KiB/s, done.
|
|
From http://uit.mpei.ru/git/IshutinaYI/cs-lab02
|
|
2d4cef2..380aa92 main -> origin/main
|
|
```
|
|
Пододвигаю ветку:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git pull --ff-only
|
|
Updating 2d4cef2..380aa92
|
|
Fast-forward
|
|
main.cpp | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
```
|
|
## 8. Устранение конфликтов правок
|
|
|
|
"На машине Алисы" добавляю вывод максимума (<< "Maximum between A and B = " << max(a,b);).
|
|
Отправляю git'y на отслеживание:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git add -u
|
|
```
|
|
Коммит:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m 'code: Добавлена печать максимума'
|
|
[main f72cf38] code: Добавлена печать максимума
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
```
|
|
Отправка коммита на сервер:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git push
|
|
Enumerating objects: 5, done.
|
|
Counting objects: 100% (5/5), done.
|
|
Delta compression using up to 12 threads
|
|
Compressing objects: 100% (3/3), done.
|
|
Writing objects: 100% (3/3), 426 bytes | 426.00 KiB/s, done.
|
|
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To http://uit.mpei.ru/git/IshutinaYI/cs-lab02.git
|
|
380aa92..f72cf38 main -> main
|
|
```
|
|
"На машине Боба" добавляю минимум () и проделываю все привычные операции:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git add -u
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git commit -m 'code: Добавлен вывод минимума'
|
|
[main 5d9e81d] code: Добавлен вывод минимума
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git push
|
|
To http://uit.mpei.ru/git/IshutinaYI/cs-lab02.git
|
|
! [rejected] main -> main (fetch first)
|
|
error: failed to push some refs to 'http://uit.mpei.ru/git/IshutinaYI/cs-lab02.git'
|
|
hint: Updates were rejected because the remote contains work that you dо ------ Обновления отклонены, так как
|
|
------------------------------------------------------------------------ на удаленном компьютере есть работа
|
|
-------------------------------------------------------------------- которой нет у вас.
|
|
hint: not have locally. This is usually caused by another repository pushing ------ Другой репозиторий отправляет ту же ссылку.
|
|
hint: to the same ref. You may want to first integrate the remote changes
|
|
hint: (e.g., 'git pull ...') before pushing again.
|
|
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
|
```
|
|
Подгружаю изменения с сервера:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git fetch
|
|
remote: Enumerating objects: 5, done.
|
|
remote: Counting objects: 100% (5/5), done.
|
|
remote: Compressing objects: 100% (3/3), done.
|
|
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
Unpacking objects: 100% (3/3), 406 bytes | 33.00 KiB/s, done.
|
|
From http://uit.mpei.ru/git/IshutinaYI/cs-lab02
|
|
380aa92..f72cf38 main -> origin/main
|
|
```
|
|
Смотрю, что получилось:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git log --all --decorate --graph --oneline
|
|
* 5d9e81d (HEAD -> main) code: Добавлен вывод минимума
|
|
| * f72cf38 (origin/main, origin/HEAD) code: Добавлена печать максимума
|
|
|/
|
|
* 380aa92 code: Добавлен вывод разности ------ от последнего обещго коммита исходят две ветви:
|
|
--------------------------------------------------- на сервере лежит вывод максимума Алисы,
|
|
--------------------------------------------------- в локальном репозитории лежит вывод минимума Боба (на сервере его нет!)
|
|
* 2d4cef2 code: Возвращен вывод произведения
|
|
* 8bff39f code: Подкорректировано оформление
|
|
* 71248b0 Добавлен вывод разности файлов
|
|
* a0f4cab code: Добавлен вывод суммы чисел
|
|
* 1a7913c build: Добавлен файл проекта
|
|
* 83e242d code: Заготовка программы
|
|
```
|
|
Необходимо поместить коммит Боба на сервер поверх коммита Алисы (то есть восстановить линейную последовательность,
|
|
чтобы коммит Боба основывался на коде, получившемся в результате коммита Алисы)
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git rebase origin/main
|
|
Auto-merging main.cpp
|
|
CONFLICT (content): Merge conflict in main.cpp
|
|
error: could not apply 5d9e81d... 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 5d9e81d... code: Добавлен вывод минимума
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
|
|
$ git status
|
|
interactive rebase in progress; onto f72cf38
|
|
Last command done (1 command done):
|
|
pick 5d9e81d code: Добавлен вывод минимума
|
|
No commands remaining.
|
|
You are currently rebasing branch 'main' on 'f72cf38'. ------ В настоящее время вы пытаетесь переместить ветку main к f72cf38.
|
|
(fix conflicts and then run "git rebase --continue") ------ Исправьте конфликты и продолжите перемещение.
|
|
(use "git rebase --skip" to skip this patch)
|
|
(use "git rebase --abort" to check out the original branch)
|
|
|
|
Unmerged paths: ------ Необъединенные пути!! В обоих случаях изменяется файл main.cpp.
|
|
(use "git restore --staged <file>..." to unstage)
|
|
(use "git add <file>..." to mark resolution)
|
|
both modified: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
main.exe
|
|
main.o
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
```
|
|
Открываю "На машине ```Боба" проект и вижу, что место конфликта отображено в коде графически:
|
|
```
|
|
<<<<<<< HEAD
|
|
<< "Maximum between A and B = " << max(a,b);
|
|
=======
|
|
<< "Minimum between A and B = " << min(a,b);
|
|
>>>>>>> 5d9e81d (code: Добавлен вывод минимума)
|
|
```
|
|
Вручную редактирую код, убрав все системные подсказки и объединив правки Боба и Алисы. Пересобираю проект и проверяю. Работает.
|
|
|
|
Продолжаю перемещение:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
|
|
$ git add main.cpp
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
|
|
$ git rebase --continue ------ На этом моменте почему-то внезапно вылезает Vim, закрываю его клавишей Esc и командой :wq.
|
|
[detached HEAD a15ac7f] code: Добавлен вывод минимума (fix)
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
Successfully rebased and updated refs/heads/main.
|
|
```
|
|
Теперь история линейна:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/bob/project (main)
|
|
$ git log --all --decorate --graph --oneline
|
|
* a15ac7f (HEAD -> main) code: Добавлен вывод минимума (fix)
|
|
* f72cf38 (origin/main, origin/HEAD) code: Добавлена печать максимума
|
|
* 380aa92 code: Добавлен вывод разности
|
|
* 2d4cef2 code: Возвращен вывод произведения
|
|
* 8bff39f code: Подкорректировано оформление
|
|
* 71248b0 Добавлен вывод разности файлов
|
|
* a0f4cab code: Добавлен вывод суммы чисел
|
|
* 1a7913c build: Добавлен файл проекта
|
|
* 83e242d code: Заготовка программы
|
|
```
|
|
## 8. Работа с ветвлением.
|
|
|
|
От имени Алисы создаю новую ветку, чтобы сделать в ней изменение типа переменных, не затрагивая при этом основную.
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git branch double
|
|
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
```
|
|
Переключаюсь на "свежую" ветку:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git checkout double
|
|
Switched to branch 'double'
|
|
```
|
|
Изменяю в коде тип с int на double, пересобираю, заношу под Git все изменения отслеживаемых файлов (в данном случае только main.cpp)
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (double)
|
|
$ git add -u
|
|
```
|
|
Делаю коммит:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (double)
|
|
$ git commit -m 'code: Заменен тип переменных'
|
|
[double 22beab3] code: Заменен тип переменных
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
```
|
|
Переключаюсь обратно на main:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (double)
|
|
$ git checkout main
|
|
Switched to branch 'main'
|
|
Your branch is up to date with 'origin/main'.
|
|
```
|
|
Сливаю временную ветку double и главную ветку main в одну (то есть присоединяю double к main)
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git merge double ------ на этом моменте должен был открыться Vim, но почему-то не открылся.
|
|
Updating f72cf38..22beab3
|
|
Fast-forward
|
|
main.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
```
|
|
Коммичу факт слияния двух веток:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git commit -m 'branch: Слияние веток main и double'
|
|
On branch main
|
|
Your branch is ahead of 'origin/main' by 1 commit.
|
|
(use "git push" to publish your local commits)
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
.gitignore
|
|
main.exe
|
|
main.o
|
|
project.depend
|
|
project.layout
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
```
|
|
Отправляю изменения на сервер:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git push
|
|
Enumerating objects: 5, done.
|
|
Counting objects: 100% (5/5), done.
|
|
Delta compression using up to 12 threads
|
|
Compressing objects: 100% (3/3), done.
|
|
Writing objects: 100% (3/3), 367 bytes | 367.00 KiB/s, done.
|
|
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To http://uit.mpei.ru/git/IshutinaYI/cs-lab02.git
|
|
f72cf38..22beab3 main -> main
|
|
```
|
|
Просматриваю историю:
|
|
```
|
|
GSTQ@WIN-CBR6EH59CO3 MINGW64 ~/Desktop/lab02/alice/project (main)
|
|
$ git log --oneline --graph --decorate --all
|
|
* 22beab3 (HEAD -> main, origin/main, double) code: Заменен тип переменных
|
|
* f72cf38 code: Добавлена печать максимума
|
|
* 380aa92 code: Добавлен вывод разности
|
|
* 2d4cef2 code: Возвращен вывод произведения
|
|
* 8bff39f code: Подкорректировано оформление
|
|
* 71248b0 Добавлен вывод разности файлов
|
|
* a0f4cab code: Добавлен вывод суммы чисел
|
|
* 1a7913c build: Добавлен файл проекта
|
|
* 83e242d code: Заготовка программы
|