Отчет по лабораторной работе № 2 "Система контроля версий Git" Выполнил: Веретенников М.А. Группа: А-01-23 Проверил: Козлюк Д. А. Примечание: работа выполнялась на Windows. 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02 $ 2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02 $ ls al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02 $ 3. Создал каталоги Алисы и Боба, создал каталог "project", изучил команду "cd" в процессе: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02 $ mkdir alice al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02 $ mkdir bob al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02 $ cd alice al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice $ mkdir project al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice $ cd project/ al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project $ cd .. al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice $ cd project 4. Инициализировал репозитарий: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/al/Desktop/lab02/alice/project/.git/ al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ У меня имя ветки сразу стоит main, поэтому я не стал его менять. 5. Настроил репозитарий Алисы: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.name 'Alice (VeretennikovMA)' al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git config user.email 'VeretennikovMA@mpei.ru' 6. Запустил CodeBlocks и создал проект в репозитарии Алисы, а затем собрал его. 7. Просмотрел состояние рабочей копии: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/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 // Файлы в ~/Desktop/lab02/alice/project nothing added to commit but untracked files present (use "git add" to track) // Еще ничего не закомиченно и неотслеживаемые файлы показаны(подсказка для добавления файлов коммита) 8. Добавил файл main.cpp в индекс, проверил состояние рабочей копии и выполнил коммит с файлом main.cpp: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/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 начал отслеживаться и будет закоммичен в следующей строке: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "code: заготовка программы" [main (root-commit) 0e4e5bc] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp 9. Добавил файл project.cbp в индекс и сделал коммит с ним: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/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 al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "build: добавлен файл проекта" [main 16b433b] build: добавлен файл проекта 1 file changed, 40 insertions(+) create mode 100644 project.cbp 10. Заменим тело функции main() на ввод двух чисел, просмотрел состояние репозитория и закоммитил изменения: cout << "Enter A and B: "; int a, b; cin >> a >> b; al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/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 // Изменились слова до ":" из "new file" в "modified" 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") // Добавилась строка о том, что у коммита пока ничего не поменялось al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "code: ввод чисел a и b" [main 5ace135] code: ввод чисел a и b Date: Sun Mar 31 22:30:16 2024 +0300 1 file changed, 3 insertions(+), 2 deletions(-) 11. Добавил в программу вывод суммы a и b, а затем закоммитил: int main() { ... cout << "A + B = " << a + b; } al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add -u al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "code: вывод суммы a и b" [main 0f15157] code: вывод суммы a и b 1 file changed, 1 insertion(+) 12. Добавил в программу вывод суммы a и b и закоммитил: int main() { ... cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; } al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m "code: вывод разности a и b" [main ecc914b] code: вывод разности a и b 1 file changed, 2 insertions(+), 1 deletion(-) 13. Cоздал в CodeBlocks новый файл (.gitignore) и записал в него строки /bin /obj и /project.layout, проверил его на работоспособность и закоммитил: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Untracked files: (use "git add ..." to include in what will be committed) .gitignore project.depend nothing added to commit but untracked files present (use "git add" to track) al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add .gitignore al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m "build: git" [main fcbb050] build: git 1 file changed, 2 insertions(+) create mode 100644 .gitignore 14. Попробовал команду git log и ее опции: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log commit fcbb050294df58e51c9d5fdf85069d8f0225023f (HEAD -> main) Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:48:55 2024 +0300 build: git commit ecc914b5b7dff2690f1b1c6efd20770ab6d16789 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:41:09 2024 +0300 code: вывод разности a и b commit 0f1515740d9b5116d35dc69a1cf3834fdd198432 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:38:48 2024 +0300 code: вывод суммы a и b commit 5ace135c1e0dfaf34cd2bba0fa076dfe4ad387c2 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:30:16 2024 +0300 code: ввод чисел a и b commit 16b433bda8f6766cd2311c87c2a38a9171319957 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:17:26 2024 +0300 build: добавлен файл проекта commit 0e4e5bc85b7ee16d4c1ab3b7cfe67f1bc0b52bcd Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:13:38 2024 +0300 code: заготовка программы al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --stat // Для последнего коммита: commit fcbb050294df58e51c9d5fdf85069d8f0225023f (HEAD -> main) // Его хэш Author: Alice (VeretennikovMA) // Автор и его email Date: Sun Mar 31 22:48:55 2024 +0300 // Дата build: git // Сообщение .gitignore | 2 ++ // Изменённый(или добавленный) файл | количество изменённых строк (кратко) 1 file changed, 2 insertions(+) // Количество изменённых файлов | количество изменённых строк commit ecc914b5b7dff2690f1b1c6efd20770ab6d16789 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:41:09 2024 +0300 code: вывод разности a и b main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0f1515740d9b5116d35dc69a1cf3834fdd198432 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:38:48 2024 +0300 code: вывод суммы a и b main.cpp | 1 + 1 file changed, 1 insertion(+) commit 5ace135c1e0dfaf34cd2bba0fa076dfe4ad387c2 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:30:16 2024 +0300 code: ввод чисел a и b main.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 16b433bda8f6766cd2311c87c2a38a9171319957 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:17:26 2024 +0300 build: добавлен файл проекта project.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) commit 0e4e5bc85b7ee16d4c1ab3b7cfe67f1bc0b52bcd al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate fcbb050 (HEAD -> main) build: git ecc914b code: вывод разности a и b 0f15157 code: вывод суммы a и b 5ace135 code: ввод чисел a и b 16b433b build: добавлен файл проекта 0e4e5bc code: заготовка программы al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * fcbb050 (HEAD -> main) build: git * ecc914b code: вывод разности a и b * 0f15157 code: вывод суммы a и b * 5ace135 code: ввод чисел a и b * 16b433b build: добавлен файл проекта * 0e4e5bc code: заготовка программы 15. Нашёл коммиты по теме build, а затем коммиты, затргивающие project.cbp: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --grep "build:" commit fcbb050294df58e51c9d5fdf85069d8f0225023f (HEAD -> main) Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:48:55 2024 +0300 build: git commit 16b433bda8f6766cd2311c87c2a38a9171319957 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:17:26 2024 +0300 build: добавлен файл проекта al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log -- project.cbp commit 16b433bda8f6766cd2311c87c2a38a9171319957 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:17:26 2024 +0300 build: добавлен файл проекта 16. Просмотрел предпоследний коммит тремя способами: 1) git show HEAD~1 2) git show main~1 3) git show ecc914b al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git show HEAD~1 commit ecc914b5b7dff2690f1b1c6efd20770ab6d16789 Author: Alice (VeretennikovMA) Date: Sun Mar 31 22:41:09 2024 +0300 code: вывод разности a и b diff --git a/main.cpp b/main.cpp index 58aca4b..8435233 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; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; } 17. Добавил в main.cpp печать произведения чисел, а затем просмотрел изменения в рабочей копии с различным количеством аргументов: al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff diff --git a/main.cpp b/main.cpp index 8435233..f372c78 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'; // Добавленная строка } al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff HEAD~2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c7473d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin +/obj diff --git a/main.cpp b/main.cpp index 58aca4b..f372c78 100644 --- a/main.cpp +++ b/main.cpp @@ -7,5 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n'; } al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff HEAD~2 HEAD diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c7473d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin +/obj diff --git a/main.cpp b/main.cpp index 58aca4b..8435233 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; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; } 18. Просмотрел изменения между самым первым коммитом и коммитом, добавляющим вывод разности (перед этим узнал хэши нужных коммитов): al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline fcbb050 (HEAD -> main) build: git ecc914b code: вывод разности a и b 0f15157 code: вывод суммы a и b 5ace135 code: ввод чисел a и b 16b433b build: добавлен файл проекта 0e4e5bc code: заготовка программы al@DESKTOP-1QU05A3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff 0e4e5bc ecc914b diff --git a/main.cpp b/main.cpp index b4392ec..8435233 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,9 @@ using namespace std; int main() { - cout << "Hello world!" << endl; - return 0; + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; } diff --git a/project.cbp b/project.cbp new file mode 100644 index 0000000..99bb702 --- /dev/null +++ b/project.cbp @@ -0,0 +1,40 @@ + + + + +