Dimastiy 2 лет назад
Родитель 0e44cfd161
Сommit 883e6b8b0c

@ -0,0 +1,540 @@
Создаем папку alice:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02
$ mkdir alice
Создаем папку bob:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02
$ mkdir bob
заходим в папку alice:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02
$ cd alice
Создаем папку project:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice
$ mkdir project
заходим в папку project:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice
$ cd project
выходим из данной папки:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project
$ cd ..
заходим в папку project:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice
$ cd project
Инициализируем репозитарий в текущем каталоге (project):
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project
$ git init
Initialized empty Git repository in C:/Users/Texas/Desktop/lab02/alice/project/.git/
Настроим репозитарий Алисы, чтобы коммиты были от ее имени:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.name 'Alice (LevshenkoDI)'
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git config user.email 'aglowtexas38@gmail.com'
Запустим CodeBlocks и создадим проект в репозитарии Алисы
Вернувшись в Git Bash, просмотрим состояние рабочей копии:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/ создан codeblocks при сборке
main.cpp код программы
obj/ создан codeblocks при сборке
project.cbp файл проекта
nothing added to commit but untracked files present (use "git add" to track)
Добавим файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит. Так как этот файл ранее не отслеживался Git, то говорят, что файл «заносят под Git» или «начинают отслеживать»
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add main.cpp
Проверим теперь состояние рабочей копии:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
project.cbp
project.layout
Файл main.cpp теперь отслеживается гитом
Выполним коммит с файлом main.cpp и коротким сообщением:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'code: заготовка программы'
[master (root-commit) 7ef0d03] code: заготовка программы
1 file changed, 9 insertions(+)
create mode 100644 main.cpp
Добавим файл project.cbp в индекс и сделаем коммит с ним, тема — build
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git add project.cbp
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git commit -m 'build: добавлен файл проекта'
[master 0b1b029] build: добавлен файл проекта
1 file changed, 40 insertions(+)
create mode 100644 project.cbp
Поменяем имя ветки на main командой:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master)
$ git branch -m main
Заменим тело функции main() на ввод двух чисел
Просмотрим состояние репозитария:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: main.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
bin/
obj/
no changes added to commit (use "git add" and/or "git commit -a")
Файл main.cpp теперь не новый, а измененный
3 способа создания коммита:
Способ 1. Сначала выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: ввод двух чисел'
[main 5bf9edf] code: ввод двух чисел
1 file changed, 3 insertions(+), 1 deletion(-)
Добавим в программу вывод суммы a и b
Способ 2. Добавить в индекс все изменения, затем сделать коммит:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add -u
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: вывод суммы'
[main edb0229] code: вывод суммы
1 file changed, 1 insertion(+)
Добавим в программу вывод разности a и b
Способ 3. Добавить все изменения в индекс и сделать коммит в один шаг:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -a -m 'code: Вывод разности'
[main 65528f7] code: Вывод разности
1 file changed, 2 insertions(+), 1 deletion(-)
Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку:
/bin
/obj
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: project.cbp
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
project.depend
no changes added to commit (use "git add" and/or "git commit -a")
Выполнив git status, можно видеть, что каталог bin и obj не отображаются.
Создадим коммит с .gitignore, тема — git:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add .gitignore
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'git: Игнорирование файлов'
[main 7e60d56] git: Игнорирование файлов
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
Журнал репозитория:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --stat
commit 7e60d5629fa4b2e1d1711de402485c6f8fc65f0e (HEAD -> main)
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 11:11:05 2023 +0300
git: Игнорирование файлов
.gitignore | 2 ++
1 file changed, 2 insertions(+)
commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:59:31 2023 +0300
code: Вывод разности
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit edb022963a6ee245da95872e42c47d7afa73e682
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:56:17 2023 +0300
code: вывод суммы
У последнего коммита 1 файл был изменен и 2 файла было вставленно
Другие способы просмотра журнала:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate
7e60d56 (HEAD -> main) git: Игнорирование файлов
65528f7 code: Вывод разности
edb0229 code: вывод суммы
5bf9edf code: ввод двух чисел
0b1b029 build: добавлен файл проекта
7ef0d03 code: заготовка программы
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --oneline --decorate --all --graph
* 7e60d56 (HEAD -> main) git: Игнорирование файлов
* 65528f7 code: Вывод разности
* edb0229 code: вывод суммы
* 5bf9edf code: ввод двух чисел
* 0b1b029 build: добавлен файл проекта
* 7ef0d03 code: заготовка программы
Найдем коммиты по теме build, затем коммиты, затрагивающие project.cbp:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log --grep "build:"
commit 0b1b029d257541c706ab0b077511b2e52e4e9bf7
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:41:22 2023 +0300
build: добавлен файл проекта
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git log -- project.cbp
commit 0b1b029d257541c706ab0b077511b2e52e4e9bf7
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:41:22 2023 +0300
build: добавлен файл проекта
Просмотрим последний коммит тремя эквивалентными способами
1 способ:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show HEAD~1
commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:59:31 2023 +0300
code: Вывод разности
diff --git a/main.cpp b/main.cpp
index 6de6dd2..c4f6adb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,6 +7,7 @@ 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';
return 0;
}
2 способ:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show main HEAD~1
commit 7e60d5629fa4b2e1d1711de402485c6f8fc65f0e (HEAD -> main)
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 11:11:05 2023 +0300
git: Игнорирование файлов
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4c7473d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/obj
commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:59:31 2023 +0300
code: Вывод разности
diff --git a/main.cpp b/main.cpp
index 6de6dd2..c4f6adb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,6 +7,7 @@ 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';
return 0;
}
3 способ:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git show 65528f7f42db18fda52af5f597e56f5d1d8fa08a
commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a
Author: Alice (LevshenkoDI) <aglowtexas38@gmail.com>
Date: Sun Jun 4 10:59:31 2023 +0300
code: Вывод разности
diff --git a/main.cpp b/main.cpp
index 6de6dd2..c4f6adb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,6 +7,7 @@ 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';
return 0;
}
Добавим печать произведения чисел, но не станем пока делать коммит
Просмотрим изменения в рабочей копии:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff
warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it
diff --git a/main.cpp b/main.cpp
index c4f6adb..7a59eaf 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,6 +8,7 @@ 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';
return 0;
}
diff --git a/project.cbp b/project.cbp
index 99bb702..34f06bc 100644
--- a/project.cbp
+++ b/project.cbp
@@ -32,6 +32,7 @@
<Add option="-Wall" />
<Add option="-fexceptions" />
</Compiler>
+ <Unit filename=".gitignore" />
<Unit filename="main.cpp" />
<Extensions>
<lib_finder disable_auto="1" />
Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git diff 7ef0d03 65528f7
diff --git a/main.cpp b/main.cpp
index b4392ec..c4f6adb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,10 @@ using namespace std;
int main()
{
- cout << "Hello world!" << endl;
+ cout << "Enter A and B: ";
+ int a, b;
+ cin >> a >> b;
+ cout << "A + B = " << a + b << '\n'
+ << "A - B = " << a - b << '\n';
return 0;
}
diff --git a/project.cbp b/project.cbp
new file mode 100644
index 0000000..99bb702
--- /dev/null
+++ b/project.cbp
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="project" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Build>
+ <Target title="Debug">
+ <Option output="bin/Debug/project" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Debug/" />
+ <Option type="1" />
+ <Option compiler="gcc" />
+ <Compiler>
+ <Add option="-g" />
+ </Compiler>
+ </Target>
+ <Target title="Release">
+ <Option output="bin/Release/project" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Release/" />
+ <Option type="1" />
Закоммитим изменения в рабочей копии (вывод произведения):
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: Вывод произведения'
[main 343d61b] code: Вывод произведения
1 file changed, 2 insertions(+), 1 deletion(-)
Отправляем проект на сервер
Предположим, к разработке проекта присоединяется Боб
Открываем гит баш в каталоге bob и клонируем проект:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/bob
$ git clone git@uit.mpei.ru:Dmitriy_Levshenko/cs-lab02.git project
Cloning into 'project'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (18/18), 2.37 KiB | 2.37 MiB/s, done.
Resolving deltas: 100% (2/2), done.
Переходим в каталог проекта у Боба:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/bob
$ cd project
У Алисы добавляем в программу печать деления
Делаем коммит:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git add main.cpp
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git commit -m 'code: Вывод деления'
[main 85264de] code: Вывод деления
1 file changed, 2 insertions(+), 1 deletion(-)
Отправляем коммит на сервер:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 411 bytes | 411.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:Dmitriy_Levshenko/cs-lab02.git
343d61b..85264de main -> main
У Боба принимаем коммит:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/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 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 391 bytes | 35.00 KiB/s, done.
From uit.mpei.ru:Dmitriy_Levshenko/cs-lab02
343d61b..85264de main -> origin/main
Убеждаемся, что в рабочей копии ветка main отстает от ветки origin/main на один коммит:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git log --oneline --decorate --all --graph
* 85264de (origin/main, origin/HEAD) code: Вывод деления
* 343d61b (HEAD -> main) code: Вывод произведения
* 7e60d56 git: Игнорирование файлов
* 65528f7 code: Вывод разности
* edb0229 code: вывод суммы
* 5bf9edf code: ввод двух чисел
* 0b1b029 build: добавлен файл проекта
* 7ef0d03 code: заготовка программы
Продвигаем ветку main к скачанной версии:
Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/bob/project (main)
$ git pull --ff-only
Updating 343d61b..85264de
Fast-forward
main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Загрузка…
Отмена
Сохранить