Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
1436 строки
60 KiB
Markdown
1436 строки
60 KiB
Markdown
# Лабораторная работа №2
|
|
### Применение системы контроля версий Git. <br>
|
|
#### 1. Цель работы #
|
|
Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними.
|
|
Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также типовой web-интерфейс Gitea. <br>
|
|
|
|
#### 2. Создание директорий
|
|
Создадим каталог `/Project/lab02` для данной ЛР и запустим в нем Git Bash.
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
|
|
```
|
|
Также создаем каталоги `/Project/lab02/alice` и `/Project/lab02/bob`
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
|
|
$ mkdir alice
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
|
|
$ mkdir bob
|
|
```
|
|
Проверяем только что созданные дирректории:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02
|
|
$ ls
|
|
alice/ bob/
|
|
```
|
|
Создадим директорию `alice/project`
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
|
|
$ mkdir project
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
|
|
$ ls
|
|
project/
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
|
|
$ cd project
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project
|
|
$ cd ..
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice
|
|
$ cd project
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project
|
|
$
|
|
```
|
|
|
|
#### Инициализация репозитория и настройка Git.
|
|
|
|
Инициализируем репозиторий в текущем каталоге `project`:
|
|
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project
|
|
$ git init
|
|
Initialized empty Git repository in C:/Users/Артем/Project/lab02/alice/project/.git/
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
|
|
$
|
|
```
|
|
К приглашению командной строки добавилось `(master)`: имя текущий ветви Git. <br>
|
|
Перед началом работы следует выполнить некоторые настройки:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
|
|
$ git config --global user.name "rogozinay"
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
|
|
$ git config --global user.email "rogozinay@mpei.ru"
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/Project/lab02/alice/project (master)
|
|
$ git config --global core.autocrlf true
|
|
```
|
|
Укажем имя, которым будут подписаны коммиты.
|
|
Укажем электронную почту, которая будет в описании коммитера.
|
|
Зададим преобразование окончаний при котором Git будет всегда преобразовывать окончания строк в LF при извлечении. Этот вариант следует использовать для файлов, которые должны поддерживать окончания LF.
|
|
|
|
### Занесение файлов под контроль версий
|
|
Запустим CodeBlocks и создадим проект в репозитории Алисы:
|
|
|
|
_Project title:_ project<br>
|
|
_Folder to create project in:_ C:\Users\Артем\Project\lab02\alice\project<br>
|
|
_Project filename:_ project.cbp<br>
|
|
_Resulting filename:_ C:\Users\user\Desktop\lab02\alice\project\project.cbp<br>
|
|
|
|
Соберите проект.
|
|
|
|
На этом этапе имеем следующую структуру файлов и каталогов:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
|
|
No commits yet
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
main.cpp
|
|
obj/
|
|
project.cbp
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
```
|
|
Вывод демонстрирует нам адрес репозитория, имя ветки, список файлов, наличие коммитов и статус отслеживания файлов.<br>
|
|
Добавим файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит. Так как этот файл ранее не отслеживался Git, то с этого момента Git начнет его отслеживать.<br>
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git add main.cpp
|
|
```
|
|
Просмотрим состояние рабочей копии и отметим изменения:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
|
|
No commits yet
|
|
|
|
Changes to be committed:
|
|
(use "git rm --cached <file>..." to unstage)
|
|
new file: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.cbp
|
|
```
|
|
Из вывода видно, что Git начал отслеживать файл main.cpp, при этом все остальные файлы не отслеживаются.<br>
|
|
|
|
Выполним коммит с файлом main.cpp и коротким сообщением:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git commit -m 'code: заготовка программы'
|
|
[master (root-commit) 28681bd] code: заготовка программы
|
|
1 file changed, 9 insertions(+)
|
|
create mode 100644 main.cpp
|
|
```
|
|
Теперь мы отправили изменения в хранилище и Git показывает нам что в рабочей копии на данный момент больше никаких изменений нет, но есть не отслеживаемые файлы, изменения в которых не отслеживаются. Также есть подсказка что их можно добавить с помощью команды (use "git add" to track).<br>
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.cbp
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
```
|
|
### Составление сообщений к коммитам<br>
|
|
Важно, чтобы описания коммитов были информативными в будущем по ним можно быстро читать историю проекта, искать коммиты по ключевым словам. Заголовок (первая строка) должен быть коротким (желательно до 50 символов) и описывать суть изменений, потому что только он показывается в списке коммитов. Часто в заголовок включают тему (к какой части проекта относится коммит) или номер задачи в системе отслеживания ошибок.<br>
|
|
Добавим файл project.cbp в индекс и сделаем коммит с ним:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git add project.cbp
|
|
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git
|
|
touches it
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Changes to be committed:
|
|
(use "git restore --staged <file>..." to unstage)
|
|
new file: project.cbp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
```
|
|
Посмотрим историю коммитов, где новые коммиты идут вначале, и увидим внесенный нами комментарий.
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --stat
|
|
commit 6d51e028f640d5cd11264c6be9f636e75b575d33 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:40:52 2023 +0300
|
|
|
|
build: добавлен файл проекта
|
|
|
|
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 40 insertions(+)
|
|
|
|
commit 28681bd19eb9eb0dff028537c018599fcb047e3e
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:22:52 2023 +0300
|
|
|
|
code: заготовка программы
|
|
|
|
main.cpp | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
```
|
|
### Создание коммитов с изменениями
|
|
Откроем Code Blocks и заменим тело функции main() на ввод двух чисел:
|
|
|
|
```
|
|
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
int main()
|
|
{
|
|
cout << "Enter A and B: " << endl;
|
|
int a, b;
|
|
cin >> a >> b;
|
|
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Теперь посмотрим изменения:<br>
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.layout
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
```
|
|
Видим в выводе Git показывает изменения в ветке master, файлы которые были изменены, а также неотслеживаемые файлы в проекте и подсказки о том как занести файлы в индекс, откатить изменения.<br>
|
|
Выберем файлы, изменения которых должны войти в коммит, затем сделаем коммит и проверим состояние:<br>
|
|
Code Blocks:
|
|
```
|
|
int main()
|
|
{
|
|
cout << "Enter A and B: " << endl;
|
|
int a, b;
|
|
cin >> a >> b;
|
|
cout << "A + B = " << a + b << '\n'
|
|
return 0;
|
|
}
|
|
```
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git add main.cpp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git commit -m "build: добавлен вывод суммы a и b"
|
|
[master 96dfa86] build: добавлен вывод суммы a и b
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
```
|
|
Этот способ удобен, если изменения присутствуют не только в тех файлах, которые коммитятся.
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --stat
|
|
commit 96dfa86be9c4561afd4c9b6026fda862aee0a3b5 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 17:21:23 2023 +0300
|
|
|
|
build: добавлен вывод суммы a и b
|
|
|
|
main.cpp | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
commit 6d51e028f640d5cd11264c6be9f636e75b575d33
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:40:52 2023 +0300
|
|
|
|
build: добавлен файл проекта
|
|
|
|
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 40 insertions(+)
|
|
|
|
commit 28681bd19eb9eb0dff028537c018599fcb047e3e
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:22:52 2023 +0300
|
|
|
|
code: заготовка программы
|
|
|
|
main.cpp | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
```
|
|
Добавим вывод разности:
|
|
```
|
|
int main()
|
|
{
|
|
cout << "Enter A and B: " << endl;
|
|
int a, b;
|
|
cin >> a >> b;
|
|
cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Добавим в индекс все изменения, затем сделаем коммит:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git add -u
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git commit -m "build: добавлен вывод разности a и b"
|
|
[master 22be7f3] build: добавлен вывод разности a и b
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --stat
|
|
commit 22be7f39c4e83fdfe02e0c75c8d4b20ec629a5b8 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 17:54:14 2023 +0300
|
|
|
|
build: добавлен вывод разности a и b
|
|
|
|
main.cpp | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
bin/
|
|
obj/
|
|
project.layout
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
```
|
|
|
|
### Игнорирование файлов
|
|
|
|
Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New… → Empty) и запишем в него строку:
|
|
```
|
|
/bin
|
|
```
|
|
Косая черта в начале означает путь от корня репозитория (каталога project), без нее игнорировался бы файл или каталог bin в любой подпапке. Сохраним файл в корне репозиторий под именем .gitignore, именно с точкой в начале.
|
|
|
|
Каждое правило игнорирования пишется на отдельной строке .gitignore.
|
|
|
|
Выполнив git status, можно видеть, что каталог bin не отображается.
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: main.cpp
|
|
|
|
Untracked files:/
|
|
++--------
|
|
(use "git add <file>..." to include in what will be committed)
|
|
.gitignore
|
|
obj/
|
|
project.depend
|
|
project.layout
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
```
|
|
Добавим все изменения в индекс, сделаем коммит. Также добавим к игнорируемым файлам /obj и .layout
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: main.cpp
|
|
modified: project.cbp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
.gitignore
|
|
project.depend
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git commit -a -m "build: добавлено игнорирование файлов"
|
|
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
|
|
[master 1e31a4c] build: добавлено игнорирование файлов
|
|
2 files changed, 6 insertions(+), 5 deletions(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
.gitignore
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
|
|
```
|
|
Результат виден выше. Git перестал отображать эти файлы и папки.
|
|
Создадим коммит с .gitignore
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git add .gitignore
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git commit -m "build: добавлен .gitignore"
|
|
[master 9a14516] build: добавлен .gitignore
|
|
1 file changed, 3 insertions(+)
|
|
create mode 100644 .gitignore
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate
|
|
9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate
|
|
9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
```
|
|
|
|
### Работа с журналом репозитария
|
|
|
|
Просмотр истории репозитория в разном виде:
|
|
|
|
```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --stat
|
|
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 20:52:02 2023 +0300
|
|
|
|
build: добавлен .gitignore
|
|
|
|
.gitignore | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
commit 1e31a4c532817d311cf757a9672c5d2d28899699
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 19:36:45 2023 +0300
|
|
|
|
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 20:52:02 2023 +0300
|
|
|
|
build: добавлен .gitignore
|
|
|
|
.gitignore | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
commit 1e31a4c532817d311cf757a9672c5d2d28899699
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 19:36:45 2023 +0300
|
|
|
|
build: добавлено игнорирование файлов
|
|
|
|
main.cpp | 8 +++-----
|
|
project.cbp | 3 +++
|
|
2 files changed, 6 insertions(+), 5 deletions(-)
|
|
|
|
commit 22be7f39c4e83fdfe02e0c75c8d4b20ec629a5b8
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 17:54:14 2023 +0300
|
|
|
|
build: добавлен вывод разности a и b
|
|
|
|
main.cpp | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
commit 96dfa86be9c4561afd4c9b6026fda862aee0a3b5
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 17:21:23 2023 +0300
|
|
|
|
build: добавлен вывод суммы a и b
|
|
|
|
main.cpp | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
commit 6d51e028f640d5cd11264c6be9f636e75b575d33
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:40:52 2023 +0300
|
|
|
|
build: добавлен файл проекта
|
|
|
|
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 40 insertions(+)
|
|
|
|
commit 28681bd19eb9eb0dff028537c018599fcb047e3e
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:22:52 2023 +0300
|
|
|
|
code: заготовка программы
|
|
|
|
main.cpp | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate
|
|
9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
```
|
|
|
|
#### Поиск коммитов
|
|
Коммиты можно фильтровать по разным признакам:
|
|
|
|
git log -- main.cpp показывает затрагивающие main.cpp;<br>
|
|
git log --grep "code:" показывает коммиты с code: в сообщении.<br>
|
|
Найдем сначала коммиты по теме build, затем коммиты, затрагивающие project.cbp:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate --grep "build:"
|
|
9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log -- project.cbp
|
|
commit 1e31a4c532817d311cf757a9672c5d2d28899699
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 19:36:45 2023 +0300
|
|
|
|
build: добавлено игнорирование файлов
|
|
|
|
commit 6d51e028f640d5cd11264c6be9f636e75b575d33
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sat Nov 18 18:40:52 2023 +0300
|
|
|
|
build: добавлен файл проекта
|
|
```
|
|
#### Просмотр коммитов
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git show HEAD
|
|
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 20:52:02 2023 +0300
|
|
|
|
build: добавлен .gitignore
|
|
|
|
diff --git a/.gitignore b/.gitignore
|
|
new file mode 100644
|
|
index 0000000..9d83ebf
|
|
--- /dev/null
|
|
+++ b/.gitignore
|
|
@@ -0,0 +1,3 @@
|
|
+/bin
|
|
+/obj
|
|
+*.layout
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git show main
|
|
fatal: ambiguous argument 'main': unknown revision or path not in the working tree.
|
|
Use '--' to separate paths from revisions, like this:
|
|
'git <command> [<revision>...] -- [<file>...]'
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git show master
|
|
commit 9a1451646da81b21f97c5508cc76d7799345bf04 (HEAD -> master)
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 20:52:02 2023 +0300
|
|
|
|
build: добавлен .gitignore
|
|
|
|
diff --git a/.gitignore b/.gitignore
|
|
new file mode 100644
|
|
index 0000000..9d83ebf
|
|
--- /dev/null
|
|
+++ b/.gitignore
|
|
@@ -0,0 +1,3 @@
|
|
+/bin
|
|
+/obj
|
|
+*.layout
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git show 22be7f3
|
|
commit 22be7f39c4e83fdfe02e0c75c8d4b20ec629a5b8
|
|
Author: rogozinay <rogozinay@mpei.ru>
|
|
Date: Sun Nov 19 17:54:14 2023 +0300
|
|
|
|
build: добавлен вывод разности a и b
|
|
|
|
diff --git a/main.cpp b/main.cpp
|
|
index 1008718..4e76e8a 100644
|
|
--- a/main.cpp
|
|
+++ b/main.cpp
|
|
@@ -5,9 +5,11 @@ using namespace std;
|
|
int main()
|
|
{
|
|
cout << "Enter A and B: " << endl;
|
|
- int a, b;
|
|
- cin >> a >> b;
|
|
-
|
|
+ int a, b, c; d;
|
|
+ c = a + b;
|
|
+ d = a - b;
|
|
+ count << c;
|
|
+ count << d;
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Добавим вывод произведения чисел:
|
|
|
|
Code Blocks:
|
|
```
|
|
int main()
|
|
{
|
|
cout << "Enter A and B: " << endl;
|
|
int a, b;
|
|
cin >> a >> b;
|
|
cout << "A + B = " << a + b << '\n'
|
|
<< "A - B = " << a - b << '\n'
|
|
<< "A * B = " << a * b << '\n';
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Просмотрим изменения. Вывод содержит отметки о том что изменено, какие строки удалены, что добавлено.
|
|
```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git diff
|
|
diff --git a/main.cpp b/main.cpp
|
|
index cc8c622..5302c5e 100644
|
|
--- a/main.cpp
|
|
+++ b/main.cpp
|
|
@@ -7,7 +7,9 @@ int main()
|
|
cout << "Enter A and B: " << endl;
|
|
int a, b;
|
|
cin >> a >> b;
|
|
- cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
|
|
+ cout << "A + B = " << a + b << '\n'
|
|
+ << "A - B = " << a - b << '\n'
|
|
+ << "A * B = " << a * b << '\n';
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности.
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git diff HEAD~3 HEAD
|
|
diff --git a/.gitignore b/.gitignore
|
|
new file mode 100644
|
|
index 0000000..9d83ebf
|
|
--- /dev/null
|
|
+++ b/.gitignore
|
|
@@ -0,0 +1,3 @@
|
|
+/bin
|
|
+/obj
|
|
+*.layout
|
|
diff --git a/main.cpp b/main.cpp
|
|
index 1008718..cc8c622 100644
|
|
--- a/main.cpp
|
|
+++ b/main.cpp
|
|
@@ -7,7 +7,7 @@ int main()
|
|
cout << "Enter A and B: " << endl;
|
|
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
|
|
index 99bb702..f5f4083 100644
|
|
--- a/project.cbp
|
|
+++ b/project.cbp
|
|
@@ -32,6 +32,9 @@
|
|
<Add option="-Wall" />
|
|
<Add option="-fexceptions" />
|
|
</Compiler>
|
|
+ <Unit filename=".gitignore">
|
|
+ <Option target="<{~None~}>" />
|
|
+ </Unit>
|
|
<Unit filename="main.cpp" />
|
|
<Extensions>
|
|
<lib_finder disable_auto="1" />
|
|
```
|
|
### Откат изменений
|
|
Сделаем коммит последнего изменения. Мы добавили вывод произведения a и b:
|
|
```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git commit -a -m "build: добавлен вывд произведения a и b"
|
|
[master e8230b0] build: добавлен вывд произведения a и b
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate --grep "build:"
|
|
e8230b0 (HEAD -> master) build: добавлен вывд произведения a и b
|
|
9a14516 build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
```
|
|
Проверяем, все добавлено.
|
|
|
|
### Откат изменений
|
|
|
|
Выполним откат изменений к последнему коммиту перед выводом произведения чисел:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate --grep "build:"
|
|
e8230b0 (HEAD -> master) build: добавлен вывд произведения a и b
|
|
9a14516 build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git reset --hard HEAD~1
|
|
HEAD is now at 9a14516 build: добавлен .gitignore
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git log --oneline --decorate --grep "build:"
|
|
9a14516 (HEAD -> master) build: добавлен .gitignore
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
6d51e02 build: добавлен файл проекта
|
|
```
|
|
#### Другой способ отката
|
|
|
|
Добавим над функцией main() комментарий:
|
|
|
|
Code Blocks:
|
|
```
|
|
// you may type whatever you want<br>
|
|
```
|
|
Уберем изменения в main.cpp другим способом — откатив этот файл к состоянию в последнем коммите (HEAD):
|
|
```
|
|
git checkout HEAD -- main.cpp
|
|
```
|
|
Второй способ необходим, чтобы откатывать отдельные файлы. Аргумент HEAD необязателен, но вместо него можно указать не последний, а любой другой коммит. Это полезно, если нужно восстановить состояние одного файла таким, какое оно было в известный момент.
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Changes not staged for commit:
|
|
(use "git add <file>..." to update what will be committed)
|
|
(use "git restore <file>..." to discard changes in working directory)
|
|
modified: main.cpp
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git checkout HEAD -- main.cpp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (master)
|
|
$ git status
|
|
On branch master
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
```
|
|
Отправляем на сервер через hhtp://
|
|
```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git remote set-url origin http://uit.mpei.ru/git/rogozinay/cs-lab02.git
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git push -u origin main
|
|
Enumerating objects: 19, done.
|
|
Counting objects: 100% (19/19), done.
|
|
Delta compression using up to 4 threads
|
|
Compressing objects: 100% (17/17), done.
|
|
Writing objects: 100% (19/19), 2.49 KiB | 636.00 KiB/s, done.
|
|
Total 19 (delta 2), reused 0 (delta 0), pack-reused 0
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To http://uit.mpei.ru/git/rogozinay/cs-lab02.git
|
|
* [new branch] main -> main
|
|
branch 'main' set up to track 'origin/main'.
|
|
```
|
|
### Получение проекта с сервера
|
|
Выполним клонирование проекта в директорию Боба:
|
|
```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git clone http://uit.mpei.ru/git/rogozinay/cs-lab02.git ~/project/lab02/bob/project
|
|
Cloning into 'C:/Users/Артем/project/lab02/bob/project'...
|
|
remote: Enumerating objects: 19, done.
|
|
remote: Counting objects: 100% (19/19), done.
|
|
remote: Compressing objects: 100% (17/17), done.
|
|
remote: Total 19 (delta 2), reused 0 (delta 0), pack-reused 0
|
|
Receiving objects: 100% (19/19), done.
|
|
Resolving deltas: 100% (2/2), done.
|
|
```
|
|
Настроим Git на машине Боба:
|
|
```Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git config --global user.name "rogozinay"
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git config --global user.email "rogozinay@mpei.ru"
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git config --global core.autocrlf true
|
|
```
|
|
Сделаем изменения, добавим вывод умножения на машине Боба, проверим изменения, внесем в индекс, сделаем коммит и отправим все это на сервер:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ ls
|
|
main.cpp project.cbp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git status
|
|
On branch main
|
|
Your branch is up to date with 'origin/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
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git add main.cpp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git add project.cbp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git status
|
|
On branch main
|
|
Your branch is up to date with 'origin/main'.
|
|
|
|
Changes to be committed:
|
|
(use "git restore --staged <file>..." to unstage)
|
|
modified: main.cpp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git commit -m 'code: добавлен вывод произведения'
|
|
[main 779ce84] code: добавлен вывод произведения
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git log --oneline --decorate --stat
|
|
779ce84 (HEAD -> main) code: добавлен вывод произведения
|
|
main.cpp | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
9a14516 (origin/main, origin/HEAD) build: добавлен .gitignore
|
|
.gitignore | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
main.cpp | 8 +++-----
|
|
project.cbp | 3 +++
|
|
2 files changed, 6 insertions(+), 5 deletions(-)
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
main.cpp | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
main.cpp | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
6d51e02 build: добавлен файл проекта
|
|
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 40 insertions(+)
|
|
28681bd code: заготовка программы
|
|
main.cpp | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 408 bytes | 408.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/rogozinay/cs-lab02.git
|
|
9a14516..779ce84 main -> main
|
|
```
|
|
|
|
На машине Алисы загрузим изменения, проверим:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 388 bytes | 48.00 KiB/s, done.
|
|
From http://uit.mpei.ru/git/rogozinay/cs-lab02
|
|
9a14516..779ce84 main -> origin/main
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 779ce84 (origin/main) code: добавлен вывод произведения
|
|
* 9a14516 (HEAD -> main) build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
```
|
|
Как можно видеть, ветка main отстает на один коммит от ветки origin/main (версии ветки main из удаленного репозитария под названием origin, то есть на сервере).<br>
|
|
|
|
Передвинем ветку `main` к скачанной версии:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git pull --ff-only
|
|
error: Your local changes to the following files would be overwritten by merge:
|
|
main.cpp
|
|
Please commit your changes or stash them before you merge.
|
|
Aborting
|
|
Updating 9a14516..779ce84
|
|
```
|
|
Получили ошибку так как в Code Blocks сделаны случайные изменения на машине Алисы. Git предупреждает нас об этом и подсказывает что нужно либо сделать коммит изменений, либо откат. Выполним откат ненужных изменений для файла `main.cpp` и повторим команду:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 779ce84 (origin/main) code: добавлен вывод произведения
|
|
* 9a14516 (HEAD -> main) build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git checkout -- main.cpp
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git status
|
|
On branch main
|
|
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
|
|
(use "git pull" to update your local branch)
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git pull --ff-only
|
|
Updating 9a14516..779ce84
|
|
Fast-forward
|
|
main.cpp | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
```
|
|
Выполнено, проверяем ветки:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 779ce84 (HEAD -> main, origin/main) code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
```
|
|
Делаем тоже самое наоборот:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git commit -a -m 'code: добавлен вывод действий с делением'
|
|
[main ccce871] code: добавлен вывод действий с делением
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git log --oneline --decorate --stat
|
|
ccce871 (HEAD -> main) code: добавлен вывод действий с делением
|
|
main.cpp | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
779ce84 (origin/main, origin/HEAD) code: добавлен вывод произведения
|
|
main.cpp | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
9a14516 build: добавлен .gitignore
|
|
.gitignore | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
1e31a4c build: добавлено игнорирование файлов
|
|
main.cpp | 8 +++-----
|
|
project.cbp | 3 +++
|
|
2 files changed, 6 insertions(+), 5 deletions(-)
|
|
22be7f3 build: добавлен вывод разности a и b
|
|
main.cpp | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
96dfa86 build: добавлен вывод суммы a и b
|
|
main.cpp | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
6d51e02 build: добавлен файл проекта
|
|
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 40 insertions(+)
|
|
28681bd code: заготовка программы
|
|
main.cpp | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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
|
|
remote: . Processing 1 references
|
|
remote: Processed 1 references in total
|
|
To http://uit.mpei.ru/git/rogozinay/cs-lab02.git
|
|
779ce84..ccce871 main -> main
|
|
```
|
|
Далее на машине Алисы загружаем:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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 | 59.00 KiB/s, done.
|
|
From http://uit.mpei.ru/git/rogozinay/cs-lab02
|
|
779ce84..ccce871 main -> origin/main
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* ccce871 (origin/main) code: добавлен вывод действий с делением
|
|
* 779ce84 (HEAD -> main) code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git pull --ff-only
|
|
Updating 779ce84..ccce871
|
|
Fast-forward
|
|
main.cpp | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* ccce871 (HEAD -> main, origin/main) code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
```
|
|
Видим что все изменения были загружены, ветки перенесены.
|
|
|
|
### Разрешение конфликтов правок при совместной работе
|
|
От имени Алисы добавим нахождения максимума из чисел, делаем коммит, отправляем на сервер:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git commit -a -m "code: добавление максимума из чисел"
|
|
[main 28c75ea] code: добавление максимума из чисел
|
|
1 file changed, 2 insertions(+)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git status
|
|
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)
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 28c75ea (HEAD -> main) code: добавление максимума из чисел
|
|
* ccce871 (origin/main) code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 435 bytes | 435.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/rogozinay/cs-lab02.git
|
|
ccce871..28c75ea main -> main
|
|
```
|
|
От имени Боба заходим, делаем коммит смотрим изменения:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/bob/project (main)
|
|
$ git commit -a -m 'code: добавлен вывод минимума'
|
|
[main 26ad6e7] code: добавлен вывод минимума
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 418 bytes | 418.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/rogozinay/cs-lab02.git
|
|
c50329e..26ad6e7 main -> main
|
|
|
|
```
|
|
Делаем коммит с выводом минимума от имени Алисы:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git commit -a -m "code: добавление максимума из чисел"
|
|
[main 5d15d1c] code: добавление максимума из чисел
|
|
1 file changed, 1 insertion(+)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git push
|
|
To http://uit.mpei.ru/git/rogozinay/cs-lab02.git
|
|
! [rejected] main -> main (fetch first)
|
|
error: failed to push some refs to 'http://uit.mpei.ru/git/rogozinay/cs-lab02.git'
|
|
hint: Updates were rejected because the remote contains work that you do
|
|
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.
|
|
```
|
|
Не удается сделать загрузку на сервер
|
|
Можно видеть, что ветка `main` локального репозитария разошлась с веткой `origin/main`, то есть с веткой `main` на сервере. Алисе нужно переместить свой коммит поверх коммита Боба, то есть поверх origin/main:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git rebase origin/main
|
|
error: cannot rebase: You have unstaged changes.
|
|
error: Please commit or stash them.
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 5d15d1c (HEAD -> main) code: добавление максимума из чисел
|
|
* 28c75ea (origin/main) code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
```
|
|
Возникает конфликт:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* 4edc7f7 (HEAD -> main) code: добавление максимума из чисел
|
|
* 5d15d1c code: добавление максимума из чисел
|
|
| * 26ad6e7 (origin/main) code: добавлен вывод минимума
|
|
| * c50329e code: добавлен вывод vминимума
|
|
|/
|
|
* 28c75ea code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git rebase origin/main
|
|
Auto-merging main.cpp
|
|
CONFLICT (content): Merge conflict in main.cpp
|
|
error: could not apply 5d15d1c... 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 5d15d1c... code: добавление максимума из чисел
|
|
```
|
|
В итоге место конфликта отмечено прямо в коде Code Blocks:
|
|
```
|
|
<<<<<<< HEAD
|
|
min(a, b);
|
|
=======
|
|
max(a, b);
|
|
>>>>>>> 5d15d1c (code: добавление максимума из чисел)
|
|
```
|
|
Вывод истории имеет желаемый вид:<br>
|
|
Sublime Text:
|
|
```
|
|
# Please enter the commit message for your changes. Lines starting
|
|
# with '#' will be ignored, and an empty message aborts the commit.
|
|
#
|
|
# interactive rebase in progress; onto 26ad6e7
|
|
# Last command done (1 command done):
|
|
# pick 5d15d1c code: добавление максимума из чисел
|
|
# Next command to do (1 remaining command):
|
|
# pick 4edc7f7 code: добавление максимума из чисел
|
|
# You are currently rebasing branch 'main' on '26ad6e7'.
|
|
#
|
|
# Changes to be committed:
|
|
# modified: main.cpp
|
|
#
|
|
# Untracked files:
|
|
# project.depend
|
|
#
|
|
```
|
|
Git:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main|REBASE 1/2)
|
|
$ git rebase --continue
|
|
[detached HEAD a557bfe] code: добавление максимума из чисел
|
|
1 file changed, 4 insertions(+)
|
|
dropping 4edc7f7de303dddf99d1c89a1c3c002d14b982df code: добавление максимума из чисел -- patch
|
|
contents already upstream
|
|
Successfully rebased and updated refs/heads/main.
|
|
```
|
|
|
|
### Использование веток
|
|
Создадим новую ветку, переключимся на нее:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git branch double
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git checkout double
|
|
Switched to branch 'double'
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
|
|
```
|
|
Посмотрим изменения, переключимся в `main`:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
|
|
$ git commit -a -m 'code: изменен тип на double'
|
|
On branch double
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
project.depend
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
|
|
$ git status
|
|
On branch double
|
|
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)
|
|
project.depend
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
|
|
$ git commit -a -m 'code: изменен тип на double'
|
|
[double fe86d2f] code: изменен тип на double
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
|
|
$ git log --oneline --decorate --all --graph
|
|
* fe86d2f (HEAD -> double) code: изменен тип на double
|
|
* 9d3e654 (origin/main, main) code: добавлен вывод минимума
|
|
* a557bfe code: добавление максимума из чисел
|
|
* 26ad6e7 code: добавлен вывод минимума
|
|
* c50329e code: добавлен вывод vминимума
|
|
* 28c75ea code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (double)
|
|
$ git checkout main
|
|
Switched to branch 'main'
|
|
Your branch is up to date with 'origin/main'.
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* fe86d2f (double) code: изменен тип на double
|
|
* 9d3e654 (HEAD -> main, origin/main) code: добавлен вывод минимума
|
|
* a557bfe code: добавление максимума из чисел
|
|
* 26ad6e7 code: добавлен вывод минимума
|
|
* c50329e code: добавлен вывод vминимума
|
|
* 28c75ea code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git fetch
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* fe86d2f (double) code: изменен тип на double
|
|
* 9d3e654 (HEAD -> main, origin/main) code: добавлен вывод минимума
|
|
* a557bfe code: добавление максимума из чисел
|
|
* 26ad6e7 code: добавлен вывод минимума
|
|
* c50329e code: добавлен вывод vминимума
|
|
* 28c75ea code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
```
|
|
Загрузим изменения в ветку `main` посмотрим результат:
|
|
```
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git fetch
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* fe86d2f (double) code: изменен тип на double
|
|
* 9d3e654 (HEAD -> main, origin/main) code: добавлен вывод минимума
|
|
* a557bfe code: добавление максимума из чисел
|
|
* 26ad6e7 code: добавлен вывод минимума
|
|
* c50329e code: добавлен вывод vминимума
|
|
* 28c75ea code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git merge double
|
|
Updating 9d3e654..fe86d2f
|
|
Fast-forward
|
|
main.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/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), 373 bytes | 373.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/rogozinay/cs-lab02.git
|
|
9d3e654..fe86d2f main -> main
|
|
|
|
Артем@DESKTOP-FNVURBO MINGW64 ~/project/lab02/alice/project (main)
|
|
$ git log --oneline --decorate --all --graph
|
|
* fe86d2f (HEAD -> main, origin/main, double) code: изменен тип на double
|
|
* 9d3e654 code: добавлен вывод минимума
|
|
* a557bfe code: добавление максимума из чисел
|
|
* 26ad6e7 code: добавлен вывод минимума
|
|
* c50329e code: добавлен вывод vминимума
|
|
* 28c75ea code: добавление максимума из чисел
|
|
* ccce871 code: добавлен вывод действий с делением
|
|
* 779ce84 code: добавлен вывод произведения
|
|
* 9a14516 build: добавлен .gitignore
|
|
* 1e31a4c build: добавлено игнорирование файлов
|
|
* 22be7f3 build: добавлен вывод разности a и b
|
|
* 96dfa86 build: добавлен вывод суммы a и b
|
|
* 6d51e02 build: добавлен файл проекта
|
|
* 28681bd code: заготовка программы
|
|
```
|
|
Git показывает что все изменения из ветки `double` синхронизованы. |