Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1284 строки
55 KiB
Plaintext

Отчет по лабораторной работе № 2 "Система контроля версий Git"
Выполнил: Евдоченко Н.В.
Группа: А-03-24
Проверил:
Примечание: работа выполнялась на Windows.
--Создала на рабочем столе каталог lab02 и запустила в нем Git Bash, приглашение:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02
$
--Просмотрела файлы в рабочем каталоге, это можно сделать командой "ls" --- пусто:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02
$ ls
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02
$
--Создала каталоги Алисы и Боба, создала каталог "project",
изучила команду "cd" в процессе:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02
$ mkdir alice
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02
$ mkdir bob
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02
$ cd alice
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice
$ mkdir project
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice
$ cd project
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project
$ cd ..
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice
$ cd project
--Инициализировала репозитарий:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Natasha/Desktop/lab02/alice/project/.git/
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main
--Просмотрела еще раз файлы в рабочем каталоге:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ ls -A
.git/
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.name 'Alice(EvdochenkoNV)'
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git config user.email 'YevdochenkoNV@mpei.ru'
У меня имя ветки по умолчанию не настроено.
Git создал ветку под названием master, что видно в приглашении терминала.
Я приняла решение поменять имя ветки на "main".
--Создала проект в CodeBlocks, проверила состояние копии:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.cpp
project.cbp
nothing added to commit but untracked files present (use "git add" to track)
--Скомпилировала проект, проверила состояние актуальной копии:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
main.cpp
obj/
project.cbp
project.depend
nothing added to commit but untracked files present (use "git add" to track)
--Как видно, пока что ни один из файлов не "в индексе", но предоставлены варианты для этого. Подсказка предлагает ввести файлы в набор изменений.
--Так и сделаю. Добавлю main.cpp в "индекс", проверю добавился ли он, и закоммичу заготовку:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
--Добавила файл main.cpp в индекс.
--Теперь просмотрю его состояние:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.cbp
project.depend
--Как видно, Git Bash вывел сообщение о том, что теперь добавлен "новый" файл - main.cpp. Закоммичу его:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[main (root-commit) 52f11a8] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
--Также добавлю projecet.cbp в индекс и закоммичу этот проект:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add project.cbp
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
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/
--Проверила, находится ли в индекесе project.cbp. Теперь закоммичу его:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main 79e3482] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
--Внесла изменения в main.cpp и теперь проверю их наличие в Git Bash:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.depend
no changes added to commit (use "git add" and/or "git commit -a")
--Git Bash показывает, что теперь есть измененный несохраненный файл, modified, исправлю это. Замечу, что при первом вводе команды git status, выводилось, что main.cpp - это новый файл, а теперь - модифицированный. Добавлю в индекс main.cpp тремя различными способами, закоммичу:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлено действие ввода двух чисел"
[main 6f2000c] code: добавлено действие ввода двух чисел
1 file changed, 4 insertions(+), 1 deletion(-)
--Пока тестирую разные команды, добавлю в main.cpp вывод суммы двух чисел:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "code: добавлено действие вывода суммы двух чисел"
[main 1cbb073] code: добавлено действие вывода суммы двух чисел
1 file changed, 2 insertions(+)
--А также добавлю вывод разности двух чисел:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m "code: добавлено действие вывода разности двух чисел"
[main 34797a6] code: добавлено действие вывода разности двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)
--Проверю еще раз, прошли ли изменения. Убедилась, что, да.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.depend
nothing added to commit but untracked files present (use "git add" to track)
--Вижу разные "лишние" файлы, которые можно скрыть. Для этого добавлю в проект project.cbp пустой файл .gitignore. Внесу в него наименование bin/:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
obj/
project.depend
nothing added to commit but untracked files present (use "git add" to track)
--Дополню файл .gitignore еще двумя наименованиями - obj/ и project.depend, а затем закоммичу файл .gitignore:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: добавлено игнорирование файлов'
[main 3ef2450] git: добавлено игнорирование файлов
1 file changed, 3 insertions(+)
create mode 100644 .gitignore
--Теперь просмотрю историю коммитов при помощи команды "log":
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log
commit 3ef2450bd8d509e3f608f1ed3fe5f6bc59e22a78 (HEAD -> main)
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:37:33 2025 +0300
git: добавлено игнорирование файлов
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
commit 1cbb0738cc1b5b29d1ce4dd908d6ff555ba2c49d
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:27:34 2025 +0300
code: добавлено действие вывода суммы двух чисел
commit 6f2000c931d6bc7fae6e21e8df257339774db74f
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:23:33 2025 +0300
code: добавлено действие ввода двух чисел
commit 79e3482c4ee642ac0d274784cca39275adbdc872
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:54 2025 +0300
build: добавлен файл проекта
commit 52f11a8875ba32099d7c99cefe2b416f2bbec971
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:04 2025 +0300
code: заготовка программы
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --stat
commit 3ef2450bd8d509e3f608f1ed3fe5f6bc59e22a78 (HEAD -> main)
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:37:33 2025 +0300
git: добавлено игнорирование файлов
.gitignore | 3 +++
1 file changed, 3 insertions(+)
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit 1cbb0738cc1b5b29d1ce4dd908d6ff555ba2c49d
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:27:34 2025 +0300
code: добавлено действие вывода суммы двух чисел
main.cpp | 2 ++
1 file changed, 2 insertions(+)
commit 6f2000c931d6bc7fae6e21e8df257339774db74f
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:23:33 2025 +0300
code: добавлено действие ввода двух чисел
main.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
commit 79e3482c4ee642ac0d274784cca39275adbdc872
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:54 2025 +0300
build: добавлен файл проекта
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
commit 52f11a8875ba32099d7c99cefe2b416f2bbec971
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:04 2025 +0300
code: заготовка программы
main.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
--Ввела команду git log --stat. Сначала выведется хэш последнего коммита, затем его автор - Alice, дата, наименование коммита и какие строки в каком файле были изменены/добавлены. Потом уточняется, сколько файлов было изменено и сколько в них изменений.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
3ef2450 (HEAD -> main) git: добавлено игнорирование файлов
34797a6 code: добавлено действие вывода разности двух чисел
1cbb073 code: добавлено действие вывода суммы двух чисел
6f2000c code: добавлено действие ввода двух чисел
79e3482 build: добавлен файл проекта
52f11a8 code: заготовка программы
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 3ef2450 (HEAD -> main) git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Использую команду git log -- main.cpp, которая показывает затрагивающие main.cpp:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- main.cpp
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
commit 1cbb0738cc1b5b29d1ce4dd908d6ff555ba2c49d
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:27:34 2025 +0300
code: добавлено действие вывода суммы двух чисел
commit 6f2000c931d6bc7fae6e21e8df257339774db74f
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:23:33 2025 +0300
code: добавлено действие ввода двух чисел
commit 52f11a8875ba32099d7c99cefe2b416f2bbec971
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:04 2025 +0300
code: заготовка программы
--Использую команду git log --grep "code:", которая показывает коммиты с code: в сообщении.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "code:"
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
commit 1cbb0738cc1b5b29d1ce4dd908d6ff555ba2c49d
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:27:34 2025 +0300
code: добавлено действие вывода суммы двух чисел
commit 6f2000c931d6bc7fae6e21e8df257339774db74f
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:23:33 2025 +0300
code: добавлено действие ввода двух чисел
commit 52f11a8875ba32099d7c99cefe2b416f2bbec971
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:04 2025 +0300
code: заготовка программы
--Найду сначала коммиты по теме build:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "build:"
commit 79e3482c4ee642ac0d274784cca39275adbdc872
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:54 2025 +0300
build: добавлен файл проекта
--Теперь просмотрю коммиты, затрагивающие project.cbp:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit 79e3482c4ee642ac0d274784cca39275adbdc872
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:20:54 2025 +0300
build: добавлен файл проекта
--Просмотрю содержимое отдельных коммитов разными командами. Сначала, сделаем это, указав версию. В нашем случае - актуальную - HEAD:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD
commit 3ef2450bd8d509e3f608f1ed3fe5f6bc59e22a78 (HEAD -> main)
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:37:33 2025 +0300
git: добавлено игнорирование файлов
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aecc882
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.depend
--Посмотрю последний коммит по имени ветви:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show main
commit 3ef2450bd8d509e3f608f1ed3fe5f6bc59e22a78 (HEAD -> main)
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:37:33 2025 +0300
git: добавлено игнорирование файлов
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aecc882
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.depend
--Посмотрю последний коммит по хэшу. Примечательно, что у хэша существует укороченная версия, и если ее ввести в Git Bash, то он поймет, к какой версии я пытаюсь получить log.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show 3ef2450
commit 3ef2450bd8d509e3f608f1ed3fe5f6bc59e22a78 (HEAD -> main)
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:37:33 2025 +0300
git: добавлено игнорирование файлов
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aecc882
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.depend
--Посмотрю теперь предпоследний коммит тремя разными способами. Сначала укажу HEAD~1:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD~1
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
diff --git a/main.cpp b/main.cpp
index e1391fe..0151b23 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +8,8 @@ int main()
int a, b;
cin >> a >> b;
- cout << "A + B = " << a + b << '\n';
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
return 0;
}
--Также есть альтернатива HEAD~1 - это main~1:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show main~1
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
diff --git a/main.cpp b/main.cpp
index e1391fe..0151b23 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +8,8 @@ int main()
int a, b;
cin >> a >> b;
- cout << "A + B = " << a + b << '\n';
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
return 0;
}
--Посмотрю предпоследний коммит по хэшу:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show 34797a6
commit 34797a6e5467781572e5b9e76c21f14a6b36713b
Author: Alice(EvdochenkoNV) <YevdochenkoNV>
Date: Sat Mar 29 17:29:56 2025 +0300
code: добавлено действие вывода разности двух чисел
diff --git a/main.cpp b/main.cpp
index e1391fe..0151b23 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +8,8 @@ int main()
int a, b;
cin >> a >> b;
- cout << "A + B = " << a + b << '\n';
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
return 0;
}
--Просмотрела предпоследний коммит. Теперь просмотрю изменения при помощи команды git diff:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index 0151b23..0b5571f 100644
--- a/main.cpp
+++ b/main.cpp
@@ -9,7 +9,8 @@ int main()
cin >> a >> b;
cout << "A + B = " << a + b << '\n'
- << "A - B = " << a - b << '\n';
+ << "A - B = " << a - b << '\n'
+ << "A * B = " << a * b << '\n';
return 0;
}
--Git Bash первой строкой показывает файл, который имел вид до ввода его в индекс, предыдущей актуальной копии, а затем показывает файл, который имеет теперь конечный вид после ввода в индекс, то есть, актуальной рабочей копии. Минусами "-" показано, какие компоненты были удалены из файла, а плюсами "+" - какие добавлены.
--Посмотрю изменения. Первый аргумент команды git diff включает показ изменений от указанного коммита до последнего, включая изменения в рабочей копии:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aecc882
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.depend
diff --git a/main.cpp b/main.cpp
index e1391fe..0b5571f 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +8,9 @@ int main()
int a, b;
cin >> a >> b;
- cout << "A + B = " << a + b << '\n';
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n'
+ << "A * B = " << a * b << '\n';
return 0;
}
--С двумя аргументами команда показывает разницу между указанными коммитами, например, так можно исключить изменения в рабочей копии из вывода предыдущей команды:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~2 HEAD
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aecc882
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.depend
diff --git a/main.cpp b/main.cpp
index e1391fe..0151b23 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,7 +8,8 @@ int main()
int a, b;
cin >> a >> b;
- cout << "A + B = " << a + b << '\n';
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
return 0;
}
--Проверила, как работает функция "diff". Теперь просмотрю изменения между самым первым коммитом и коммитом, добавляющим вывод разности:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff HEAD~5 HEAD~1
diff --git a/main.cpp b/main.cpp
index b4392ec..0151b23 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,12 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
+ cout << "Enter A and B: ";
+ int a, b;
+ cin >> a >> b;
+
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
+
return 0;
}
diff --git a/project.cbp b/project.cbp
new file mode 100644
index 0000000..99bb702
--- /dev/null
+++ b/project.cbp
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="project" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Build>
+ <Target title="Debug">
+ <Option output="bin/Debug/project" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Debug/" />
+ <Option type="1" />
+ <Option compiler="gcc" />
+ <Compiler>
+ <Add option="-g" />
+ </Compiler>
+ </Target>
+ <Target title="Release">
+ <Option output="bin/Release/project" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Release/" />
+ <Option type="1" />
+ <Option compiler="gcc" />
+ <Compiler>
+ <Add option="-O2" />
+ </Compiler>
+ <Linker>
+ <Add option="-s" />
+ </Linker>
+ </Target>
+ </Build>
+ <Compiler>
+ <Add option="-Wall" />
+ <Add option="-fexceptions" />
+ </Compiler>
+ <Unit filename="main.cpp" />
+ <Extensions>
+ <lib_finder disable_auto="1" />
+ </Extensions>
+ </Project>
+</CodeBlocks_project_file>
--Займусь проверкой отката изменений. Проверю работу команды "reset". Для этого добавлю изменения в main.cpp и закоммичу их:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлено действие вывода произведения двух чисел'
[main 460f3ce] code: добавлено действие вывода произведения двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)
--Теперь откачу изменения. Можно сделать двумя разными способами:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 3ef2450 git: добавлено игнорирование файлов
--Здесь HEAD~1 указывает на коммит, к которому нужно откатить состояние рабочей копии, а ключ --hard означает, что нужно привести рабочую копию точно к состоянию выбранного коммита.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp
--А в случае выше при помощи команды "checkout <argument>" можно переключиться на последнюю закоммиченную версию - HEAD и указать, для какого файла.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/Natasha/.ssh/id_ed25519):
/c/Users/Natasha/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase for "/c/Users/Natasha/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Natasha/.ssh/id_ed25519
Your public key has been saved in /c/Users/Natasha/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:u5/HXXcX5eCkIaQ8izabibBBbzsegq9FokpR0Ehd0kM Natasha@DESKTOP-VOTQ4U6
The key's randomart image is:
+--[ED25519 256]--+
|.o+.+E .. |
| ..o.o . .. . o .|
| .. . + . = o.|
| ... . o . ...|
|..+ o + S .|
|.+.= + = . =|
|o.+ = + . . . .+|
|oo o o . .o . |
|o.. . ..o. |
+----[SHA256]-----+
--Создала пару ключей: открытый, чтобы другие могли просматривать коммиты, и закрытый, чтобы был доступ к редактированию коммитов.
--Вводить пароль каждый раз, когда используется ключ, неудобно. Поэтому использую программу-агента, которая работает в фоне и предоставляет ключи GITу. Пароль требуется тогда вводить один раз - при загрузке ключа в агент. Запусчу агента:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 701
--Загружу для агента закрытый ключ:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ ssh-add
Enter passphrase for /c/Users/Natasha/.ssh/id_ed25519:
Identity added: /c/Users/Natasha/.ssh/id_ed25519 (Natasha@DESKTOP-VOTQ4U6)
--Отображу закрытый ключ:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIChF7spv5pQsI0YGbxWHtkSoKzeIlgUaPT2Lkv8TUj9m Natasha@DESKTOP-VOTQ4U6
--Выполню команды, необходимые для отправки проекта на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ touch README.md
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git init
Reinitialized existing Git repository in C:/Users/Natasha/Desktop/lab02/alice/project/.git/
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout -b main
fatal: a branch named 'main' already exists
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add README.md
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m "first commit"
On branch main
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git remote add origin git@uit.mpei.ru:EvdochenkoNV/cs-lab02.git
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push origin main
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 20 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (21/21), 2.63 KiB | 1.32 MiB/s, done.
Total 21 (delta 3), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
* [new branch] main -> main
______Машина Боба
--К разработке присоединился Боб, клонирую для него проект на его "машину":
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:EvdochenkoNV/cs-lab02.git project
Cloning into 'project'...
Enter passphrase for key '/c/Users/Natasha/.ssh/id_ed25519':
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 21 (delta 3), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (21/21), done.
Resolving deltas: 100% (3/3), done.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob
$ cd project
--Так же как и для Алисы настрою конфиг Боба:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git init
Reinitialized existing Git repository in C:/Users/Natasha/Desktop/lab02/bob/project/.git/
--Инициализировала.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.name 'Bob (EvdochenkoNV)'
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git config user.email 'YevdochenkoNV@mpei.ru'
--Добавила данные разработчика.
--Добавлю печать произведения чисел и сделаю коммит:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -a -m 'code: добавлено действие вывода произведения двух чисел'
[main a732f9b] code: добавлено действие вывода произведения двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)
--Теперь загружу проект на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/Natasha/.ssh/id_ed25519':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 394 bytes | 394.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
575ec3b..a732f9b main -> main
______Машина Алисы
--Получу данные на "машине" Алисы:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/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 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 374 bytes | 20.00 KiB/s, done.
From uit.mpei.ru:EvdochenkoNV/cs-lab02
575ec3b..a732f9b main -> origin/main
--Проверю вступили ли изменения в силу:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* a732f9b (origin/main, origin/HEAD) code: добавлено действие вывода произведения двух чисел
* 575ec3b (HEAD -> main) first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Как видно, ветка main отстает на один коммит от версии ветки main из удаленного репозитария под названием origin, то есть на сервере. По этой причине продвину ветку main к скачанной версии:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull origin main
From uit.mpei.ru:EvdochenkoNV/cs-lab02
* branch main -> FETCH_HEAD
Updating 575ec3b..a732f9b
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--Проверю, сработало ли "продвижение" ветки:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* a732f9b (HEAD -> main, origin/main, origin/HEAD) code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Добавлю в программу печать деления, сделаю коммит и отправлю его на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлено действие вывода деления двух чисел'
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
[main 03658ad] code: добавлено действие вывода деления двух чисел
2 files changed, 3 insertions(+), 1 deletion(-)
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push origin main
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 20 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 542 bytes | 542.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
a732f9b..03658ad main -> main
--Загрузила на сервер коммит.
______Машина Боба
--Получу изменения из сервера на "машину" Боба.
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git fetch
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 522 bytes | 29.00 KiB/s, done.
From uit.mpei.ru:EvdochenkoNV/cs-lab02
a732f9b..03658ad main -> origin/main
--Проверю вступили ли изменения в силу:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 03658ad (origin/main, origin/HEAD) code: добавлено действие вывода деления двух чисел
* a732f9b (HEAD -> main) code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Как видно, ветка main опять отстает на один коммит от версии ветки main из удаленного репозитария под названием origin, то есть на сервере. По этой причине продвину ветку main к скачанной версии:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull --ff-only
Updating a732f9b..03658ad
Fast-forward
main.cpp | 3 ++-
project.cbp | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
--Проверю, сработало ли "продвижение" ветки:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 03658ad (HEAD -> main, origin/main, origin/HEAD) code: добавлено действие вывода деления двух чисел
* a732f9b code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
______Машина Алисы
--Добавлю поиск максимума чисел и закоммичу:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: добавлено действие вывода максимума из двух чисел'
[main 0a35430] code: добавлено действие вывода максимума из двух чисел
1 file changed, 10 insertions(+), 2 deletions(-)
--Загружу данные на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 455 bytes | 455.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
03658ad..0a35430 main -> main
______Машина Боба
--Добавлю поиск минимума чисел и закоммичу:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git commit -a -m 'code: добавлено действие вывода минимума из двух чисел'
[main 516b168] code: добавлено действие вывода минимума из двух чисел
1 file changed, 10 insertions(+), 2 deletions(-)
-Загружу обновления на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push origin main
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'uit.mpei.ru:EvdochenkoNV/cs-lab02.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
--Однако, так как Боб не обновлял свой локальный репозитарий, то выдастся ошибка, что коммит Боба не последний. По этой причине загружу на локальный репозитарий нужные коммита с сервера:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git fetch
From uit.mpei.ru:EvdochenkoNV/cs-lab02
* [new branch] main -> origin/main
--Просмотрю теперь историю веток:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 516b168 (HEAD -> main) code: добавлено действие вывода минимума из двух чисел
| * 0a35430 (origin/main, origin/HEAD) code: добавлено действие вывода максимума из двух чисел
|/
* 03658ad code: добавлено действие вывода деления двух чисел
* a732f9b code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Как видно, произошло разветвление. Необходимо переместить коммит Боба поверх коммита Алисы с помощью команды "git rebase origin/main":
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git rebase origin/main
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 516b168... code: добавлено действие вывода минимума из двух чисел
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Could not apply 516b168... code: добавлено действие вывода минимума из двух чисел
--Ожидаемо, выдало ошибку из-за несоответствия версий. Исправим это и исправим код так, как нам надо.
--Теперь продолжим наше "перемещение" ветки:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git add main.cpp
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1)
$ git rebase --continue
Successfully rebased and updated refs/heads/main.
--Проверю состояние хранилища:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 0f4a19d (HEAD -> main) code: добавлено действие вывода минимума из двух чисел
* 0a35430 (origin/main, origin/HEAD) code: добавлено действие вывода максимума из двух чисел
* 03658ad code: добавлено действие вывода деления двух чисел
* a732f9b code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Все в порядке, можно отправить изменения на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git push origin main
Enter passphrase for key '/c/Users/Natasha/.ssh/id_ed25519':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 430 bytes | 430.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
0a35430..0f4a19d main -> main
--На всякий случай проверю соответствие версий:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 0f4a19d (HEAD -> main, origin/main, origin/HEAD) code: добавлено действие вывода минимума из двух чисел
* 0a35430 code: добавлено действие вывода максимума из двух чисел
* 03658ad code: добавлено действие вывода деления двух чисел
* a732f9b code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
______Машина Алисы
--Алиса находится пока не на последней версии, которую Боб "недавно отправил", она не в курсе. Решила поменять тип данных с int на double, осознавая, что это займет время. Для этого создам новую ветку, для ясности назову ее double:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git branch double
--Переключучь на ветку double:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'
--Меняю тип данных на double, затем коммичу изменения:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (double)
$ git commit -a -m 'code: изменен тип чисел с целых на действительные'
[double 975564b] code: изменен тип чисел с целых на действительные
1 file changed, 1 insertion(+), 1 deletion(-)
--Переключаюсь обратно на ветку main:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
--Синхронизирую ветку main Алисы с удаленным хранилищем:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/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 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 410 bytes | 10.00 KiB/s, done.
From uit.mpei.ru:EvdochenkoNV/cs-lab02
0a35430..0f4a19d main -> origin/main
--Просмотрю историю веток:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 975564b (double) code: изменен тип чисел с целых на действительные
| * 0f4a19d (origin/main, origin/HEAD) code: добавлено действие вывода минимума из двух чисел
|/
* 0a35430 (HEAD -> main) code: добавлено действие вывода максимума из двух чисел
* 03658ad code: добавлено действие вывода деления двух чисел
* a732f9b code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Видно, что пока ответвление никак не связано с основной версией. Это необходимо исправить, поэтому продвину состояние ветки "HEAD -> main" до актуальной для машины Алисы:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git pull origin main
From uit.mpei.ru:EvdochenkoNV/cs-lab02
* branch main -> FETCH_HEAD
Updating 0a35430..0f4a19d
Fast-forward
main.cpp | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
--Займусь сливанием веток, чтобы не было расхождений:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git merge double
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
Automatic merge failed; fix conflicts and then commit the result.
--После этой команды, содержание кода обновилось и все конфликты и ненужные блоки кода уберу.
--Теперь закоммичу новую ветку:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main|MERGING)
$ git commit -a -m 'git: ветка double слита в ветку main'
[main 7445691] git: ветка double слита в ветку main
--Актуализирую проект, отправив его на сервер:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push origin main
Enter passphrase for key '/c/Users/Natasha/.ssh/id_ed25519':
Enter passphrase for key '/c/Users/Natasha/.ssh/id_ed25519':
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 20 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 673 bytes | 673.00 KiB/s, done.
Total 6 (delta 4), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To uit.mpei.ru:EvdochenkoNV/cs-lab02.git
0f4a19d..7445691 main -> main
--Проверю, что теперь версия Алисы синхронизирована с сервером:
Natasha@DESKTOP-VOTQ4U6 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 7445691 (HEAD -> main, origin/main, origin/HEAD) git: ветка double слита в ветку main
|\
| * 975564b (double) code: изменен тип чисел с целых на действительные
* | 0f4a19d code: добавлено действие вывода минимума из двух чисел
|/
* 0a35430 code: добавлено действие вывода максимума из двух чисел
* 03658ad code: добавлено действие вывода деления двух чисел
* a732f9b code: добавлено действие вывода произведения двух чисел
* 575ec3b first commit
* 3ef2450 git: добавлено игнорирование файлов
* 34797a6 code: добавлено действие вывода разности двух чисел
* 1cbb073 code: добавлено действие вывода суммы двух чисел
* 6f2000c code: добавлено действие ввода двух чисел
* 79e3482 build: добавлен файл проекта
* 52f11a8 code: заготовка программы
--Готово!!!