Родитель
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: заготовка программы
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Загрузка…
Ссылка в новой задаче