Родитель
							
								
									91e8d65e23
								
							
						
					
					
						Сommit
						0e9de90277
					
				| @ -0,0 +1,765 @@ | ||||
| Отчет по лабораторной работе № 2 "Система контроля версий Git" | ||||
| 
 | ||||
| Выполнил: Троянов Д.С. | ||||
| Группа:   А-01-22 | ||||
| Проверил:  | ||||
| 
 | ||||
| Примечание: работа выполнялась на Windows. | ||||
| 
 | ||||
| 1) Создал на рабочем столе каталог lab02.02 и запустил в нем Git Bash, приглашение: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 | ||||
| $ | ||||
| 
 | ||||
| 2) Просмотрел файлы в рабочем каталоге можно командой "ls" - пусто: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 | ||||
| $ ls | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 | ||||
| $ | ||||
| 
 | ||||
| 3) Создал каталоги Алисы и Боба, создал каталог "project", | ||||
| изучил команду "cd" в процессе: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 | ||||
| $ mkdir alice | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 | ||||
| $ mkdir bob | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02 | ||||
| $ cd alice | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice | ||||
| $ mkdir project | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice | ||||
| $ cd project | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project | ||||
| $ cd .. | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice | ||||
| $ cd project | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project | ||||
| $ | ||||
| 
 | ||||
| 4) Инициализировал репозитарий, изменил имя ветки и через команду ls -A увидел его наличие: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project | ||||
| $ git init | ||||
| Initialized empty Git repository in C:/Users/Даниил/Desktop/lab02.02/alice/project/ | ||||
| .git/ | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (master) | ||||
| $ ls -A | ||||
| .git/ | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (master) | ||||
| $ git branch -m master main | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ | ||||
| 
 | ||||
| 5) Настроил репозитарий, чтобы коммиты были от моего имени: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main)  | ||||
| $ git config user.name 'Alice (TroyanovDS)' | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git config user.email 'TroyanovDS@mpei.ru' | ||||
| 
 | ||||
| 6) Запустил CodeBlocks и создал проект в репозитарии Алисы: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git status | ||||
| On branch main  | ||||
| 
 | ||||
| No commits yet (нет файлов для коммита) | ||||
| 
 | ||||
| Untracked files: (В рабочей копии замечен файл, но Git его не отслеживает.) | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         main.cpp | ||||
|         main.exe | ||||
|         main.o                                                                   | ||||
|         project.cbp | ||||
|         project.layout | ||||
| 
 | ||||
| nothing added to commit but untracked files present (use "git add" to track) | ||||
| 
 | ||||
| 7) Заношу файл main.cpp под Git | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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     (Git начал отслеживать файл) | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         main.exe | ||||
|         main.o | ||||
|         project.cbp | ||||
|         project.layout //Неотслеживаемые файлы | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 8) Закомитил файл main.cpp и короткое сообщение (в одинарных или двойных ковычках):  | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -m 'code: заготовка программы' | ||||
| [main (root-commit)  36b4362 //хэш коммита] code: заготовка программы | ||||
|  1 file changed, 17 insertions(+) //Сводная статистика изменений | ||||
|  create mode 100644 main.cpp                 | ||||
| 
 | ||||
| 9) Добавил файл project.cbp в индекс, закомител его с комментарием: (Замечание: Во время выполнения задания первая моя попытка привела к вылету репозитария и все полетело, поэтому я начал заново все делать и забыл закоммитить файл project.cbp. В отчете я предоставил коммит этого файла при первой попытке выполнения задания. Прошу прощения за предоставленные неудобства) | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R 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 n | ||||
| ext time Git touches it | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -m 'build: добавлен файл проекта' | ||||
| [main 216d951] build: добавлен файл проекта | ||||
|  1 file changed, 31 insertions(+) | ||||
|  create mode 100644 project.cbp | ||||
| 
 | ||||
| 10) Использование команды $ git status после изменения файла main.cpp:  | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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  //файл, который модифицирован | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         bin/ | ||||
|         main.exe | ||||
|         main.o | ||||
|         obj/ | ||||
|         project.layout //Неотслеживаемые файлы | ||||
| 
 | ||||
| no changes added to commit (use "git add" and/or "git commit -a") | ||||
| 
 | ||||
| При сравнении случаев, когда добавлялся новый файл, и когда изменился существующий, можно заметить, что  | ||||
| в случае, когда файл был изменен после добавления в индекс, изменения необходимо закомитить отдельно. | ||||
| 
 | ||||
