Загрузил(а) файлы в ''

RoznatovskyTA 2 месяцев назад
Родитель c271e1fdb4
Сommit d27b73cea2

@ -0,0 +1,988 @@
Отчет по лабораторной работе № 2 "Система контроля версий Git"
Выполнил: Рознатовский Т.А
Группа: А-01-24
Проверил:
Примечание: работа выполнялась на Windows.
1. Вход в терминал и создание структуры каталогов.
Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение:
timda@RADAR MINGW64 /d/Прога/lab02
$
Просмотрел файлы в рабочем каталоге:
timda@RADAR MINGW64 /d/Прога/lab02
$ ls
Создал каталоги Алисы и Боба, изучил команду "cd", создал каталог project в каталоге Алисы:
timda@RADAR MINGW64 /d/Прога/lab02
$ mkdir alice
mkdir bob
timda@RADAR MINGW64 /d/Прога/lab02
$ cd bob
timda@RADAR MINGW64 /d/Прога/lab02/bob
$ cd ..
timda@RADAR MINGW64 /d/Прога/lab02
$ cd alice
timda@RADAR MINGW64 /d/Прога/lab02/alice
$ mkdir project
timda@RADAR MINGW64 /d/Прога/lab02/alice
$ cd project
2. Инициализация репозитария и настройка Git.
Инициализируем репозитарий в текущем каталоге (project):
timda@RADAR MINGW64 /d/Прога/lab02/alice/project
$ git init
Initialized empty Git repository in D:/Прога/lab02/alice/project/.git/
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (master)
Поменяем имя ветки на main:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (master)
$ git branch -m main
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$
Посмотрим данные папки, где сделано git init:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ ls -A
.git/
Настроим репозитарий Алисы, чтобы коммиты были от ее имени:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git config user.name 'Alice (RoznatovskyTA)'
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git config user.email 'qwertttt158@gmail.com'
3. Создание коммитов
Запустим CodeBlocks и создадим проект в репозитарии Алисы.
Имеем следующую структуру файлов и каталогов:
lab02
├── alice
│ └── project <--------- текущий рабочий каталог
│ ├── .git <--------- создан командой "git init"
│ ├── bin <--------- создан CodeBlocks при сборке
│ ├── obj <--------- (то же самое)
│ ├── main.cpp <-- код программы
│ └── project.cbp <-- файл проекта
└── bob
Вернемся в Git Bash, просмотрим состояние рабочей копии:
timda@RADAR MINGW64 /d/Прога/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)
Добавим файл main.cpp в индекс:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git add main.cpp
Посмотрим изменения:
timda@RADAR MINGW64 /d/Прога/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)
project.cbp
Выполним коммит с файлом main.cpp:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -m 'code: заготовка программы'
[main (root-commit) a061b1e] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
Добавим файл project.cbp в индекс и сделаем коммит с ним:
timda@RADAR MINGW64 /d/Прога/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
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -m 'build: добавлен файл проекта'
[main 9cd9d22] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
4. Создание коммитов с изменениями.
Заменим тело функции main() на ввод двух чисел.
timda@RADAR MINGW64 /d/Прога/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/
no changes added to commit (use "git add" and/or "git commit -a")
Cпособ 1. Сначала выбрем файлы, изменения которых должны войти в коммит, затем сделаем коммит:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git add main.cpp
git commit -m "code: вывод двух чисел"
[main dd5e6d8] code: вывод двух чисел
1 file changed, 4 insertions(+), 2 deletions(-)
Способ 2. Добавим в индекс все изменения, затем сделаем коммит.
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git add -u
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -m 'code: вывод суммы'
[main ad77a65] code: вывод суммы
1 file changed, 1 insertion(+), 1 deletion(-)
Добавим в программу вывод разности a и b.
Способ 3. Добавим все изменения в индекс и сделаем коммит в один шаг.
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -a -m 'code: вывод разности'
[main 59e3923] code: вывод разности
1 file changed, 2 insertions(+), 1 deletion(-)
5. Игнорирование файлов.
Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: /bin.
Выполнив git status, можно видеть, что каталог bin не отображается:
timda@RADAR MINGW64 /d/Прога/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)
Занесем в список игнорируемых каталоги bin и git и файлы *.layout:
timda@RADAR MINGW64 /d/Прога/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)
Создадим коммит с .gitignore:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git add .gitignore
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -a -m 'git: игнорирование'
[main 2d08ddf] git: игнорирование
1 file changed, 3 insertions(+)
create mode 100644 .gitignore
6. Просмотр истории.
Пробуем команду git log:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log
commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main)
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:36:49 2025 +0300
git: игнорирование
commit 59e392362b5185a4895176c4bbac7a9188e4eca7
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:24:25 2025 +0300
code: вывод разности
commit ad77a65533c16e41991988fe57e7a1a4d868a15a
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:22:23 2025 +0300
code: вывод суммы
commit dd5e6d881a0e1fff89084f8ffc0152accff272a0
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:20:10 2025 +0300
code: вывод двух чисел
commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:16:09 2025 +0300
build: добавлен файл проекта
commit a061b1ed4fdceb40ead434119f31cd59938f0acc
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:15:01 2025 +0300
code: заготовка программы
Пробуем команду git log --stat:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --stat
commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main)
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:36:49 2025 +0300
git: игнорирование
.gitignore | 3 +++
1 file changed, 3 insertions(+)
commit 59e392362b5185a4895176c4bbac7a9188e4eca7
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:24:25 2025 +0300
code: вывод разности
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit ad77a65533c16e41991988fe57e7a1a4d868a15a
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:22:23 2025 +0300
code: вывод суммы
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit dd5e6d881a0e1fff89084f8ffc0152accff272a0
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:20:10 2025 +0300
code: вывод двух чисел
main.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:16:09 2025 +0300
build: добавлен файл проекта
project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
commit a061b1ed4fdceb40ead434119f31cd59938f0acc
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:15:01 2025 +0300
code: заготовка программы
main.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
Пробуем команду git log --oneline --decorate:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --oneline --decorate
2d08ddf (HEAD -> main) git: игнорирование
59e3923 code: вывод разности
ad77a65 code: вывод суммы
dd5e6d8 code: вывод двух чисел
9cd9d22 build: добавлен файл проекта
a061b1e code: заготовка программы
Пробуем команду git log --oneline --decorate --all --graph:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 2d08ddf (HEAD -> main) git: игнорирование
* 59e3923 code: вывод разности
* ad77a65 code: вывод суммы
* dd5e6d8 code: вывод двух чисел
* 9cd9d22 build: добавлен файл проекта
* a061b1e code: заготовка программы
Коммиты по теме build:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --grep "build:"
commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:16:09 2025 +0300
build: добавлен файл проекта
Коммиты затрагивающие project.cbp:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log -- project.cbp
commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:16:09 2025 +0300
build: добавлен файл проекта
Посмотрим коммит тремя способами:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git show HEAD
commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main)
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:36:49 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
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git show main
commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef (HEAD -> main)
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:36:49 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
Посмотрим предпоследний коммит:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git show 59e3923
commit 59e392362b5185a4895176c4bbac7a9188e4eca7
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:24:25 2025 +0300
code: вывод разности
diff --git a/main.cpp b/main.cpp
index 800d68c..8611536 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,5 +7,6 @@ int main()
cout << "Enter A and B: ";
int a, b;
cin >> a >> b;
-cout << "A + B = " << a + b << '\n';
+cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
}
Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит.
Используем команду git diff:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git diff
diff --git a/main.cpp b/main.cpp
index 8611536..28ace4e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,5 +8,6 @@ int main()
int a, b;
cin >> a >> b;
cout << "A + B = " << a + b << '\n'
- << "A - B = " << a - b << '\n';
+ << "A - B = " << a - b << '\n'
+ << "A * B = " << a * b << '\n';<--- строки начинающиеся с - показывают удаленные строки, строки с + показывают добавленные
}
Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git diff HEAD~3 HEAD~1
diff --git a/main.cpp b/main.cpp
index 1d79c77..8611536 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,5 +7,6 @@ int main()
cout << "Enter A and B: ";
int a, b;
cin >> a >> b;
-
+cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
}
7. Откат изменений.
Выполним коммит произведения:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -a -m 'code: вывод произведения'
[main 6179755] code: вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
Выполним откат изменений:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git reset --hard HEAD~1
HEAD is now at 2d08ddf git: игнорирование
Добавим над функцией main() комментарий:
// you may type whatever you want
Откатим этот файл к состоянию в последнем коммите:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git checkout HEAD -- main.cpp
8. Обмен кодом через удаленное хранилище.
Зарегестрируемся на Git УИТ.
Создал пару ключей:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/timda/.ssh/id_ed25519): y
Enter passphrase for "y" (empty for no passphrase):
Enter same passphrase again:
Passphrases do not match. Try again.
Enter passphrase for "y" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in y
Your public key has been saved in y.pub
The key fingerprint is:
SHA256:mraxrJ9CwtYohMk18eH0+V6tYXYB3xt+F3gwa/Ae6xQ timda@RADAR
The key's randomart image is:
+--[ED25519 256]--+
| ..o o o |
| o+ o . = * |
|o.. .o o E = |
|oo . + B +|
|.. o S. = * oo|
|. = o o. + * o|
| o o = . . . |
| .o = |
| .+* |
+----[SHA256]-----+
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ eval $(ssh-agent -s)
Agent pid 266
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ ssh-add
Identity added: /c/Users/timda/.ssh/id_ed25519 (timda@RADAR)
Открытый ключ:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICseD55ZBOKkwn9wZ//2b14SfVbqNIoi3ZpzckSu1QUk timda@RADAR
Скопировал открытый ключ и добавил в список открытых ключей своей учетной записи.
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ touch README.md
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git init
Reinitialized existing Git repository in D:/Прога/lab02/alice/project/.git/
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git checkout -b main
fatal: a branch named 'main' already exists
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git add README.md
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -m "first commit"
[main 81f6372] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git remote add origin git@uit.mpei.ru:RoznatovskyTA/cs-lab02.git
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git push -u origin main
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 12 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (21/21), 2.57 KiB | 1.29 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:RoznatovskyTA/cs-lab02.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
8. Клонирование проекта сервера.
Клонируем проект:
timda@RADAR MINGW64 /d/Прога/lab02/bob
$ git clone git@uit.mpei.ru:RoznatovskyTA/cs-lab02.git project
Cloning into 'project'...
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.
"На машине Боба" настроим Git, как это делалось для Алисы:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git config user.name 'Bob (RoznatovskyTA)'
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git config user.email 'qwertttt158@gmail.com'
«На машине Боба» добавим в программу печать произведения чисел и сделаем коммит. Просмотрим последний коммит и убедимся, что он сделан от имени Боба.
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git commit -a -m 'code: печать произведения двух чисел'
[main fb57f72] code: печать произведения двух чисел
1 file changed, 3 insertions(+), 2 deletions(-)
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git log
commit fb57f725706450319ddeb7b836dd03381d680139 (HEAD -> main)
Author: Bob (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 22:48:58 2025 +0300
code: печать произведения двух чисел
commit 81f637256f66964cd2d014fed31c8f935bc4797b (origin/main, origin/HEAD)
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 22:13:42 2025 +0300
first commit
commit 2d08ddf43831e9f9a6f196d75a82c8760f1952ef
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:36:49 2025 +0300
git: игнорирование
commit 59e392362b5185a4895176c4bbac7a9188e4eca7
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:24:25 2025 +0300
code: вывод разности
commit ad77a65533c16e41991988fe57e7a1a4d868a15a
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:22:23 2025 +0300
code: вывод суммы
commit dd5e6d881a0e1fff89084f8ffc0152accff272a0
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:20:10 2025 +0300
code: вывод двух чисел
commit 9cd9d22abac8e9b5fb268343405f1ae0d198785e
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:16:09 2025 +0300
build: добавлен файл проекта
commit a061b1ed4fdceb40ead434119f31cd59938f0acc
Author: Alice (RoznatovskyTA) <qwertttt158@gmail.com>
Date: Sat Apr 5 21:15:01 2025 +0300
code: заготовка программы
Отправим коммит на сервер:
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 391 bytes | 391.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:RoznatovskyTA/cs-lab02.git
81f6372..fb57f72 main -> main
«На машине Алисы» выполним загрузку изменений:
timda@RADAR MINGW64 /d/Прога/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), 371 bytes | 123.00 KiB/s, done.
From uit.mpei.ru:RoznatovskyTA/cs-lab02
81f6372..fb57f72 main -> origin/main
Просмотрим историю всех веток:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* fb57f72 (origin/main, origin/HEAD) code: печать произведения двух чисел
* 81f6372 (HEAD -> main) first commit
* 2d08ddf git: игнорирование
* 59e3923 code: вывод разности
* ad77a65 code: вывод суммы
* dd5e6d8 code: вывод двух чисел
* 9cd9d22 build: добавлен файл проекта
* a061b1e code: заготовка программы
Продвинем ветку main к скачанной версии:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git pull --ff-only
Updating 81f6372..fb57f72
Fast-forward
main.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
«От имени Алисы» добавим в программу печать деления, сделаем коммит, отправим его на сервер и получим новую версию «на машине Боба»:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -a -m 'code: деление двух чисел'
[main 074cac8] code: деление двух чисел
1 file changed, 2 insertions(+), 1 deletion(-)
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 365 bytes | 365.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:RoznatovskyTA/cs-lab02.git
fb57f72..074cac8 main -> main
timda@RADAR MINGW64 /d/Прога/lab02/bob/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), 345 bytes | 69.00 KiB/s, done.
From uit.mpei.ru:RoznatovskyTA/cs-lab02
fb57f72..074cac8 main -> origin/main
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 074cac8 (origin/main, origin/HEAD) code: деление двух чисел
* fb57f72 (HEAD -> main) code: печать произведения двух чисел
* 81f6372 first commit
* 2d08ddf git: игнорирование
* 59e3923 code: вывод разности
* ad77a65 code: вывод суммы
* dd5e6d8 code: вывод двух чисел
* 9cd9d22 build: добавлен файл проекта
* a061b1e code: заготовка программы
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git pull --ff-only
Updating fb57f72..074cac8
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
9. Разрешение конфликтов правок при совместной работе.
«На машине Алисы» дополним программу печатью максимума, сделаем коммит и отправим его на сервер:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git commit -a -m 'code: печать максимума'
[main 2cf34b7] code: печать максимума
1 file changed, 1 insertion(+)
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 383 bytes | 383.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:RoznatovskyTA/cs-lab02.git
074cac8..2cf34b7 main -> main
«На машине Боба» дополним программу печатью минимума, сделаем коммит и попытаемся отправить его на сервер:
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git push
To uit.mpei.ru:RoznatovskyTA/cs-lab02.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'uit.mpei.ru:RoznatovskyTA/cs-lab02.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Как можно видеть, удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите.
«От лица Боба» загрузим коммиты из удаленного хранилища и отобразим историю всех веток:
timda@RADAR MINGW64 /d/Прога/lab02/bob/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), 363 bytes | 72.00 KiB/s, done.
From uit.mpei.ru:RoznatovskyTA/cs-lab02
074cac8..2cf34b7 main -> origin/main
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* d0cb43b (HEAD -> main) code: печать минимума
| * 2cf34b7 (origin/main, origin/HEAD) code: печать максимума
|/
* 074cac8 code: деление двух чисел
* fb57f72 code: печать произведения двух чисел
* 81f6372 first commit
* 2d08ddf git: игнорирование
* 59e3923 code: вывод разности
* ad77a65 code: вывод суммы
* dd5e6d8 code: вывод двух чисел
* 9cd9d22 build: добавлен файл проекта
* a061b1e code: заготовка программы
Нужно поместить коммит Боба, поверх коммита Алисы:
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git rebase origin/main
Auto-merging main.cpp
CONFLICT (content): Merge conflict in main.cpp
error: could not apply d0cb43b... 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 d0cb43b... code: печать минимума
Эта команда завершается с ошибкой, сообщающей о конфликте в main.cpp. Посмотрим состояние хранилища:
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main|REBASE 1/1)
$ git status
interactive rebase in progress; onto 2cf34b7
Last command done (1 command done):
pick d0cb43b code: печать минимума
No commands remaining.
You are currently editing a commit while rebasing branch 'main' on '2cf34b7'.
(use "git commit --amend" to amend the current commit)
(use "git rebase --continue" once you are satisfied with your changes)
Untracked files:
(use "git add <file>..." to include in what will be committed)
project.layout
nothing added to commit but untracked files present (use "git add" to track)
Git status говорит нам, что мы находимся в середине rebase, возник конфликт в main.cpp.
Удалим метки конфликта, отредактируем код(включает правки Алисы и Боба), программа компилируется и работает.
Добавил файл в индекс и продолжил прерванную операцию rebase:
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main|REBASE 1/1)
$ git add main.cpp
git rebase --continue
Successfully rebased and updated refs/heads/main.
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
Untracked files:
(use "git add <file>..." to include in what will be committed)
nothing added to commit but untracked files present (use "git add" to track)
timda@RADAR MINGW64 /d/Прога/lab02/bob/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 371 bytes | 371.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:RoznatovskyTA/cs-lab02.git
2cf34b7..c271e1f main -> main
10. Использование веток.
Создадим ветку double:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git branch double
Переключимя на нее:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git checkout double
Switched to branch 'double'
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (double)
$ git commit -a -m 'code: переменные типа double'
[double ad93547] code: переменные типа double
1 file changed, 1 insertion(+), 1 deletion(-)
Переключимся на ветку main:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (double)
$ git checkout main
Switched to branch 'main'
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Посмотрим историю всех веток:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --graph --decorate --oneline --all
* 3639c48 (double) code: переменные типа double
* c271e1f (HEAD -> main, origin/main, origin/HEAD) code: печать минимума
* 2cf34b7 code: печать максимума
* 074cac8 code: деление двух чисел
* fb57f72 code: печать произведения двух чисел
* 81f6372 first commit
* 2d08ddf git: игнорирование
* 59e3923 code: вывод разности
* ad77a65 code: вывод суммы
* dd5e6d8 code: вывод двух чисел
* 9cd9d22 build: добавлен файл проекта
* a061b1e code: заготовка программы
Сольем ветку double в main:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git merge double
Updating c271e1f..3639c48
Fast-forward
main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
История всех веток:
timda@RADAR MINGW64 /d/Прога/lab02/alice/project (main)
$ git log --graph --decorate --oneline --all
* 3639c48 (HEAD -> main, double) code: переменные типа double
* c271e1f (origin/main, origin/HEAD) code: печать минимума
* 2cf34b7 code: печать максимума
* 074cac8 code: деление двух чисел
* fb57f72 code: печать произведения двух чисел
* 81f6372 first commit
* 2d08ddf git: игнорирование
* 59e3923 code: вывод разности
* ad77a65 code: вывод суммы
* dd5e6d8 code: вывод двух чисел
* 9cd9d22 build: добавлен файл проекта
* a061b1e code: заготовка программы
Загрузка…
Отмена
Сохранить