diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..4687d4a --- /dev/null +++ b/README.txt @@ -0,0 +1,436 @@ +Отчет по лабораторной работе № 2 "Система контроля версий Git" + +Выполнил: Баранов Э. К. +Группа: А-01-23 +Проверил: + +Примечание: работа выполнялась на Windows. + +1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ + + +2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ ls + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ + + +3. Создал каталоги Алисы и Боба, создал каталог "project", +изучил команду "cd" в процессе: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ mkdir alice + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ mkdir bob + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ cd alice + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice +$ mkdir project + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice +$ cd .. + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ cd project +bash: cd: project: No such file or directory + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ cd alice project +bash: cd: too many arguments + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02 +$ cd alice + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice +$ cd project + + + +4. Инициализировал репозитарий: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project +$ git init +Initialized empty Git repository in C:/Users/lenov/Desktop/lab02/alice/project/.git/ + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git branch -m master + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (master) +$ git branch -m main + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +У меня имя ветки по умолчанию настроено, как 'main', поэтому подсказки никакой не вылезло. +Но я хотел изучить команду для смены имени ветки, поэтому сменил ее на 'master', а потом обратно на 'main' + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ ls -A +.git/ + +С помощью команды 'ls -A' я увидел католог .git + +5. Настроил репозитарий Алисы,чтобы коммиты были от ее имени : + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.name 'Alice (BaranovEK)' + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git config user.email 'BaranovEK@mail.ru' + +6. В CodeBlocks создал проект в репозитории Алисы со следущем конечным путем: +C:\Users\lenov\Desktop\lab02\alice\project\project.cbp + +7. Вернувшись в Git Bash, просмотрел состояние рабочей копии, добавил файл в отслеживаемые Git-ом, выполнил коммит: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main - мы находимся на ветке main + +No commits yet - коммитов еще не было + +Untracked files: - перечислен перечень не отслеживемых Git-ом файлов + (use "git add ..." to include in what will be committed) + bin/ + main.cpp + obj/ + project.cbp + +nothing added to commit but untracked files present (use "git add" to track)- +Нобходимости в коммите нет(ничего не изменилось/добавилось), +но присутствуют неотслеживаемые файлы (используйте "git add" для отслеживания) + + +Добавил файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит: +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +Просмотрел сосотояние рабочей копии: +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main - мы находимся на ветке main + +No commits yet - коммитов еще не было + +Changes to be committed: - Изменения(добавление файла в отслеживание), которые необходимо закоммититьж + (use "git rm --cached ..." to unstage) + new file: main.cpp + +Untracked files: - перечислен перечень не отслеживемых Git-ом файлов + (use "git add ..." to include in what will be committed) + bin/ + obj/ + project.cbp + +Выполнил коммит с файлом main.cpp и коротким сообщением: +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'code: заготовка программы' +[main (root-commit) 01a4a8f] code: заготовка программы + 1 file changed, 9 insertions(+) + create mode 100644 main.cpp + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ + +8 добавил еще однин файл в индеккс и сделал коммит с ним. + +lenov@LAPTOP-4D9QBHOE 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 + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m 'build: добавлен файл проекта' +[main a5895dd] build: добавлен файл проекта + 1 file changed, 40 insertions(+) + create mode 100644 project.cbp + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +Changes not staged for commit: git отлеживает и хранит эти файлы. +Сейчас эти файлы изменены, но git не будет сохранять эти изменения при фиксации. + (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/ + project.layout + +no changes added to commit (use "git add" and/or "git commit -a") + +9 сделал коммиты тремя разными способами + +1-ый способ Сначала выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp +git commit -m "..." +[main aea20f6] ... + 1 file changed, 4 insertions(+), 1 deletion(-) +Я забыл прописать сообщение, поэтому пришлось удалить последний коммит(без удаления изменений в файле) +и закоммитить заново +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git reset HEAD~ # +Unstaged changes after reset: +M main.cpp + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m "code: добавлен вывод суммы" +[main 889d2b0] code: добавлен вывод суммы + 1 file changed, 4 insertions(+), 1 deletion(-) + +Потом я понял, что вывод суммы не нужно было добавлять в коммит, +поэтому я опять удалил последний коммит, но уже вместе с изменениями. И закоммитил все как положено. + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git reset --hard HEAD~ +HEAD is now at a5895dd build: добавлен файл проекта + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add main.cpp + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m"code: добавлен ввод чисел" +[main beefe63] code: добавлен ввод чисел + 1 file changed, 3 insertions(+), 1 deletion(-) + + +2-ой способ Добавить в индекс все изменения, затем сделать коммит: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add -u + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m"code: добавлен вывод суммы" +[main 1ab08b5] code: добавлен вывод суммы + 1 file changed, 1 insertion(+) + +3-ий способ Добавить все изменения в индекс и сделать коммит в один шаг: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -a -m"code: добавлен вывод суммы" +[main 6dfd17a] code: добавлен вывод суммы + 1 file changed, 2 insertions(+), 1 deletion(-) + +В сообщение допущена ошибка, поэтому я изменил сообщение коммита: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit --amend +hint: Waiting for your editor to close the file... unix2dos: converting file C:/Users/lenov/Desktop/lab02/alice/project/.git/COMMIT_EDITMSG to DOS format... +dos2unix: converting file C:/Users/lenov/Desktop/lab02/alice/project/.git/COMMIT_EDITMSG to Unix format... +[main 88dc5ff] code: добавлен вывод разности + Date: Mon Apr 1 12:44:27 2024 +0300 + 1 file changed, 2 insertions(+), 1 deletion(-) + +9 занес в список игнорируемых каталоги bin и obj и файлы *.layout. Убедился, что это удалось. +Создал коммит с .gitignore + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/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) + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git add .gitignore + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git commit -m"git: закоммичен .gitignore" +[main 49ddca5] git: закоммичен .gitignore + 1 file changed, 3 insertions(+) + create mode 100644 .gitignore + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git status +On branch main +nothing to commit, working tree clean + +10 Работа с журналом репозитория: + +попробовал каждую из приведенных команд: +git log +git log --stat +git log --oneline --decorate +git log --oneline --decorate --all --graph + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --stat +commit 49ddca58e5e7c4948ca75195e919ec2e1dbc8d60 (HEAD -> main) - указан id коммита и показано,что ссылка направлена на данный коммит из ветки main +Author: Alice (BaranovEK) +Date: Mon Apr 1 12:58:00 2024 +0300 + + git: закоммичен .gitignore + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) - указан файл который изменили в этом коммите, а также число добавленных строк(3 insertions(+)) + +..... + +Нашел сначала коммиты по теме build, затем коммиты, затрагивающие project.cbp: + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log --grep "build:" +commit a5895ddd03a5b83b7a675aac252237effb6768f0 +Author: Alice (BaranovEK) +Date: Mon Apr 1 11:48:08 2024 +0300 + + build: добавлен файл проекта + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git log -- project.cbp +commit a5895ddd03a5b83b7a675aac252237effb6768f0 +Author: Alice (BaranovEK) +Date: Mon Apr 1 11:48:08 2024 +0300 + + build: добавлен файл проекта + +10 Просмотр коммитов + +просморел предпоследний коммит тремя разными способами(результат выписал единожды) + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git show main~1 +commit 88dc5ff98c2f62369b37b50ee5e204af70247ea9 +Author: Alice (BaranovEK) +Date: Mon Apr 1 12:44:27 2024 +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; + } + +11 Просмотр изменений + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff +diff --git a/main.cpp b/main.cpp +index 5371b30..d323e9d 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'; - тут строка которую поменяли(git считает,что удалили) ++ << "A - B = " << a - b << '\n'-* ++ << "A*B=" << a*b << '\n';-*= тут строки которые добавили + return 0; + } + +12 +Просмотрите изменения между самым первым коммитом и коммитом, добавляющим вывод разности. + + +lenov@LAPTOP-4D9QBHOE MINGW64 ~/Desktop/lab02/alice/project (main) +$ git diff 01a4a8f 88dc5ff +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..99bb702 +--- /dev/null ++++ b/project.cbp +@@ -0,0 +1,40 @@ ++ ++ ++ ++ ++ ++ +(END) + + + + + + + + + + + + + + + + + + +