| 11) 1 способ закомитить изменения: | ||||
| 
 | ||||
| Выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -m "code:  code: Ввод переменных" | ||||
| [main 50bff83] code:  code: Ввод переменных | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| 12) 2 способ закомитить изменения: | ||||
| 
 | ||||
| Добавить в индекс все изменения, затем сделать коммит: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git add -u | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -m "code: Вывод суммы" | ||||
| [main 974994b] code: Вывод суммы | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
|   | ||||
| 13) 3 способ закомитить изенения: | ||||
| 
 | ||||
| Добавить все изменения в индекс и сделать коммит в один шаг: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -a -m "code: Вывод разницы и суммы" | ||||
| [main 7835a20] code: Вывод разницы и суммы | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| Удобен когда коммит меняет уже существующий файл. | ||||
| 
 | ||||
| 14) Игнорирование файлов: | ||||
| 
 | ||||
| Создаем файл в codeblocks с подпись /bin, /obj и /project.layout в разных строках | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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:   project.cbp | ||||
| 
 | ||||
| Untracked files: | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         .gitignore | ||||
|         main.o | ||||
|          | ||||
| 
 | ||||
| no changes added to commit (use "git add" and/or "git commit -a") | ||||
| 
 | ||||
| Как можно заметить, бинарный файлы bin, obj и project.layout пропали. | ||||
| 
 | ||||
| Закомитим файл игнорирования: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git add .gitignore | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -m "git: "файл игнорирования" | ||||
| [main 8f9bb60] git: файл игнорирования | ||||
|  Date: Mon Mar 13 10:57:03 2023 +0300 | ||||
|  1 file changed, 2 insertions(+) | ||||
|  create mode 100644 .gitignore | ||||
| 
 | ||||
| 15) Просмотрел коммиты репозитария: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --stat | ||||
| commit 8f9bb60ac01d4739d072e22a8e6870aa6302d714 (HEAD -> main) | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sun Mar 19 16:46:41 2023 +0300 | ||||
| 
 | ||||
|     git: Файл игнорирования | ||||
| 
 | ||||
|  .gitignore | 3 +++ | ||||
|  1 file changed, 3 insertions(+) | ||||
| 
 | ||||
| commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sun Mar 19 16:37:15 2023 +0300 | ||||
| 
 | ||||
|     code: Вывод разницы и суммы | ||||
| 
 | ||||
|  main.cpp | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| commit 974994b8ee2887372bb22923deff0bf490304589 (хеш коммита) | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> (автор создания) | ||||
| Date:   Sun Mar 19 16:35:58 2023 +0300 (дата создания) | ||||
| 
 | ||||
|     code: Вывод суммы | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --oneline --decorate | ||||
| 8f9bb60(HEAD -> main) git: файл игнорирования | ||||
| 7835a20 code: Вывод разницы и суммы | ||||
| 974994b code: Вывод суммы | ||||
| 50bff83 code: Ввод переменных | ||||
| 36b4362 code: заготовка программы | ||||
| 
 | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * 8f9bb60 (HEAD -> main) git: Файл игнорирования | ||||
| * 7835a20 code: Вывод разницы и суммы | ||||
| * 974994b code: Вывод суммы | ||||
| * 50bff83 code: Ввод переменных | ||||
| * 36b4362 code: заготовка программы | ||||
| 
 | ||||
| Поиск коммита, затрагивающий project.cbp: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log -- project.cbp | ||||
| commit 216d951de10e0fe0f8ceb783c979a3ff5cf5b889 | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sat Mar 11 21:39:43 2023 +0300 | ||||
| 
 | ||||
|     build: добавлен файл проекта | ||||
| 
 | ||||
| Поиск коммита, название которого имеет тему "build:" : | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --grep "build: " | ||||
| commit 216d951de10e0fe0f8ceb783c979a3ff5cf5b889 | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sat Mar 11 21:39:43 2023 +0300 | ||||
| 
 | ||||
|     build: добавлен файл проекта | ||||
| 
 | ||||
| 16) Просмотр журнала: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git show HEAD | ||||
| commit 8f9bb60ac01d4739d072e22a8e6870aa6302d714 | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sun Mar 19 16:46:41 2023 +0300 | ||||
| 
 | ||||
|     git: Файл игнорирования | ||||
| 
 | ||||
