Родитель
							
								
									afabfb99dc
								
							
						
					
					
						Сommit
						9d87bb8aa8
					
				| @ -0,0 +1,823 @@ | ||||
| Отчет по лабораторной работе № 2 "Система контроля версий Git" | ||||
| 
 | ||||
| Выполнил: Андросов Д. С. | ||||
| Группа:   А-03-24 | ||||
| Проверил: Козлюк Д. А. | ||||
| 
 | ||||
| Примечание: работа выполнялась на Windows. | ||||
| 
 | ||||
| 1. Создал на рабочем столе каталог lab02 и запустил в нем Git Bash, приглашение: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ | ||||
| 
 | ||||
| 2. Просмотрел файлы в рабочем каталоге можно командой "ls" --- пусто: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ ls | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ | ||||
| 
 | ||||
| 3. Создал каталоги Алисы и Боба, создал каталог "project", | ||||
| изучил команду "cd" в процессе: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ mkdir alice | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ mkdir bob | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ cd bob | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob | ||||
| $ cd .. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02 | ||||
| $ cd alice | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice | ||||
| $ mkdir project | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice | ||||
| $ ls | ||||
| project/ | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice | ||||
| $ cd project | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project | ||||
| $ | ||||
| 
 | ||||
| 
 | ||||
| 4. Инициализировал репозитарий: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project | ||||
| $ git init | ||||
| hint: Using 'master' as the name for the initial branch. This default branch name | ||||
| hint: is subject to change. To configure the initial branch name to use in all | ||||
| hint: of your new repositories, which will suppress this warning, call: | ||||
| hint:  | ||||
| hint: 	git config --global init.defaultBranch <name> | ||||
| hint:  | ||||
| hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and | ||||
| hint: 'development'. The just-created branch can be renamed via this command: | ||||
| hint:  | ||||
| hint: 	git branch -m <name> | ||||
| Initialized empty Git repository in C:/Users/Diman3000/Desktop/lab02/alice/project/.git/ | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (master) | ||||
| $ | ||||
| 
 | ||||
| Поменяем имя ветки на main: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (master) | ||||
| $ git branch -m main | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ ls -A | ||||
| .git/ | ||||
| 
 | ||||
| Настроим репозитарий Алисы, чтобы коммиты были от ее имени: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git config user.name 'Alice (AndrosovDS)' | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git config user.email 'AndrosovDS@mpei.ru' | ||||
| 
 | ||||
| 5. Создание коммитов: | ||||
| 
 | ||||
| Запустиv CodeBlocks и создадим проект в репозитарии Алисы | ||||
| 
 | ||||
| Имеем следующую структуру файлов и каталогов:  | ||||
| 
 | ||||
| lab02 | ||||
| ├── alice | ||||
| │   └── project  <--------- текущий рабочий каталог | ||||
| │       ├── .git <--------- создан командой "git init" | ||||
| │       ├── bin  <--------- создан CodeBlocks при сборке | ||||
| │       ├── obj  <--------- (то же самое) | ||||
| │       ├── main.cpp    <-- код программы | ||||
| │       └── project.cbp <-- файл проекта | ||||
| └── bob | ||||
| 
 | ||||
| Вернувшись в Git Bash, просмотрим состояние рабочей копии: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git status | ||||
| On branch main  <-- находимся на ветке main | ||||
| 
 | ||||
| No commits yet   <-- сообщение, что нет ни одного коммита | ||||
| 
 | ||||
| Untracked files:   <-- git обнаружил файлы в рабочем каталоге, но он их не отслеживает | ||||
|   (use "git add <file>..." 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)  <-- Подтверждает, что ничего не было добавлено в область подготовленных файлов, но есть не отслеживаемые файлы. | ||||
| 
 | ||||
| Добавим файл main.cpp в индекс: | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Посмотрим изменения: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git status | ||||
| On branch main | ||||
| 
 | ||||
| No commits yet | ||||
| 
 | ||||
| Changes to be committed:     <--Он показывает файлы, которые находятся в области подготовленных файлов и будут включены в следующий коммит. | ||||
|   (use "git rm --cached <file>..." to unstage) | ||||
|         new file:   main.cpp | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         bin/ | ||||
|         obj/ | ||||
|         project.cbp | ||||
| 
 | ||||
