Родитель
91e8d65e23
Сommit
0e9de90277
@ -0,0 +1,765 @@
|
||||
Отчет по лабораторной работе № 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).
|
@ -0,0 +1,34 @@
|
||||
<?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="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="Untitled1.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="main.cpp" />
|
||||
<Extensions>
|
||||
<lib_finder disable_auto="1" />
|
||||
</Extensions>
|
||||
</Project>
|
||||
</CodeBlocks_project_file>
|
Загрузка…
Ссылка в новой задаче