| diff --git a/.gitignore b/.gitignore | ||||
| new file mode 100644 | ||||
| index 0000000..bdcd1e7 | ||||
| --- /dev/null | ||||
| +++ b/.gitignore | ||||
| @@ -0,0 +1,3 @@ | ||||
| +/bin | ||||
| +/obj | ||||
| +/project.layout | ||||
| \ No newline at end of file | ||||
| 
 | ||||
| 
 | ||||
| 17) Просмотр коммитов (предпоследнего коммита): | ||||
| 
 | ||||
| 1. Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git show HEAD~1 | ||||
| commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sun Mar 19 16:37:15 2023 +0300 | ||||
| 
 | ||||
|     code: Вывод разницы и суммы | ||||
| 
 | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index 690f74f..0007b54 100644 | ||||
| --- a/main.cpp | ||||
| +++ b/main.cpp | ||||
| @@ -8,5 +8,5 @@ int main() | ||||
|      int a, b; | ||||
|      cin >> a >> b; | ||||
| 
 | ||||
| -    cout << "A + B = " << a + b << '\n'; | ||||
| +    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; | ||||
|  } | ||||
| 
 | ||||
| 
 | ||||
| 2. Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git show main~1								 | ||||
| commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sun Mar 19 16:37:15 2023 +0300 | ||||
| 
 | ||||
|     code: Вывод разницы и суммы | ||||
| 
 | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index 690f74f..0007b54 100644 | ||||
| --- a/main.cpp | ||||
| +++ b/main.cpp | ||||
| @@ -8,5 +8,5 @@ int main() | ||||
|      int a, b; | ||||
|      cin >> a >> b; | ||||
| 
 | ||||
| -    cout << "A + B = " << a + b << '\n'; | ||||
| +    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; | ||||
|  } | ||||
| 
 | ||||
| 3. Просмотр предпоследнего коммита через указание его хэша | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git show 7835a20 | ||||
| commit 7835a20b2b1bcb15a4f88eefabb5d2b0bfbfed3b | ||||
| Author: Alice (TroyanovDS) <TroyanovDS@mpei.ru> | ||||
| Date:   Sun Mar 19 16:37:15 2023 +0300 | ||||
| 
 | ||||
|     code: Вывод разницы и суммы | ||||
| 
 | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index 690f74f..0007b54 100644 | ||||
| --- a/main.cpp | ||||
| +++ b/main.cpp | ||||
| @@ -8,5 +8,5 @@ int main() | ||||
|      int a, b; | ||||
|      cin >> a >> b; | ||||
| 
 | ||||
| -    cout << "A + B = " << a + b << '\n'; | ||||
| +    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; | ||||
|  } | ||||
| 
 | ||||
| 18) Просмотр изменений:  | ||||
| 
 | ||||
| Просмотрим изменения рабочей копии: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git diff | ||||
| diff --git a/.gitignore b/.gitignore | ||||
| deleted file mode 100644 | ||||
| index bdcd1e7..0000000 | ||||
| --- a/.gitignore | ||||
| +++ /dev/null | ||||
| @@ -1,3 +0,0 @@ | ||||
| -/bin (отсутствие строчки)  | ||||
| -/obj (отсутствие строчки) | ||||
| -/project.layout (отсутствие строчки) | ||||
| \ No newline at end of file | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index 0afddc3..0007b54 100644 | ||||
| --- a/main.cpp | ||||
| +++ b/main.cpp | ||||
| @@ -8,5 +8,5 @@ int main() | ||||
|      int a, b; | ||||
|      cin >> a >> b; | ||||
| 
 | ||||
| -    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A*B (отсутствие строчки) | ||||
| = " << a*b << '\n'; | ||||
| +    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; (добавление строчки) | ||||
|  } | ||||
| 
 | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git diff HEAD~2 | ||||
| diff --git a/.gitignore b/.gitignore | ||||
| new file mode 100644 | ||||
| index 0000000..bdcd1e7 | ||||
| --- /dev/null | ||||
| +++ b/.gitignore | ||||
| @@ -0,0 +1,3 @@ | ||||
| +/bin | ||||
| +/obj | ||||
| +/project.layout | ||||
| \ No newline at end of file | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index 690f74f..0007b54 100644 | ||||
| --- a/main.cpp | ||||
| +++ b/main.cpp | ||||
| @@ -8,5 +8,5 @@ int main() | ||||
|      int a, b; | ||||
|      cin >> a >> b; | ||||
| 
 | ||||
