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

765 строки
29 KiB
Plaintext

Отчет по лабораторной работе № 2 "Система контроля версий Git"
Выполнил: Троянов Д.С.
Группа: А-01-22
Проверил:
Примечание: работа выполнялась на Windows.
1) Создал на рабочем столе каталог lab02.02 и запустил в нем Git Bash, приглашение:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02
$
2) Просмотрел файлы в рабочем каталоге можно командой "ls" - пусто:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02
$ ls
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02
$
3) Создал каталоги Алисы и Боба, создал каталог "project",
изучил команду "cd" в процессе:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02
$ mkdir alice
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02
$ mkdir bob
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02
$ cd alice
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice
$ mkdir project
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice
$ cd project
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project
$ cd ..
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice
$ cd project
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project
$
4) Инициализировал репозитарий, изменил имя ветки и через команду ls -A увидел его наличие:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Даниил/Desktop/lab02.02/alice/project/
.git/
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (master)
$ ls -A
.git/
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (master)
$ git branch -m master main
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$
5) Настроил репозитарий, чтобы коммиты были от моего имени:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git config user.name 'Alice (TroyanovDS)'
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git config user.email 'TroyanovDS@mpei.ru'
6) Запустил CodeBlocks и создал проект в репозитарии Алисы:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git status
On branch main
No commits yet (нет файлов для коммита)
Untracked files: (В рабочей копии замечен файл, но Git его не отслеживает.)
(use "git add <file>..." to include in what will be committed)
main.cpp
main.exe
main.o
project.cbp
project.layout
nothing added to commit but untracked files present (use "git add" to track)
7) Заношу файл main.cpp под Git
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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 (Git начал отслеживать файл)
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.exe
main.o
project.cbp
project.layout //Неотслеживаемые файлы
8) Закомитил файл main.cpp и короткое сообщение (в одинарных или двойных ковычках):
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[main (root-commit) 36b4362 //хэш коммита] code: заготовка программы
1 file changed, 17 insertions(+) //Сводная статистика изменений
create mode 100644 main.cpp
9) Добавил файл project.cbp в индекс, закомител его с комментарием: (Замечание: Во время выполнения задания первая моя попытка привела к вылету репозитария и все полетело, поэтому я начал заново все делать и забыл закоммитить файл project.cbp. В отчете я предоставил коммит этого файла при первой попытке выполнения задания. Прошу прощения за предоставленные неудобства)
Даниил@DESKTOP-FBA8R1R 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 n
ext time Git touches it
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main 216d951] build: добавлен файл проекта
1 file changed, 31 insertions(+)
create mode 100644 project.cbp
10) Использование команды $ git status после изменения файла main.cpp:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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/
main.exe
main.o
obj/
project.layout //Неотслеживаемые файлы
no changes added to commit (use "git add" and/or "git commit -a")
При сравнении случаев, когда добавлялся новый файл, и когда изменился существующий, можно заметить, что
в случае, когда файл был изменен после добавления в индекс, изменения необходимо закомитить отдельно.
11) 1 способ закомитить изменения:
Выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -m "code: code: Ввод переменных"
[main 50bff83] code: code: Ввод переменных
1 file changed, 1 insertion(+), 1 deletion(-)
12) 2 способ закомитить изменения:
Добавить в индекс все изменения, затем сделать коммит:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git add -u
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -m "code: Вывод суммы"
[main 974994b] code: Вывод суммы
1 file changed, 1 insertion(+), 1 deletion(-)
13) 3 способ закомитить изенения:
Добавить все изменения в индекс и сделать коммит в один шаг:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -a -m "code: Вывод разницы и суммы"
[main 7835a20] code: Вывод разницы и суммы
1 file changed, 2 insertions(+), 1 deletion(-)
Удобен когда коммит меняет уже существующий файл.
14) Игнорирование файлов:
Создаем файл в codeblocks с подпись /bin, /obj и /project.layout в разных строках
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: project.cbp
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
main.o
no changes added to commit (use "git add" and/or "git commit -a")
Как можно заметить, бинарный файлы bin, obj и project.layout пропали.
Закомитим файл игнорирования:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git add .gitignore
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -m "git: "файл игнорирования"
[main 8f9bb60] git: файл игнорирования
Date: Mon Mar 13 10:57:03 2023 +0300
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
15) Просмотрел коммиты репозитария:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --stat
commit 8f9bb60ac01d4739d072e22a8e6870aa6302d714 (HEAD -> main)
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sun Mar 19 16:46:41 2023 +0300
git: Файл игнорирования
.gitignore | 3 +++
1 file changed, 3 insertions(+)
commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sun Mar 19 16:37:15 2023 +0300
code: Вывод разницы и суммы
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 974994b8ee2887372bb22923deff0bf490304589 (хеш коммита)
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> (автор создания)
Date: Sun Mar 19 16:35:58 2023 +0300 (дата создания)
code: Вывод суммы
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --oneline --decorate
8f9bb60(HEAD -> main) git: файл игнорирования
7835a20 code: Вывод разницы и суммы
974994b code: Вывод суммы
50bff83 code: Ввод переменных
36b4362 code: заготовка программы
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 8f9bb60 (HEAD -> main) git: Файл игнорирования
* 7835a20 code: Вывод разницы и суммы
* 974994b code: Вывод суммы
* 50bff83 code: Ввод переменных
* 36b4362 code: заготовка программы
Поиск коммита, затрагивающий project.cbp:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log -- project.cbp
commit 216d951de10e0fe0f8ceb783c979a3ff5cf5b889
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sat Mar 11 21:39:43 2023 +0300
build: добавлен файл проекта
Поиск коммита, название которого имеет тему "build:" :
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --grep "build: "
commit 216d951de10e0fe0f8ceb783c979a3ff5cf5b889
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sat Mar 11 21:39:43 2023 +0300
build: добавлен файл проекта
16) Просмотр журнала:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git show HEAD
commit 8f9bb60ac01d4739d072e22a8e6870aa6302d714
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sun Mar 19 16:46:41 2023 +0300
git: Файл игнорирования
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bdcd1e7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.layout
\ No newline at end of file
17) Просмотр коммитов (предпоследнего коммита):
1. Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git show HEAD~1
commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sun Mar 19 16:37:15 2023 +0300
code: Вывод разницы и суммы
diff --git a/main.cpp b/main.cpp
index 690f74f..0007b54 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,5 @@ 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';
}
2. Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git show main~1
commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sun Mar 19 16:37:15 2023 +0300
code: Вывод разницы и суммы
diff --git a/main.cpp b/main.cpp
index 690f74f..0007b54 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,5 @@ 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';
}
3. Просмотр предпоследнего коммита через указание его хэша
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git show 7835a20
commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b
Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru>
Date: Sun Mar 19 16:37:15 2023 +0300
code: Вывод разницы и суммы
diff --git a/main.cpp b/main.cpp
index 690f74f..0007b54 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,5 @@ 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';
}
18) Просмотр изменений:
Просмотрим изменения рабочей копии:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index bdcd1e7..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin (отсутствие строчки)
-/obj (отсутствие строчки)
-/project.layout (отсутствие строчки)
\ No newline at end of file
diff --git a/main.cpp b/main.cpp
index 0afddc3..0007b54 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,5 @@ int main()
int a, b;
cin >> a >> b;
- cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A*B (отсутствие строчки)
= " << a*b << '\n';
+ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; (добавление строчки)
}
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git diff HEAD~2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bdcd1e7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/obj
+/project.layout
\ No newline at end of file
diff --git a/main.cpp b/main.cpp
index 690f74f..0007b54 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,5 @@ 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';
}
Просмотр разницы изменений двух комитов
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git diff 36b4362 7835a20
diff --git a/main.cpp b/main.cpp
index b4392ec..0007b54 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,9 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
- return 0;
+ cout << "Enter A and B: ";
+ int a, b;
+ cin >> a >> b;
+
+ cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n';
}
19) Откат изменений
Во-первых, закомитил изменения рабочей копии (вывод произведения)
Далее делаем откат изменений к предыдущей версии
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git reset --hard HEAD~1 (HEAD~1 - коммит к которому откатывают изменения)
HEAD is now at 8f9bb60 git: файл игнорирования
или добавим комментарий над main() и откатим этот файл к состоянию в последнем коммите
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp
20) Создание пары ключей для доступа к серверу
ssh-keygen
Запустим агент, который работает в фоне и предоставляет ключи другим программам, в том числе git:
eval $(ssh-agent -s)
Далее скопировать открытый ключ при помощи команды cat ~/.ssh/id_rsa.pub и добавить в список открытых ключей своей учетной записи.
21)Создаем репозитарий под названием cs-lab02.
Далее клонируем проект в каталог Bob:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob
$ git clone git@uit.mpei.ru:TroyanovDS/cs-lab02.git project
Далее переходим в каталог проекта (project):
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob
$ cd project
После настраиваем git конфиг как с Alice:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git config user.name 'Bob (TroyanovDS)'
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git config user.email 'TroyanovDS@mpei.ru'
22)Совместная работа над проектом без конфликтов правок:
«На машине Боба» добавляем в программу печать произведения чисел и делаем коммит:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git commit -m "code: Вывод произведения"
[main 45cd4c1] code: Вывод произведения
1 file changed, 1 insertion(+), 1 deletion(-)
Отправляем коммит на сервер:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git push
«На машине Алисы» выполнить загрузку изменений:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git fetch
Просмотрим историю всех веток:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 45cd4c1 (origin/main) code: Вывод произведения
* 8f9bb60 (HEAD -> main) git: Файл игнорирования
* 7835a20 code: Вывод разницы и суммы
* 974994b code: Вывод суммы
* 50bff83 code: Ввод переменных
* 36b4362 code: заготовка программы
Как можно видеть, ветка main отстает на один коммит от ветки origin/main. Продвинем ветку main к скачанной версии:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git pull --ff-only
Updating 8f9bb60..45cd4c1
Fast-forward
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
23)Разрешение конфликтов при совместной работе
Дополним у Alice вывод максимума, у Bob - вывод минимума, попробуем сделать коммит и отправить его на сервер:
Для Alice:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git commit -m "code: Вывод максимума"
[main 4384564] code: Вывод максимума
1 file changed, 9 insertions(+)
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 398 bytes | 398.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 uit.mpei.ru:TroyanovDS/cs-lab02.git
a41a855..4384564 main -> main
Для Bob:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git commit -m "code: Вывод минимума"
[main 112ed02] code: Вывод минимума
1 file changed, 9 insertions(+)
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git push
Enter passphrase for key '/c/Users/Даниил/.ssh/id_rsa':
To uit.mpei.ru:TroyanovDS/cs-lab02.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'uit.mpei.ru:TroyanovDS/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.
Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.
Загрузим коммит из удаленного хранилища и после отобразим историю всех веток:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git pull --ff-only
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 112ed02 (HEAD -> main) code: Вывод минимума
| * 4384564 (origin/main, origin/HEAD) code: Вывод максимума
|/
* a41a855 code: Вывод деления
* 45cd4c1 code: Вывод произведения
* 8f9bb60 git: Файл игнорирования
* 7835a20 code: Вывод разницы и суммы
* 974994b code: Вывод суммы
* 50bff83 code: Ввод переменных
* 36b4362 code: заготовка программы
Можно видеть, что ветка main локального репозитария разошлась с веткой origin/main, то есть с веткой main на сервере.
Переместим коммит Bobа поверх коммита Алисы, то есть поверх origin/main:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git rebase origin/main
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply 112ed02... 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 112ed02... code: Вывод минимума
Команда завершается с ошибкой, сообщающей о конфликте в main.cpp.
Проверим статус репозитария:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit. //Ваша ветвь опережает 'origin/main' на 1 коммит.
(use "git push" to publish your local commits)
Untracked files: //Неотслеживаемые файлы
(use "git add <file>..." to include in what will be committed)
main.exe
main.o
nothing added to commit but untracked files present (use "git add" to track)
Теперь разрешим конфликт в CodeBlocks и последобавляем файл в индекс, продолжаем прерванную операцию rebase:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git rebase --continue
Проверяем, чтобы история хранилища была в надлежащем виде:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main)
$ git log --oneline --decorate --all --graph
* ef95f84 (HEAD -> main, origin/main, origin/HEAD) code: Вывод минимума
* 4384564 code: Вывод максимума
* a41a855 code: Вывод деления
* 45cd4c1 code: Вывод произведения
* 8f9bb60 git: Файл игнорирования
* 7835a20 code: Вывод разницы и суммы
* 974994b code: Вывод суммы
* 50bff83 code: Ввод переменных
* 36b4362 code: заготовка программы
24) Использование веток
Создадим ветку double:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git branch double
Переключимся на нее:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git checkout double
Switched to branch 'double'
Заменим тип переменных а и b на double и сделаем коммит:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double)
$ git add main.cpp
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double)
$ git commit -m "code: Изменение типа на double"
[double b279aed] code: Изменение типа на double
1 file changed, 1 insertion(+), 1 deletion(-)
Переключимся на ветку main:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
Синхронизируем ветку main «на машине Алисы» с сервером.
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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), 347 bytes | 11.00 KiB/s, done.
From uit.mpei.ru:TroyanovDS/cs-lab02
4384564..ef95f84 main -> origin/main
Продвинем ветку main к скачанной версии:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git pull --ff-only
Updating 4384564..ef95f84
Fast-forward
main.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
Просмотрим историю всех веток.
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --oneline --decorate --all --graph
* b279aed (double) code: Изменение типа на double
| * ef95f84 (HEAD -> main, origin/main) code: Вывод минимума
|/
* 4384564 code: Вывод максимума
* a41a855 code: Вывод деления
* 45cd4c1 code: Вывод произведения
* 8f9bb60 git: Файл игнорирования
* 7835a20 code: Вывод разницы и суммы
* 974994b code: Вывод суммы
* 50bff83 code: Ввод переменных
* 36b4362 code: заготовка программы
Сольем ветки double и main:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git merge double
Auto-merging main.cpp
Merge made by the 'ort' strategy.
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Просмотрим историю всех веток репозитария:
Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 91e8d65 (HEAD -> main) Merge branch 'double'
|\
| * b279aed (double) code: Изменение типа на double
* | ef95f84 (origin/main) code: Вывод минимума
|/
* 4384564 code: Вывод максимума
* a41a855 code: Вывод деления
* 45cd4c1 code: Вывод произведения
* 8f9bb60 git: Файл игнорирования
* 7835a20 code: Вывод разницы и суммы
* 974994b code: Вывод суммы
* 50bff83 code: Ввод переменных
* 36b4362 code: заготовка программы
В результате слияния образуется специальный новый коммит (merge commit).