| Выполним коммит с файлом main.cpp и коротким сообщением: | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -m 'code: заготовка программы' | ||||
| [main (root-commit) eb352f8] code: заготовка программы | ||||
|  1 file changed, 9 insertions(+) | ||||
|  create mode 100644 main.cpp | ||||
| 
 | ||||
| 
 | ||||
| Добавим файл project.cbp в индекс и сделаем коммит с ним, тема — build. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D 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 | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -m 'build: add project file' | ||||
| [main 95259f2] build: add project file | ||||
|  1 file changed, 40 insertions(+) | ||||
|  create mode 100644 project.cbp | ||||
| 
 | ||||
| Заменим тело функции main() на ввод двух чисел и посмотрим состояние репозитария: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git status | ||||
| On branch main | ||||
| Changes not staged for commit: | ||||
|   (use "git add <file>..." to update what will be committed) | ||||
|   (use "git restore <file>..." to discard changes in working directory) | ||||
|         modified:   main.cpp <-- Указывает, что файл main.cpp был изменен, но эти изменения еще не в области подготовленных файлов. | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         bin/ | ||||
|         obj/ | ||||
| 
 | ||||
| no changes added to commit (use "git add" and/or "git commit -a") | ||||
| 
 | ||||
| 1 способ коммита. Сначала выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -m "code: ввод двух чисел" | ||||
| [main 9b3e59b] code: ввод двух чисел | ||||
|  1 file changed, 3 insertions(+), 2 deletions(-) | ||||
| 
 | ||||
| Добавил в программу вывод суммы a и b. | ||||
| 2 способ коммита. Добавить в индекс все изменения, затем сделать коммит: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git add -u | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -m "code: вывод суммы двух чисел" | ||||
| [main 579e11b] code: вывод суммы двух чисел | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| Добавил в программу вывод разности a и b. | ||||
| 
 | ||||
| 3 способ коммита. Добавить все изменения в индекс и сделать коммит в один шаг: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -a -m "code: вывод разности двух чисел" | ||||
| [main 0ccb145] code: вывод разности двух чисел | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| 6. Игнорирование файлов: | ||||
| 
 | ||||
| Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: | ||||
| /bin | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git status | ||||
| On branch main | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         .gitignore | ||||
|         obj/ | ||||
|         project.layout | ||||
| 
 | ||||
| nothing added to commit but untracked files present (use "git add" to track) | ||||
| bin не отображается | ||||
| 
 | ||||
| Занесем в список игнорируемых каталоги bin и obj и файлы *.layout. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git status | ||||
| On branch main | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         .gitignore | ||||
| 
 | ||||
| nothing added to commit but untracked files present (use "git add" to track) | ||||
| 
 | ||||
| Создадим коммит с .gitignore, тема — git | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git add .gitignore | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -a -m "git: игнорирование bin obj .layout" | ||||
| [main 0d5ee38] git: игнорирование bin obj .layout | ||||
|  1 file changed, 3 insertions(+) | ||||
|  create mode 100644 .gitignore | ||||
| 
 | ||||
| 7. Просмотр истории: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log | ||||
| commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:26:46 2025 +0300 | ||||
| 
 | ||||
|     git: игнорирование bin obj .layout | ||||
| 
 | ||||
| commit 0ccb145dc7129139b4ddabaefcd9a09a88a741c1 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:18:34 2025 +0300 | ||||
| 
 | ||||
|     code: вывод разности двух чисел | ||||
| 
 | ||||
| commit 579e11ba75a40370ec6d4f51e08df2f21f7952f3 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:17:08 2025 +0300 | ||||
| 
 | ||||
|     code: вывод суммы двух чисел | ||||
| 
 | ||||
| commit 9b3e59be040524543ff7286b78562e7683db9302 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:15:21 2025 +0300 | ||||
| 
 | ||||
|     code: ввод двух чисел | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log --stat | ||||
| commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main)   --- коммит, хэш коммита, ветка HEAD указывает на ветку main | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru>                  --- Автор | ||||
| Date:   Sun Mar 16 12:26:46 2025 +0300                           --- Дата | ||||
| 
 | ||||
|     git: игнорирование bin obj .layout                           --- Сообщение коммита | ||||
| 
 | ||||
|  .gitignore | 3 +++                                            --- изменен gitignore, добавлено 3 строки | ||||
|  1 file changed, 3 insertions(+)                               --- изменен 1 файл, добавлено 3 строки | ||||
| 
 | ||||
