|
1 год назад | |
---|---|---|
.gitignore | 1 год назад | |
main.cpp | 1 год назад | |
project.cbp | 1 год назад | |
readme.md | 1 год назад |
readme.md
Лабораторная работа №2
Применение системы контроля версий Git.
1. Цель работы
Знать понятия и компоненты систем контроля версий (СКВ), порядок и приемы работы с ними.
Уметь участвовать в командной разработке, используя конкретную СКВ — Git, а также типовой web-интерфейс Gitea.
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.
Перед началом работы следует выполнить некоторые настройки:
Артем@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
Folder to create project in: C:\Users\Артем\Project\lab02\alice\project
Project filename: project.cbp
Resulting filename: C:\Users\user\Desktop\lab02\alice\project\project.cbp
Соберите проект.
На этом этапе имеем следующую структуру файлов и каталогов:
Артем@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)
Вывод демонстрирует нам адрес репозитория, имя ветки, список файлов, наличие коммитов и статус отслеживания файлов.
Добавим файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит. Так как этот файл ранее не отслеживался Git, то с этого момента Git начнет его отслеживать.
Артем@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, при этом все остальные файлы не отслеживаются.
Выполним коммит с файлом 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).
Артем@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)
Составление сообщений к коммитам
Важно, чтобы описания коммитов были информативными в будущем по ним можно быстро читать историю проекта, искать коммиты по ключевым словам. Заголовок (первая строка) должен быть коротким (желательно до 50 символов) и описывать суть изменений, потому что только он показывается в списке коммитов. Часто в заголовок включают тему (к какой части проекта относится коммит) или номер задачи в системе отслеживания ошибок.
Добавим файл 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;
}
Теперь посмотрим изменения:
Артем@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, файлы которые были изменены, а также неотслеживаемые файлы в проекте и подсказки о том как занести файлы в индекс, откатить изменения.
Выберем файлы, изменения которых должны войти в коммит, затем сделаем коммит и проверим состояние:
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: заготовка программы
Работа с журналом репозитария
Просмотр истории репозитория в разном виде:
$ 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;
git log --grep "code:" показывает коммиты с code: в сообщении.
Найдем сначала коммиты по теме 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;
}
Просмотрим изменения. Вывод содержит отметки о том что изменено, какие строки удалены, что добавлено.
$ 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:
$ 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://
$ 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'.
Получение проекта с сервера
Выполним клонирование проекта в директорию Боба:
$ 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 на машине Боба:
$ 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, то есть на сервере).
Передвинем ветку 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: добавление максимума из чисел)
Вывод истории имеет желаемый вид:
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
синхронизованы.