diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..b06f1dd --- /dev/null +++ b/README.txt @@ -0,0 +1,1136 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + + + +Выполнил: Подольский Н.К. +Группа: А-01-23 + +Проверил: Козлюк Д. А. + + + +Примечание: работа выполнялась на Windows. + + + +1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02 +$ + + + + +2. Смотрю файлы в рабочем каталоге с помощью команды "ls": + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02 +$ ls + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02 +$ + + + + +3. Создаю каталоги Боба и Алисы, так же создаю каталог project, понимаем значение команды cd: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02 +$ mkdir alice + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02 +$ mkdir bob + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02 +$ cd alice + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice +$ mkdir project + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice +$ cd project + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project +$ cd .. + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice +$ cd project + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project +$ + + + + +4. Инициализация репозитария: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/nikit/OneDrive/Рабочий стол/lab02/alice/project/.git/ + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) +$ + + + + +5. Меняем имя ветки на main: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (master) +$ git branch -m main + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ + + + + +6. Настраиваем репозитарий Алисы: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git config user.name 'Alice (PodolskyNK)' + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git config user.email 'PodolskyNK@mpei.ru' + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ + + + + +7. Создаем проект в репозитарии Алисы и затем собираем его. + + + + +8. Просмотрели состояние рабочей копии: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main // Просматриваем ветку main + +No commits yet // Коммитов еще нет + +Untracked files: // Неотслеживаемые файлы + (use "git add ..." to include in what will be committed) + bin/ + main.cpp + obj/ + project.cbp // Файлы, находящиеся в папке "Alice" + +nothing added to commit but untracked files present (use "git add" to track) // Еще ничего не закомиченно и неотслеживаемые файлы показаны(подсказка для добавления файлов коммита) + + + +9. Добавляем файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main + +No commits yet + +Changes to be committed: + (use "git rm --cached ..." to unstage) + new file: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.cbp + + +В состоянии рабочей копии изменились неотслеживаемые файлы, так как main.cpp начал отслеживаться и будет закоммичен в следующей строке: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "code: заготовка программы" +[main (root-commit) 2e4f819] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + + + +10. Добавляю файл проекта project.cbp в индекс и делаю с ним коммит: + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/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 + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "build: добавлен файл проекта" +[main e4848a1] build: добавлен файл проекта + 1 file changed, 38 insertions(+) + create mode 100644 project.cbp + + + +11. Заменим тело функции main() на ввод двух чисел, просмотрел состояние репозитория и закоммитил изменения: + +cout << "Enter A and B: "; + +int a, b; + +cin >> a >> b; + + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: main.cpp + +Untracked files: + (use "git add ..." to include in what will be committed) + bin/ + obj/ + +no changes added to commit (use "git add" and/or "git commit -a") + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add main.cpp + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "code: ввод чисел a и b" +[main fbcfd71] code: ввод чисел a и b + 1 file changed, 7 insertions(+), 1 deletion(-) + + +12. Добавил в программу вывод суммы a и b, а затем закоммитил: + + + +int main() + +{ + + ... + + cout << "A + B = " << a + b; + +} + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add -u + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "code: вывод суммы a и b" +[main b6bd6a5] code: вывод суммы a и b + 1 file changed, 2 insertions(+) + + +13. Добавил в программу вывод суммы a и b и закоммитил: + + +int main() + +{ + + ... + + cout << "A + B = " << a + b << '\n' + + << "A - B = " << a - b << '\n'; + +} + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -a -m "code: вывод разности a и b" +[main 4bf3d06] code: вывод разности a и b + 1 file changed, 3 insertions(+), 1 deletion(-) + + + +14. Cоздал в CodeBlocks новый файл (.gitignore) и записал в него строки /bin /obj и /project.layout, проверил его на работоспособность и закоммитил: + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git status +On branch main +Untracked files: + (use "git add ..." to include in what will be committed) + .gitignore + +nothing added to commit but untracked files present (use "git add" to track) + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git add .gitignore + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git commit -m "build: git" +[main cfd047d] build: git + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + + + +15. Попробовал команду git log и ее опции: + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log +commit cfd047dbeb0ecd2c00c2944e1ab9aa5e1e569eed (HEAD -> main) +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:55:04 2024 +0300 + + build: git + +commit 4bf3d0635291d25f776c8afcc1a08eff2f739661 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:47:01 2024 +0300 + + code: вывод разности a и b + +commit b6bd6a56dc0896955ed9f1efa997e8086b1f8ac2 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:42:47 2024 +0300 + + code: вывод суммы a и b + +commit fbcfd719efbca645992a6ca2ecc6070d9c62bd81 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:40:48 2024 +0300 + + code: ввод чисел a и b + +commit a2da795db3886d2aa96b034191f44e1aec0ca546 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:20:10 2024 +0300 + + build: добавлен файл проекта + +commit 330f92019e47d5bd25a9f0e8177ed373c0e59f7b +Author: Alice (PodolskyNK) +Date: Sun Apr 14 23:23:37 2024 +0300 + + code: заготовка программы + + + + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --stat // Для последнего коммита: +commit cfd047dbeb0ecd2c00c2944e1ab9aa5e1e569eed (HEAD -> main)// Его хэш +Author: Alice (PodolskyNK) // Автор и его email +Date: Mon Apr 15 10:55:04 2024 +0300 // Дата + + build: git // Сообщение + + .gitignore | 3 +++ // Изменённый(или добавленный) файл | количество изменённых строк (кратко) + 1 file changed, 3 insertions(+) // Количество изменённых файлов | количество изменённых строк + +commit 4bf3d0635291d25f776c8afcc1a08eff2f739661 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:47:01 2024 +0300 + + code: вывод разности a и b + + main.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit b6bd6a56dc0896955ed9f1efa997e8086b1f8ac2 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:42:47 2024 +0300 + + code: вывод суммы a и b + + main.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit fbcfd719efbca645992a6ca2ecc6070d9c62bd81 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:40:48 2024 +0300 + + code: ввод чисел a и b + + main.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit a2da795db3886d2aa96b034191f44e1aec0ca546 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:20:10 2024 +0300 + + build: добавлен файл проекта + + project.cbp | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 330f92019e47d5bd25a9f0e8177ed373c0e59f7b + + + + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --oneline --decorate +cfd047d (HEAD -> main) build: git +4bf3d06 code: вывод разности a и b +b6bd6a5 code: вывод суммы a и b +fbcfd71 code: ввод чисел a и b +a2da795 build: добавлен файл проекта +330f920 code: заготовка программы + + + + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --oneline --decorate --all --graph +* cfd047d (HEAD -> main) build: git +* 4bf3d06 code: вывод разности a и b +* b6bd6a5 code: вывод суммы a и b +* fbcfd71 code: ввод чисел a и b +* a2da795 build: добавлен файл проекта +* 330f920 code: заготовка программы + + + + + +16.Нашёл коммиты по теме build, а затем коммиты, затргивающие project.cbp: + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log --grep "build:" +commit cfd047dbeb0ecd2c00c2944e1ab9aa5e1e569eed (HEAD -> main) +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:55:04 2024 +0300 + + build: git + +commit a2da795db3886d2aa96b034191f44e1aec0ca546 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:20:10 2024 +0300 + + build: добавлен файл проекта + + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git log -- project.cbp +commit a2da795db3886d2aa96b034191f44e1aec0ca546 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:20:10 2024 +0300 + + build: добавлен файл проекта + + + +17. Просмотрел предпоследний коммит тремя способами: + +1) git show HEAD~1 + +2) git show main~1 + +3) git show ecc914b + + + +1) nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git show HEAD~1 +commit 4bf3d0635291d25f776c8afcc1a08eff2f739661 +Author: Alice (PodolskyNK) +Date: Mon Apr 15 10:47:01 2024 +0300 + + code: вывод разности a и b + +diff --git a/main.cpp b/main.cpp +index 159ed60..4059f74 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -10,7 +10,9 @@ int main() + + cin >> a >> b; + +- cout << "A + B = " << a + b; ++ cout << "A + B = " << a + b << '\n' ++ ++ << "A - B = " << a - b << '\n'; + +} + + + +18. Добавил в main.cpp печать произведения чисел, а затем просмотрел изменения в рабочей копии с различным количеством аргументов: + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 4059f74..38bf33c 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -12,7 +12,9 @@ int main() + + cout << "A + B = " << a + b << '\n' + +- << "A - B = " << a - b << '\n'; ++ << "A - B = " << a - b << '\n' ++ ++ << "A * B = " << a * b << '\n'; + + return 0; + + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git diff HEAD~2 +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..4d72a82 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/project.layout +diff --git a/main.cpp b/main.cpp +index 159ed60..38bf33c 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -10,7 +10,11 @@ int main() + + cin >> a >> b; + +- cout << "A + B = " << a + b; ++ cout << "A + B = " << a + b << '\n' ++ ++ << "A - B = " << a - b << '\n' ++ ++ << "A * B = " << a * b << '\n'; + + return 0; + + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git diff HEAD~2 HEAD +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..4d72a82 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/project.layout +diff --git a/main.cpp b/main.cpp +index 159ed60..4059f74 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -10,7 +10,9 @@ int main() + + cin >> a >> b; + +- cout << "A + B = " << a + b; ++ cout << "A + B = " << a + b << '\n' ++ ++ << "A - B = " << a - b << '\n'; + + return 0; + + + +19. Просмотрел изменения между самым первым коммитом и коммитом, добавляющим вывод разности (перед этим узнал хэши нужных коммитов): + +nikit@onmyneck MINGW64 ~/OneDrive/Рабочий стол/lab02/alice/project (main) +$ git diff 330f920 4bf3d06 +diff --git a/main.cpp b/main.cpp +index b4392ec..4059f74 100644 +--- a/main.cpp ++++ b/main.cpp +@@ -4,6 +4,16 @@ 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..c4697a9 +--- /dev/null ++++ b/project.cbp +@@ -0,0 +1,38 @@ ++ ++ ++ ++ ++