| commit 0ccb145dc7129139b4ddabaefcd9a09a88a741c1 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:18:34 2025 +0300 | ||||
| 
 | ||||
|     code: вывод разности двух чисел | ||||
| 
 | ||||
|  main.cpp | 3 ++- | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| commit 579e11ba75a40370ec6d4f51e08df2f21f7952f3 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:17:08 2025 +0300 | ||||
| 
 | ||||
|     code: вывод суммы двух чисел | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log --oneline --decorate | ||||
| 0d5ee38 (HEAD -> main) git: игнорирование bin obj .layout | ||||
| 0ccb145 code: вывод разности двух чисел | ||||
| 579e11b code: вывод суммы двух чисел | ||||
| 9b3e59b code: ввод двух чисел | ||||
| 95259f2 build: add project file | ||||
| eb352f8 code: заготовка программы | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * 0d5ee38 (HEAD -> main) git: игнорирование bin obj .layout | ||||
| * 0ccb145 code: вывод разности двух чисел | ||||
| * 579e11b code: вывод суммы двух чисел | ||||
| * 9b3e59b code: ввод двух чисел | ||||
| * 95259f2 build: add project file | ||||
| * eb352f8 code: заготовка программы | ||||
| 
 | ||||
| Коммиты по теме build | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $git log --grep "build:" | ||||
| commit 95259f299a9be05e4ac3416bc06881b075bc6147 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 9 14:56:55 2025 +0300 | ||||
| 
 | ||||
|     build: add project file | ||||
| 
 | ||||
| Коммиты, затрагивающие project.cbp | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log -- project.cbp | ||||
| commit 95259f299a9be05e4ac3416bc06881b075bc6147 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 9 14:56:55 2025 +0300 | ||||
| 
 | ||||
|     build: add project file | ||||
| 
 | ||||
| Посмотрим коммит тремя способами. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git show HEAD | ||||
| commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:26:46 2025 +0300 | ||||
| 
 | ||||
|     git: игнорирование bin obj .layout | ||||
| 
 | ||||
