diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..9984fad --- /dev/null +++ b/README.txt @@ -0,0 +1,1252 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Никиткин Т. Ю. +Группа: А-01-22 +Проверил: Козлюк Д. А. + +Примечание: работа выполнялась на Linux. + +1. Создал на рабочем столе каталог lab02 и запустил терминал: + +archlinux% + + + + + +2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: + +archlinux% ls +archlinux% + + + + + +3. Создал каталоги Алисы и Боба, создал каталог "project", +изучил команду "cd" в процессе: + +archlinux% mkdir alice +archlinux% mkdir bob +archlinux% cd alice +archlinux% mkdir project +archlinux% cd project +archlinux% pwd +/home/sage/Desktop/lab02/alice/project +archlinux% cd .. +archlinux% pwd +/home/sage/Desktop/lab02/alice +archlinux% cd project +archlinux% pwd +/home/sage/Desktop/lab02/alice/project +archlinux% + + + + + +4. Инициализировал репозитарий и подтвердил командой ls -A наличие папки .git: + +archlinux% git init +подсказка: Using 'master' as the name for the initial branch. This default branch name +подсказка: is subject to change. To configure the initial branch name to use in all +подсказка: of your new repositories, which will suppress this warning, call: +подсказка: +подсказка: git config --global init.defaultBranch +подсказка: +подсказка: Names commonly chosen instead of 'master' are 'main', 'trunk' and +подсказка: 'development'. The just-created branch can be renamed via this command: +подсказка: +подсказка: git branch -m +Инициализирован пустой репозиторий Git в /home/sage/Desktop/lab02/alice/project/.git/ +archlinux% git branch -m main +archlinux% ls -A +.git +archlinux% + + + + + +5. Настроил репозитарий Алисы, чтобы коммиты были от её имени: + +archlinux% git config user.name 'Alice (NikitkinTY)' +archlinux% git config user.email 'NikitkinTY@mpei.ru' +archlinux% + + + + + +6. Запустил CodeBlocks и создал проект в репозитарии Алисы со следующими +настройками: + +Project title: project +Folder to create project in: /home/sage/Desktop/lab02/alice/ +Project filename: project.cbp +Resulting filename: /home/sage/Desktop/lab02/alice/project/project.cbp + + + + + +7. Собрал проект, после чего вернулся в git и просмотрел состояние +рабочей копии: + +archlinux% git status +Текущая ветка: main + +Еще нет коммитов + +Неотслеживаемые файлы: + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) + bin/ + main.cpp + obj/ + project.cbp + +индекс пуст, но есть неотслеживаемые файлы +(используйте «git add», чтобы проиндексировать их) +archlinux% + + +Пояснение к выведенной информации: + +Текущая ветка: main #Вывод названия текущей ветки + +Еще нет коммитов #Констатация отсутствия коммитов + +Неотслеживаемые файлы: #Вывод всех неотслеживаемых файлов с подсказкой о + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) #git add + bin/ + main.cpp + obj/ + project.cbp + +индекс пуст, но есть неотслеживаемые файлы #Понятно из содержания + +(используйте «git add», чтобы проиндексировать их) #Подсказка о добавление в индекс + + + + + +8. Добавил main.cpp в индекс, то есть в набор изменений, который войдет +в очередной коммит: + +archlinux% git add main.cpp +archlinux% + + + + + +9. Ещё раз проверил состояние рабочей копии: + +archlinux% git status +Текущая ветка: main + +Еще нет коммитов + +Изменения, которые будут включены в коммит: + (используйте «git rm --cached <файл>...», чтобы убрать из индекса) + новый файл: main.cpp + +Неотслеживаемые файлы: + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) + bin/ + obj/ + project.cbp + +archlinux% + + +Пояснение к выведенной информации: + +Текущая ветка: main #Вывод названия текущей ветки + +Еще нет коммитов #Констатация отсутствия коммитов + +Изменения, которые будут включены в коммит: #Вывод файла (main.cpp), который попадёт в + (используйте «git rm --cached <файл>...», чтобы убрать из индекса) #следующий коммит, и подсказка о выводе файла + новый файл: main.cpp #из индекса + +Неотслеживаемые файлы: #Вывод всех оставшихся неотслеживаемых файлов с + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) #подсказкой о git add + bin/ + obj/ + project.cbp + +Из изменений - сообщение о пустом индексе и появление списка для нового коммита + + + +10. Выполнил коммит с файлом main.cpp и коротким сообщением: + +archlinux% git commit -m 'code: заготовка программы' +[main (корневой коммит) 0f2fab6] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp +archlinux% + + + + + +11. Проверил состояние проекта, добавил файл project.cbp в индекс и +сделал коммит с ним, тема — build: + +uarchlinux% git add project.cbp +archlinux% git commit -m 'build: добавлен файл проекта' +[main 451a2b6] build: добавлен файл проекта + 1 file changed, 38 insertions(+) + create mode 100644 project.cbp +archlinux% + + + + + +12. Заменил тело функции main() на ввод двух чисел и сохранил файл: + +cout << "Enter A and B: "; +int a, b; +cin >> a >> b; + +13. Просмотрел состоянние репозитария: + +archlinux% git status +Текущая ветка: main +Изменения, которые не в индексе для коммита: + (используйте «git add <файл>...», чтобы добавить файл в индекс) + (используйте «git restore <файл>...», чтобы отменить изменения в рабочем каталоге) + изменено: main.cpp + +Неотслеживаемые файлы: + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) + bin/ + obj/ + +индекс пуст (используйте «git add» и/или «git commit -a») +archlinux% + + +Заметил, что main.cpp больше не находится под "Неотслеживаемые файлы:", теперь +main.cpp отображается выше с припиской "изменено:". + +Отличие от случая, когда добавлялся новый файл и изменялся существующий в том, +что новый файл входил в индекс, а изменёный нет. + + + + + +14. Использовал первый способ для коммита изменений, а именно выбор файла, +изменния в которых должны войти в коммит, после чего сам коммит: + +archlinux% git add main.cpp +archlinux% git commit -m 'code: добавлен ввод двух чисел' +[main 1a522a3] code: добавлен ввод двух чисел + 1 file changed, 3 insertions(+), 1 deletion(-) +archlinux% + + + + + +15. Добавил в программу вывод суммы a и b: + +cout << "A + B = " << a + b << '\n'; + + + + + +16. Использовал второй способ для коммита изменений, а именно добавить +в индекс все изменения, затем сам коммит: + +archlinux% git add -u +archlinux% git commit -m 'code: добавлен вывод суммы чисел' +[main 76b205d] code: добавлен вывод суммы чисел + 1 file changed, 1 insertion(+) +archlinux% + + + + + +17. Добавил в программу вывод разности a и b: + +cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; + + + + + +18. использовал третий способ для коммита изменений, а именно добавление +всех изменений в индекс и сам коммит в один шаг. + +archlinux% git commit -a -m 'code: добавлен вывод разности чисел' +[main 4bf99bf] code: добавлен вывод разности чисел + 1 file changed, 2 insertions(+), 1 deletion(-) +archlinux% + + + + + +19. Проверил состояние проекта и заметил наличие каталогов bin/ , obj/ : + +archlinux% git status +Текущая ветка: main +Неотслеживаемые файлы: + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) + bin/ + obj/ + +индекс пуст, но есть неотслеживаемые файлы +(используйте «git add», чтобы проиндексировать их) +archlinux% + + + + + +20. Создал в CodeBlocks файл .gitignore в корне репозитария со строчкой +/bin , после чего проверил состояние проекта: + +archlinux% git status +Текущая ветка: main +Неотслеживаемые файлы: + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) + .gitignore + obj/ + +индекс пуст, но есть неотслеживаемые файлы +(используйте «git add», чтобы проиндексировать их) +archlinux% + + + + + +21. Добавил в файл .gitignore строчки /obj и /*.layout, после чего проверил +состояние проекта. + +archlinux% git status +Текущая ветка: main +Неотслеживаемые файлы: + (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит) + .gitignore + +индекс пуст, но есть неотслеживаемые файлы +(используйте «git add», чтобы проиндексировать их) +archlinux% + + + + + +22. Создал коммит с .gitignore, тема - git : + +archlinux% git add .gitignore +archlinux% git commit -m 'git' +[main 9374e7a] git + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore +archlinux% + + + + + +23. Опробовал git log, который показывает журнал репозитария: + +archlinux% git log +commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:26:50 2023 +0300 + + git + +commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:17:22 2023 +0300 + + code: добавлен вывод разности чисел + +commit 76b205dcf4d398984a32e7749a2c182ba3685b12 +Author: Alice (NikitkinTY) +Date: Sun Mar 26 12:45:17 2023 +0300 + + code: добавлен вывод суммы чисел + +commit 1a522a3f2ae2dc6ea7b247471898f7543727f2f5 +Author: Alice (NikitkinTY) +Date: Sun Mar 26 12:29:57 2023 +0300 + + code: добавлен ввод двух чисел + +commit 451a2b6ca5e601babdd5db674769b3324ed25214 +Author: Alice (NikitkinTY) +Date: Sun Mar 26 12:19:37 2023 +0300 + +archlinux% + + + + + +24. Опробовал git log --stat показывает файлы, который измененные в коммитах: + +archlinux% git log --stat +commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:26:50 2023 +0300 + + git + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:17:22 2023 +0300 + + code: добавлен вывод разности чисел + + main.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 76b205dcf4d398984a32e7749a2c182ba3685b12 +Author: Alice (NikitkinTY) +Date: Sun Mar 26 12:45:17 2023 +0300 + + code: добавлен вывод суммы чисел + + main.cpp | 1 + + 1 file changed, 1 insertion(+) + +commit 1a522a3f2ae2dc6ea7b247471898f7543727f2f5 +archlinux% + + + +Пояснение к последнему коммиту: +commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) #Вывод хэша коммита и указания на то, что это последний коммит + +Author: Alice (NikitkinTY) #Имя и почта автора коммита + +Date: Sun Mar 26 14:26:50 2023 +0300 #Время и дата совершения коммита + + git #Тема коммита + + .gitignore | 3 +++ #Название файла вошедшего в коммит и количество изменений в нём + + 1 file changed, 3 insertions(+) #Вывод общего количества изменёных файлов и изменений в них + + + + + +25. Опробовал git log --oneline --decorate показывает файлы, который +показывает коммиты компактно (--oneline), а также показывает ссылки, концы +веток и тэги (--decorate): + +archlinux% git log --oneline --decorate +9374e7a (HEAD -> main) git +4bf99bf code: добавлен вывод разности чисел +76b205d code: добавлен вывод суммы чисел +1a522a3 code: добавлен ввод двух чисел +451a2b6 build: добавлен файл проекта +0f2fab6 code: заготовка программы +archlinux% + + + + + +26. Опробовал git log --oneline --decorate --all --graph, +который делает то же для всех веток (--all), причем коммиты отображаются +в терминале в виде дерева (--graph): + +archlinux% git log --oneline --decorate --all --graph +* 9374e7a (HEAD -> main) git +* 4bf99bf code: добавлен вывод разности чисел +* 76b205d code: добавлен вывод суммы чисел +* 1a522a3 code: добавлен ввод двух чисел +* 451a2b6 build: добавлен файл проекта +* 0f2fab6 code: заготовка программы +archlinux% + + + + + +27. Нашёл коммиты по теме built: + +archlinux% git log --grep "build:" +commit 451a2b6ca5e601babdd5db674769b3324ed25214 +Author: Alice (NikitkinTY) +Date: Sun Mar 26 12:19:37 2023 +0300 + + build: добавлен файл проекта +archlinux% + + + + + +28. Нашёл коммиты затрагивающие project.cbp: + +archlinux% git log -- project.cbp +commit 451a2b6ca5e601babdd5db674769b3324ed25214 +Author: Alice (NikitkinTY) +Date: Sun Mar 26 12:19:37 2023 +0300 + + build: добавлен файл проекта +archlinux% + + + + + +29. Просмотрел последний коммит, как текущий коммит: + +archlinux% git show HEAD +commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:26:50 2023 +0300 + + git + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..d85abef +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/*.layout +archlinux% + + + + + +30. Просмотрел последний коммит по имени ветви + +archlinux% git show main +commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:26:50 2023 +0300 + + git + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..d85abef +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/*.layout +archlinux% + + + + + +31. Просмотрел последний коммит по хэшу нужного коммита + +archlinux% git show 9374e7a +commit 9374e7a5139490f527c4ca2d6811f6b223f5774d (HEAD -> main) +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:26:50 2023 +0300 + + git + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..d85abef +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,3 @@ ++/bin ++/obj ++/*.layout +archlinux% + + + + + +32. Просмотрел предпоследний коммит: + +archlinux% git show HEAD~1 +commit 4bf99bf3fe7ec26eac0c2b012fdd16eb93cf80ac +Author: Alice (NikitkinTY) +Date: Sun Mar 26 14:17:22 2023 +0300 + + code: добавлен вывод разности чисел + +diff --git a/main.cpp b/main.cpp +index 6de6dd2..5371b30 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; + } +archlinux% + + + + + +33. Добавил вывод произведения чисел: + + cout << "A + B = " << a + b << '\n' + << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; + + + + +34. Просмотрел изменения рабочей копии: + +archlinux% git diff +diff --git a/main.cpp b/main.cpp +index 5371b30..fbd9488 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; + } +archlinux% + +Пояснение к выведенной информации: + +diff --git a/main.cpp b/main.cpp #Вывод входных данных сравнения + +index 5371b30..fbd9488 100644 #Метаданные git + +--- 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; + } + + + + + +35. Просмотрел изменения от первого коммита до коммита, добавляющего вывод разности: + +archlinux% git diff 0f2fab6 4bf99bf +diff --git a/main.cpp b/main.cpp +index b4392ec..5371b30 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..c4697a9 +--- /dev/null ++++ b/project.cbp +@@ -0,0 +1,38 @@ ++ ++ ++ ++ ++