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