| diff --git a/.gitignore b/.gitignore | ||||
| new file mode 100644 | ||||
| index 0000000..d85abef | ||||
| --- /dev/null | ||||
| +++ b/.gitignore | ||||
| @@ -0,0 +1,3 @@ | ||||
| +/bin | ||||
| +/obj | ||||
| +/*.layout | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git show main | ||||
| commit 0d5ee3840cf42d4bb597d7ff858272ca307600bd (HEAD -> main) | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:26:46 2025 +0300 | ||||
| 
 | ||||
|     git: игнорирование bin obj .layout | ||||
| 
 | ||||
| diff --git a/.gitignore b/.gitignore | ||||
| new file mode 100644 | ||||
| index 0000000..d85abef | ||||
| --- /dev/null | ||||
| +++ b/.gitignore | ||||
| @@ -0,0 +1,3 @@ | ||||
| +/bin | ||||
| +/obj | ||||
| +/*.layout | ||||
| 
 | ||||
| Посмотрим предпоследний коммит | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git show 0d5ee3840cf42d4bb597d7ff858272ca307600bd~1 | ||||
| commit 0ccb145dc7129139b4ddabaefcd9a09a88a741c1 | ||||
| Author: Alice (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 12:18:34 2025 +0300 | ||||
| 
 | ||||
|     code: вывод разности двух чисел | ||||
| 
 | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index 4364dbc..fd75bba 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 << '\n'; | ||||
| +    cout << "A + B = " << a + b << '\n' | ||||
| +     << "A - B = " << a - b << '\n'; | ||||
|  } | ||||
| 
 | ||||
| Внесем изменения в main.cpp: добавим печать произведения чисел, но не станем пока делать коммит. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git diff | ||||
| diff --git a/main.cpp b/main.cpp    ->будет показана разница между двумя версиями файла main.cpp | ||||
| index fd75bba..91f8982 100644 | ||||
| --- a/main.cpp                      ->следующие строки относятся к старой версии файла main.cpp. Строки, начинающиеся с ---, берутся из версии “a”, то есть из зафиксированной версии. | ||||
| +++ b/main.cpp                      -> следующие строки относятся к новой версии файла main.cpp. Строки, начинающиеся с +++, берутся из версии “b”, то есть из текущей рабочей копии. | ||||
| @@ -8,5 +8,6 @@ int main() | ||||
|      cout << "Enter A and B: "; | ||||
|      int a, b; | ||||
|      cout << "A + B = " << a + b << '\n' | ||||
| -     << "A - B = " << a - b << '\n'; | ||||
| +     << "A - B = " << a - b << '\n' | ||||
| +     << "A * B = " << a * b << '\n'; -> Строка, начинающаяся с +: Это добавленная строка в новой версии файла main.cpp. Добавлена строка, которая выводит результат умножения A * B. | ||||
|  } | ||||
| 
 | ||||
| Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности. | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git diff HEAD~3 HEAD~1 | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index eac5055..fd75bba 100644 | ||||
| --- a/main.cpp | ||||
| +++ b/main.cpp | ||||
| @@ -7,4 +7,6 @@ int main() | ||||
|      cout << "Enter A and B: "; | ||||
|      int a, b; | ||||
|      cin >> a >> b; | ||||
| +    cout << "A + B = " << a + b << '\n' | ||||
| +     << "A - B = " << a - b << '\n'; | ||||
|  } | ||||
| 
 | ||||
| Коммит произведения | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -a -m "code: Вывод произведения двух чисел" | ||||
| [main aa40eec] code: Вывод произведения двух чисел | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| 
 | ||||
| 8. Откат изменений: | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git reset --hard HEAD~1 | ||||
| HEAD is now at 0d5ee38 git: игнорирование bin obj .layout | ||||
| 
 | ||||
| Добавим над функцией main() комментарий: | ||||
| // you may type whatever you want | ||||
| 
 | ||||
| Уберем изменения в main.cpp другим способом — откатив этот файл к состоянию в последнем коммите (HEAD) | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git checkout HEAD -- main.cpp | ||||
| 
 | ||||
| 
 | ||||
| 9. Обмен кодом через удаленное хранилище | ||||
| Зарегистрировался на Git УИТ | ||||
| Создал пару ключей | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ ssh-keygen | ||||
| Generating public/private ed25519 key pair. | ||||
| ... | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ eval $(ssh-agent -s) | ||||
| Agent pid 2025 | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ ssh-add | ||||
| Enter passphrase for /c/Users/Diman3000/.ssh/id_ed25519: | ||||
| Identity added: /c/Users/Diman3000/.ssh/id_ed25519 (Diman3000@DESKTOP-5UPO29D) | ||||
| 
 | ||||
| Открытый ключ: | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ cat ~/.ssh/id_ed25519.pub | ||||
| ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDvMW7I5s1bRAVK0UBHjeQ11RESmyBGs7GQIUCBfegT5 Diman3000@DESKTOP-5UPO29D | ||||
| 
 | ||||
| Скопировал открытый ключ и добавил в список открытых ключей своей учетной записи | ||||
| 
 | ||||
| Создал репозитарий под названием cs-lab02 | ||||
| 
 | ||||
| Соединение с сервером(Через http, работа выполнялась из дома, VPN МЭИ настроить не получилось) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git remote set-url origin http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git push -u origin main | ||||
| warning: use of unencrypted HTTP remote URLs is not recommended; see https://aka.ms/gcm/unsaferemotes for more information. | ||||
| Enumerating objects: 18, done. | ||||
| Counting objects: 100% (18/18), done. | ||||
| Delta compression using up to 16 threads | ||||
| Compressing objects: 100% (16/16), done. | ||||
| Writing objects: 100% (18/18), 2.30 KiB | 393.00 KiB/s, done. | ||||
| Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) | ||||
| remote: . Processing 1 references | ||||
| remote: Processed 1 references in total | ||||
| To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
|  * [new branch]      main -> main | ||||
| branch 'main' set up to track 'origin/main'. | ||||
| 
 | ||||
| Получение проекта с сервера | ||||
| Клонирование проекта: | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob | ||||
| $ git clone http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git project | ||||
| Cloning into 'project'... | ||||
| remote: Enumerating objects: 18, done. | ||||
| remote: Counting objects: 100% (18/18), done. | ||||
| remote: Compressing objects: 100% (16/16), done. | ||||
| remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 0 | ||||
| Receiving objects: 100% (18/18), done. | ||||
| Resolving deltas: 100% (2/2), done. | ||||
| 
 | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob | ||||
| $ cd project | ||||
| 
 | ||||
| "На машине Боба" настроил Git, как это делалось для Алисы | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git config user.name 'Bob (AndrosovDS)' | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git config user.email 'AndrosovDS@mpei.ru' | ||||
| 
 | ||||
| «На машине Боба» добавил в программу печать произведения чисел и сделал коммит. Просмотрел последний коммит и убедился, что он сделан от имени Боба. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git commit -a -m "code: печать произведения двух чисел" | ||||
| [main df8b691] code: печать произведения двух чисел | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git log | ||||
| commit df8b691468f90eaa330fedeaf1176ff45f53fc00 (HEAD -> main) | ||||
| Author: Bob (AndrosovDS) <AndrosovDS@mpei.ru> | ||||
| Date:   Sun Mar 16 14:03:09 2025 +0300 | ||||
| 
 | ||||
|     code: печать произведения двух чисел | ||||
| 
 | ||||
| Отправил коммит на сервер | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git push | ||||
| Enumerating objects: 5, done. | ||||
| Counting objects: 100% (5/5), done. | ||||
| Delta compression using up to 16 threads | ||||
| Compressing objects: 100% (3/3), done. | ||||
| Writing objects: 100% (3/3), 432 bytes | 432.00 KiB/s, done. | ||||
| Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) | ||||
| remote: . Processing 1 references | ||||
| remote: Processed 1 references in total | ||||
| To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
|    0d5ee38..df8b691  main -> main | ||||
| 
 | ||||
| «На машине Алисы» выполнил загрузку изменений | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git fetch | ||||
| remote: Enumerating objects: 5, done. | ||||
| remote: Counting objects: 100% (5/5), done. | ||||
| remote: Compressing objects: 100% (3/3), done. | ||||
| remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 | ||||
| Unpacking objects: 100% (3/3), 412 bytes | 82.00 KiB/s, done. | ||||
| From http://uit.mpei.ru/git/AndrosovDS/cs-lab02 | ||||
|    0d5ee38..df8b691  main       -> origin/main | ||||
| 
 | ||||
| Просмотрел историю всех веток | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * df8b691 (origin/main, origin/HEAD) code: печать произведения двух чисел | ||||
| * 0d5ee38 (HEAD -> main) git: игнорирование bin obj .layout | ||||
| * 0ccb145 code: вывод разности двух чисел | ||||
| * 579e11b code: вывод суммы двух чисел | ||||
| * 9b3e59b code: ввод двух чисел | ||||
| * 95259f2 build: add project file | ||||
| * eb352f8 code: заготовка программы | ||||
| 
 | ||||
| Продвинул ветку main к скачанной версии | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git pull --ff-only | ||||
| Updating 0d5ee38..df8b691 | ||||
| Fast-forward | ||||
|  main.cpp | 3 ++- | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| 
 | ||||
| «От имени Алисы» добавил в программу печать деления, сделал коммит, отправил его на сервер и получил новую версию «на машине Боба». Иначе говоря, повторил шаги выше, поменяв местами роли Алисы и Боба. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -a -m "code: деление двух чисел" | ||||
| warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it | ||||
| [main 9d73a40] code: деление двух чисел | ||||
|  2 files changed, 3 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git push | ||||
| Enumerating objects: 7, done. | ||||
| Counting objects: 100% (7/7), done. | ||||
| Delta compression using up to 16 threads | ||||
| Compressing objects: 100% (4/4), done. | ||||
| Writing objects: 100% (4/4), 468 bytes | 468.00 KiB/s, done. | ||||
| Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0) | ||||
| remote: . Processing 1 references | ||||
| remote: Processed 1 references in total | ||||
| To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
|    df8b691..9d73a40  main -> main | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git pull | ||||
| remote: Enumerating objects: 7, done. | ||||
| remote: Counting objects: 100% (7/7), done. | ||||
| remote: Compressing objects: 100% (4/4), done. | ||||
| remote: Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 | ||||
| Unpacking objects: 100% (4/4), 448 bytes | 11.00 KiB/s, done. | ||||
| From http://uit.mpei.ru/git/AndrosovDS/cs-lab02 | ||||
|    df8b691..9d73a40  main       -> origin/main | ||||
| Updating df8b691..9d73a40 | ||||
| Fast-forward | ||||
|  main.cpp    | 3 ++- | ||||
|  project.cbp | 1 + | ||||
|  2 files changed, 3 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 10. Разрешение конфликтов правок при совместной работе | ||||
| 
 | ||||
| 
 | ||||
| «На машине Алисы» дополнил программу печатью максимума, сделал коммит и отправил его на сервер. | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git commit -a -m "code: Печать максимума" | ||||
| [main 4be5e65] code: Печать максимума | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git push | ||||
| Enumerating objects: 5, done. | ||||
| Counting objects: 100% (5/5), done. | ||||
| Delta compression using up to 16 threads | ||||
| Compressing objects: 100% (3/3), done. | ||||
| Writing objects: 100% (3/3), 417 bytes | 417.00 KiB/s, done. | ||||
| Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) | ||||
| remote: . Processing 1 references | ||||
| remote: Processed 1 references in total | ||||
| To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
|    9d73a40..4be5e65  main -> main | ||||
| 
 | ||||
| «На машине Боба» дополнил программу печатью минимума, сделал коммит и попытался отправить его на сервер. | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git commit -a -m "code: Печать минимума" | ||||
| [main 81a9926] code: Печать минимума | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git push | ||||
| To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
|  ! [rejected]        main -> main (fetch first) | ||||
| error: failed to push some refs to 'http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git' | ||||
| hint: Updates were rejected because the remote contains work that you do not | ||||
| hint: have locally. This is usually caused by another repository pushing to | ||||
| hint: the same ref. If you want to integrate the remote changes, use | ||||
| hint: 'git pull' before pushing again. | ||||
| hint: See the 'Note about fast-forwards' in 'git push --help' for details. | ||||
| 
 | ||||
| Как можно видеть, удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите. | ||||
| 
 | ||||
| «От лица Боба» загрузил коммиты из удаленного хранилища и отобразил историю всех веток  | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git fetch | ||||
| remote: Enumerating objects: 5, done. | ||||
| remote: Counting objects: 100% (5/5), done. | ||||
| remote: Compressing objects: 100% (3/3), done. | ||||
| remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 | ||||
| Unpacking objects: 100% (3/3), 397 bytes | 12.00 KiB/s, done. | ||||
| From http://uit.mpei.ru/git/AndrosovDS/cs-lab02 | ||||
|    9d73a40..4be5e65  main       -> origin/main | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * 81a9926 (HEAD -> main) code: Печать минимума | ||||
| | * 4be5e65 (origin/main, origin/HEAD) code: Печать максимума | ||||
| |/ | ||||
| * 9d73a40 code: деление двух чисел | ||||
| * df8b691 code: печать произведения двух чисел | ||||
| * 0d5ee38 git: игнорирование bin obj .layout | ||||
| * 0ccb145 code: вывод разности двух чисел | ||||
| * 579e11b code: вывод суммы двух чисел | ||||
| * 9b3e59b code: ввод двух чисел | ||||
| * 95259f2 build: add project file | ||||
| * eb352f8 code: заготовка программы | ||||
| 
 | ||||
| 
 | ||||
| Нужно поместить коммит Боба, поверх коммита Алисы | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git rebase origin/main | ||||
| Auto-merging main.cpp | ||||
| CONFLICT (content): Merge conflict in main.cpp | ||||
| error: could not apply 81a9926... code: Печать минимума | ||||
| hint: Resolve all conflicts manually, mark them as resolved with | ||||
| hint: "git add/rm <conflicted_files>", then run "git rebase --continue". | ||||
| hint: You can instead skip this commit: run "git rebase --skip". | ||||
| hint: To abort and get back to the state before "git rebase", run "git rebase --abort". | ||||
| hint: Disable this message with "git config set advice.mergeConflict false" | ||||
| Could not apply 81a9926... code: Печать минимума | ||||
| 
 | ||||
| Однако эта команда завершается с ошибкой, сообщающей о конфликте в main.cpp | ||||
| Посмотрим состояние хранилища | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main|REBASE 1/1) | ||||
| $ git status | ||||
| interactive rebase in progress; onto 4be5e65  -в данный момент выполняется rebase | ||||
| Last command done (1 command done): | ||||
|    pick 81a9926 code: Печать минимума | ||||
| No commands remaining. | ||||
| You are currently rebasing branch 'main' on '4be5e65'. | ||||
|   (fix conflicts and then run "git rebase --continue") | ||||
|   (use "git rebase --skip" to skip this patch) | ||||
|   (use "git rebase --abort" to check out the original branch) | ||||
| 
 | ||||
| Unmerged paths:  -конфликт слияния | ||||
|   (use "git restore --staged <file>..." to unstage) | ||||
|   (use "git add <file>..." to mark resolution) | ||||
|         both modified:   main.cpp | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         project.depend | ||||
| 
 | ||||
| no changes added to commit (use "git add" and/or "git commit -a") | ||||
| 
 | ||||
| git status говорит нам, что мы находимся в середине rebase, возник конфликт в main.cpp | ||||
| 
 | ||||
| Удалил метки конфликта, отредактировал код(включает правки Алисы и Боба), программа компилируется и работает | ||||
| 
 | ||||
| Добавил файл в индекс и продолжил прерванную операцию rebase | ||||
| [detached HEAD 1cc8709] code: Печать минимума | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| Successfully rebased and updated refs/heads/main. | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git status | ||||
| On branch main | ||||
| Your branch is ahead of 'origin/main' by 1 commit. | ||||
|   (use "git push" to publish your local commits) | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         project.depend | ||||
| 
 | ||||
| nothing added to commit but untracked files present (use "git add" to track) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/bob/project (main) | ||||
| $ git push | ||||
| Enumerating objects: 5, done. | ||||
| Counting objects: 100% (5/5), done. | ||||
| Delta compression using up to 16 threads | ||||
| Compressing objects: 100% (3/3), done. | ||||
| Writing objects: 100% (3/3), 422 bytes | 422.00 KiB/s, done. | ||||
| Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) | ||||
| remote: . Processing 1 references | ||||
| remote: Processed 1 references in total | ||||
| To http://uit.mpei.ru/git/AndrosovDS/cs-lab02.git | ||||
|    4be5e65..1cc8709  main -> main | ||||
| 
 | ||||
| 11. Использование веток | ||||
| 
 | ||||
| Создал ветку и переключился на нее | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git branch double | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git checkout double | ||||
| Switched to branch 'double' | ||||
| 
 | ||||
| В коде заменил тип переменных a и b на double и сделал коммит | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (double) | ||||
| $ git commit -a -m "code: переменные типа double" | ||||
| [double 912a770] code: переменные типа double | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log --graph --decorate --oneline --all | ||||
| * 912a770 (double) code: переменные типа double | ||||
| | * 1cc8709 (HEAD -> main, origin/main, origin/HEAD) code: Печать минимума | ||||
| |/ | ||||
| * 4be5e65 code: Печать максимума | ||||
| * 9d73a40 code: деление двух чисел | ||||
| * df8b691 code: печать произведения двух чисел | ||||
| * 0d5ee38 git: игнорирование bin obj .layout | ||||
| * 0ccb145 code: вывод разности двух чисел | ||||
| * 579e11b code: вывод суммы двух чисел | ||||
| * 9b3e59b code: ввод двух чисел | ||||
| * 95259f2 build: add project file | ||||
| * eb352f8 code: заготовка программы | ||||
| 
 | ||||
| Слил ветку double в main | ||||
| Auto-merging main.cpp | ||||
| Merge made by the 'ort' strategy. | ||||
|  main.cpp | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| История всех веток | ||||
| Diman3000@DESKTOP-5UPO29D MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git log --graph --decorate --oneline --all | ||||
| *   afabfb9 (HEAD -> main, origin/main, origin/HEAD) Merge branch 'double' | ||||
| |\ | ||||
| | * 912a770 (double) code: переменные типа double | ||||
| * | 1cc8709 code: Печать минимума | ||||
| |/ | ||||
| * 4be5e65 code: Печать максимума | ||||
| * 9d73a40 code: деление двух чисел | ||||
| * df8b691 code: печать произведения двух чисел | ||||
| * 0d5ee38 git: игнорирование bin obj .layout | ||||
| * 0ccb145 code: вывод разности двух чисел | ||||
| * 579e11b code: вывод суммы двух чисел | ||||
| * 9b3e59b code: ввод двух чисел | ||||
| * 95259f2 build: add project file | ||||
| * eb352f8 code: заготовка программы | ||||
| 
 | ||||
					Загрузка…
					
					
				
		Ссылка в новой задаче