| -    cout << "A + B = " << a + b << '\n'; | ||||
| +    cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; | ||||
|  } | ||||
| 
 | ||||
| 
 | ||||
| Просмотр разницы изменений двух комитов  | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git diff 36b4362 7835a20 | ||||
| diff --git a/main.cpp b/main.cpp | ||||
| index b4392ec..0007b54 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'; | ||||
|  } | ||||
| 
 | ||||
| 19) Откат изменений | ||||
| 
 | ||||
| Во-первых, закомитил изменения рабочей копии (вывод произведения) | ||||
| 
 | ||||
| Далее делаем откат изменений к предыдущей версии | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git reset --hard HEAD~1 (HEAD~1 - коммит к которому откатывают изменения) | ||||
| HEAD is now at 8f9bb60 git: файл игнорирования | ||||
| 
 | ||||
| или добавим комментарий над main() и откатим этот файл к состоянию в последнем коммите  | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02/alice/project (main) | ||||
| $ git checkout HEAD -- main.cpp | ||||
| 
 | ||||
| 20) Создание пары ключей для доступа к серверу | ||||
| 
 | ||||
| ssh-keygen | ||||
| 
 | ||||
| Запустим агент, который работает в фоне и предоставляет ключи другим программам, в том числе git: | ||||
| 
 | ||||
| eval $(ssh-agent -s) | ||||
| 
 | ||||
| 
 | ||||
| Далее скопировать открытый ключ при помощи команды cat ~/.ssh/id_rsa.pub и добавить в список открытых ключей своей учетной записи. | ||||
| 
 | ||||
| 21)Создаем репозитарий под названием cs-lab02. | ||||
| 
 | ||||
| Далее клонируем проект в каталог Bob: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob | ||||
| $  git clone git@uit.mpei.ru:TroyanovDS/cs-lab02.git project | ||||
| 
 | ||||
| Далее переходим в каталог проекта (project): | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob | ||||
| $ cd project | ||||
| 
 | ||||
| После настраиваем git конфиг как с Alice: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git config user.name 'Bob (TroyanovDS)' | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git config user.email 'TroyanovDS@mpei.ru' | ||||
| 
 | ||||
| 22)Совместная работа над проектом без конфликтов правок: | ||||
| 
 | ||||
| «На машине Боба» добавляем в программу печать произведения чисел и делаем коммит: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git commit -m "code: Вывод произведения" | ||||
| [main 45cd4c1] code: Вывод произведения | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| Отправляем коммит на сервер: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git push | ||||
| 
 | ||||
| «На машине Алисы» выполнить загрузку изменений: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git fetch | ||||
| 
 | ||||
| Просмотрим историю всех веток: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * 45cd4c1 (origin/main) code: Вывод произведения | ||||
| * 8f9bb60 (HEAD -> main) git: Файл игнорирования | ||||
| * 7835a20 code: Вывод разницы и суммы | ||||
| * 974994b code: Вывод суммы | ||||
| * 50bff83 code: Ввод переменных | ||||
| * 36b4362 code: заготовка программы | ||||
| 
 | ||||
| Как можно видеть, ветка main отстает на один коммит от ветки origin/main. Продвинем ветку main к скачанной версии: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git pull --ff-only | ||||
| Updating 8f9bb60..45cd4c1 | ||||
| Fast-forward | ||||
|  main.cpp | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| 
 | ||||
| 23)Разрешение конфликтов при совместной работе | ||||
| 
 | ||||
| Дополним у Alice вывод максимума, у Bob - вывод минимума, попробуем сделать коммит и отправить его на сервер: | ||||
| 
 | ||||
| Для Alice: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git commit -m "code: Вывод максимума" | ||||
| [main 4384564] code: Вывод максимума | ||||
|  1 file changed, 9 insertions(+) | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git push | ||||
| Enumerating objects: 5, done. | ||||
| Counting objects: 100% (5/5), done. | ||||
| Delta compression using up to 8 threads | ||||
| Compressing objects: 100% (3/3), done. | ||||
| Writing objects: 100% (3/3), 398 bytes | 398.00 KiB/s, done. | ||||
| Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 | ||||
| remote: . Processing 1 references | ||||
| remote: Processed 1 references in total | ||||
| To uit.mpei.ru:TroyanovDS/cs-lab02.git | ||||
|    a41a855..4384564  main -> main | ||||
| 
 | ||||
