Отчет по лабораторной работе № 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 @@ + + + + +