| Для Bob: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git commit -m "code: Вывод минимума" | ||||
| [main 112ed02] code: Вывод минимума | ||||
|  1 file changed, 9 insertions(+) | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git push | ||||
| Enter passphrase for key '/c/Users/Даниил/.ssh/id_rsa': | ||||
| To uit.mpei.ru:TroyanovDS/cs-lab02.git | ||||
|  ! [rejected]        main -> main (fetch first) | ||||
| error: failed to push some refs to 'uit.mpei.ru:TroyanovDS/cs-lab02.git' | ||||
| hint: Updates were rejected because the remote contains work that you do | ||||
| hint: not have locally. This is usually caused by another repository pushing | ||||
| hint: to the same ref. You may want to first integrate the remote changes | ||||
| hint: (e.g., 'git pull ...') before pushing again. | ||||
| hint: See the 'Note about fast-forwards' in 'git push --help' for details. | ||||
| 
 | ||||
| Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите. | ||||
| 
 | ||||
| Загрузим коммит из удаленного хранилища и после отобразим историю всех веток: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git pull --ff-only | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * 112ed02 (HEAD -> main) code: Вывод минимума | ||||
| | * 4384564 (origin/main, origin/HEAD) code: Вывод максимума | ||||
| |/ | ||||
| * a41a855 code: Вывод деления | ||||
| * 45cd4c1 code: Вывод произведения | ||||
| * 8f9bb60 git: Файл игнорирования | ||||
| * 7835a20 code: Вывод разницы и суммы | ||||
| * 974994b code: Вывод суммы | ||||
| * 50bff83 code: Ввод переменных | ||||
| * 36b4362 code: заготовка программы | ||||
| 
 | ||||
| Можно видеть, что ветка main локального репозитария разошлась с веткой origin/main, то есть с веткой main на сервере. | ||||
| 
 | ||||
| Переместим коммит Bobа поверх коммита Алисы, то есть поверх origin/main: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git rebase origin/main | ||||
| Auto-merging main.cpp | ||||
| CONFLICT (content): Merge conflict in main.cpp | ||||
| error: could not apply 112ed02... 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". | ||||
| Could not apply 112ed02... code: Вывод минимума | ||||
| 
 | ||||
| Команда завершается с ошибкой, сообщающей о конфликте в main.cpp. | ||||
| 
 | ||||
| Проверим статус репозитария: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git status | ||||
| On branch main | ||||
| Your branch is ahead of 'origin/main' by 1 commit. //Ваша ветвь опережает 'origin/main' на 1 коммит. | ||||
|   (use "git push" to publish your local commits) | ||||
| 
 | ||||
| Untracked files: //Неотслеживаемые файлы | ||||
|   (use "git add <file>..." to include in what will be committed) | ||||
|         main.exe | ||||
|         main.o | ||||
| 
 | ||||
| nothing added to commit but untracked files present (use "git add" to track) | ||||
| 
 | ||||
| Теперь разрешим конфликт в CodeBlocks и последобавляем файл в индекс, продолжаем прерванную операцию rebase: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git rebase --continue | ||||
| 
 | ||||
| Проверяем, чтобы история хранилища была в надлежащем виде: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/bob/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * ef95f84 (HEAD -> main, origin/main, origin/HEAD) code: Вывод минимума | ||||
| * 4384564 code: Вывод максимума | ||||
| * a41a855 code: Вывод деления | ||||
| * 45cd4c1 code: Вывод произведения | ||||
| * 8f9bb60 git: Файл игнорирования | ||||
| * 7835a20 code: Вывод разницы и суммы | ||||
| * 974994b code: Вывод суммы | ||||
| * 50bff83 code: Ввод переменных | ||||
| * 36b4362 code: заготовка программы | ||||
| 
 | ||||
| 24) Использование веток | ||||
| 
 | ||||
| Создадим ветку double: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git branch double | ||||
| 
 | ||||
| Переключимся на нее: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git checkout double | ||||
| Switched to branch 'double' | ||||
| 
 | ||||
| Заменим тип переменных а и b на double и сделаем коммит: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double) | ||||
| $ git add main.cpp | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double) | ||||
| $ git commit -m "code: Изменение типа на double" | ||||
| [double b279aed] code: Изменение типа на double | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| Переключимся на ветку main: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (double) | ||||
| $ git checkout main | ||||
| Switched to branch 'main' | ||||
| Your branch is up to date with 'origin/main'. | ||||
| 
 | ||||
| 
 | ||||
| Синхронизируем ветку main «на машине Алисы» с сервером. | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/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), 347 bytes | 11.00 KiB/s, done. | ||||
| From uit.mpei.ru:TroyanovDS/cs-lab02 | ||||
|    4384564..ef95f84  main       -> origin/main | ||||
| 
 | ||||
| Продвинем ветку main к скачанной версии: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git pull --ff-only | ||||
| Updating 4384564..ef95f84 | ||||
| Fast-forward | ||||
|  main.cpp | 6 ++++-- | ||||
|  1 file changed, 4 insertions(+), 2 deletions(-) | ||||
| 
 | ||||
| Просмотрим историю всех веток. | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| * b279aed (double) code: Изменение типа на double | ||||
| | * ef95f84 (HEAD -> main, origin/main) code: Вывод минимума | ||||
| |/ | ||||
| * 4384564 code: Вывод максимума | ||||
| * a41a855 code: Вывод деления | ||||
| * 45cd4c1 code: Вывод произведения | ||||
| * 8f9bb60 git: Файл игнорирования | ||||
| * 7835a20 code: Вывод разницы и суммы | ||||
| * 974994b code: Вывод суммы | ||||
| * 50bff83 code: Ввод переменных | ||||
| * 36b4362 code: заготовка программы | ||||
| 
 | ||||
| Сольем ветки double и main: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git merge double | ||||
| Auto-merging main.cpp | ||||
| Merge made by the 'ort' strategy. | ||||
|  main.cpp | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| Просмотрим историю всех веток репозитария: | ||||
| 
 | ||||
| Даниил@DESKTOP-FBA8R1R MINGW64 ~/Desktop/lab02.02/alice/project (main) | ||||
| $ git log --oneline --decorate --all --graph | ||||
| *   91e8d65 (HEAD -> main) Merge branch 'double' | ||||
| |\ | ||||
| | * b279aed (double) code: Изменение типа на double | ||||
| * | ef95f84 (origin/main) code: Вывод минимума | ||||
| |/ | ||||
| * 4384564 code: Вывод максимума | ||||
| * a41a855 code: Вывод деления | ||||
| * 45cd4c1 code: Вывод произведения | ||||
| * 8f9bb60 git: Файл игнорирования | ||||
| * 7835a20 code: Вывод разницы и суммы | ||||
| * 974994b code: Вывод суммы | ||||
| * 50bff83 code: Ввод переменных | ||||
| * 36b4362 code: заготовка программы | ||||
| 
 | ||||
| В результате слияния образуется специальный новый коммит (merge commit). | ||||
| @ -0,0 +1,34 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | ||||
| <CodeBlocks_project_file> | ||||
| 	<FileVersion major="1" minor="6" /> | ||||
| 	<Project> | ||||
| 		<Option title="project" /> | ||||
| 		<Option pch_mode="2" /> | ||||
| 		<Option compiler="gcc" /> | ||||
| 		<Build> | ||||
| 			<Target title="Release"> | ||||
| 				<Option output="bin/Release/project" prefix_auto="1" extension_auto="1" /> | ||||
| 				<Option object_output="obj/Release/" /> | ||||
| 				<Option type="1" /> | ||||
| 				<Option compiler="gcc" /> | ||||
| 				<Compiler> | ||||
| 					<Add option="-O2" /> | ||||
| 				</Compiler> | ||||
| 				<Linker> | ||||
| 					<Add option="-s" /> | ||||
| 				</Linker> | ||||
| 			</Target> | ||||
| 		</Build> | ||||
| 		<Compiler> | ||||
| 			<Add option="-Wall" /> | ||||
| 			<Add option="-fexceptions" /> | ||||
| 		</Compiler> | ||||
| 		<Unit filename="Untitled1.c"> | ||||
| 			<Option compilerVar="CC" /> | ||||
| 		</Unit> | ||||
| 		<Unit filename="main.cpp" /> | ||||
| 		<Extensions> | ||||
| 			<lib_finder disable_auto="1" /> | ||||
| 		</Extensions> | ||||
| 	</Project> | ||||
| </CodeBlocks_project_file> | ||||
					Загрузка…
					
					
				
		Ссылка в новой задаче
	
	 Alice (TroyanovDS)
						Alice (TroyanovDS)