Создадим папку alice mkdir alice Создадим папку bob mkdir bob Перейдем в папку alice cd alice В папке alice создадим папку project mkdir project Перейдем в папку project cd project Перейдем из папки project на уровень выше - в папку alice cd .. Перейдем в папку project cd project Инициализируем репозитарий в текущем каталоге git init Настроим репозитарий Алисы, чтобы комитить от своего имени git config user.name 'VolkovAA' git config user.email 'VolkovAlA@mpei.ru' Запускаем Visual Studio Code и создаем проект в репозитарии Алисы, собираем его. Просмотрим состояние рабочей копии git status Терминал: aleksejvolkov@MacBook-Pro-Aleksej lab02 % mkdir alice aleksejvolkov@MacBook-Pro-Aleksej lab02 % mkdir bob aleksejvolkov@MacBook-Pro-Aleksej lab02 % cd alice aleksejvolkov@MacBook-Pro-Aleksej alice % mkdir project aleksejvolkov@MacBook-Pro-Aleksej alice % cd project aleksejvolkov@MacBook-Pro-Aleksej project % cd .. aleksejvolkov@MacBook-Pro-Aleksej alice % cd project aleksejvolkov@MacBook-Pro-Aleksej project % git init Initialized empty Git repository in /Users/aleksejvolkov/Desktop/lab02/alice/project/.git/ aleksejvolkov@MacBook-Pro-Aleksej project % git config user.name 'VolkovAA' aleksejvolkov@MacBook-Pro-Aleksej project % git config user.email 'VokovAlA@mpei.ru' aleksejvolkov@MacBook-Pro-Aleksej project % git status On branch master//на ветке мастер No commits yet//нет коммитов Untracked files: //неотслеживаемые файлы (use "git add ..." to include in what will be committed) main.cpp project.cbp nothing added to commit but untracked files present (use "git add" to track)//ничего не добавленно чтобы комитить, присутствуют неотслеживаемые файлы Добавим файл main.cpp в отслеживаемые (в индекс): git add main.cpp Просмотрим состояние рабочей копии git status aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp aleksejvolkov@MacBook-Pro-Aleksej project % git status On branch master 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) project.cbp project.layout//потом кинем в игнор Выполним коммит с файлом main.cpp и коротким сообщением: git commit -m 'code: заготовка программы' Добавим файл project.cbp в отслеживаемые (в индекс): git add project.cbp Выполним коммит с файлом main.cpp и темой build: git commit -m 'build: добавлен файл проекта' Заменим тело функции main() на ввод двух чисел: cout << "Enter A and B: "; int a, b; cin >> a >> b; Просмотрим состояние рабочей копии git status aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m 'code: заготовка программы' [master (root-commit) 4280c8f] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp aleksejvolkov@MacBook-Pro-Aleksej project % git add project.cbp aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m 'build:добавлен файл проекта' [master 46c0a2b] build:добавлен файл проекта 1 file changed, 42 insertions(+) create mode 100644 project.cbp int main() { cout << "Enter A and B: "; int a, b; cin >> a >> b; return 0; } aleksejvolkov@MacBook-Pro-Aleksej project % git status On branch master Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: main.cpp//модификация main.cpp Untracked files: (use "git add ..." to include in what will be committed) .vscode/ //позже в игнор project.layout //позже в игнор no changes added to commit (use "git add" and/or "git commit -a") Выберем файл, изменение которого должно войти в коммит git add main.cpp Сделаем коммит git commit -m "Ввод двух чисел" В тело функции main() добавим cout << "A + B = " << a + b << '\n'; Добавим в индекс все изменения git add -u Сделаем коммит git commit -m "Вывод суммы" Изменим тело функции main(), добавим << "A - B = " << a - b << '\n'; Добавим все изменения в индекс и сделаем коммит в один шаг git commit -a -m "Вывод суммы и разности" Создадим в VisualStudio Code новый файл и запишем в него строку: /.vscode/ Сохраним файл в корне репозитарий под именем .gitignore Просмотрим состояние рабочей копии git status Каталог .vscode/ не отображается В файл, где записан /.vscode, на следующей строчке запишем /project.layout Сохраним изменения Просмотрим состояние рабочей копии git status Каталог project.layout не отображается Выберем файл, изменение которого должно войти в коммит git add .gitignore Сделаем коммит с темой git commit -m "git" Просмотрим журнал репозитария git log -stat cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m 'Ввод двух чисел' [master 11bf5ac] Ввод двух чисел 1 file changed, 4 insertions(+), 1 deletion(-) aleksejvolkov@MacBook-Pro-Aleksej project % git add -u aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m "Вывод суммы" [master ac76e36] Вывод суммы 1 file changed, 1 insertion(+), 1 deletion(-) aleksejvolkov@MacBook-Pro-Aleksej project % git commit -a -m "Вывод суммы и разности" [master 478934b] Вывод суммы и разности 1 file changed, 1 insertion(+), 1 deletion(-) aleksejvolkov@MacBook-Pro-Aleksej project % git status On branch master Untracked files: (use "git add ..." to include in what will be committed) .gitignore project.layout nothing added to commit but untracked files present (use "git add" to track) aleksejvolkov@MacBook-Pro-Aleksej project % git status On branch master 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) aleksejvolkov@MacBook-Pro-Aleksej project % git add .gitignore aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m 'git' [master d604682] git 1 file changed, 2 insertions(+) create mode 100644 .gitignore aleksejvolkov@MacBook-Pro-Aleksej project % git log --stat commit d604682c3d7fd438dd38936e75b85027b87674fb (HEAD -> master) Author: VolkovAA Date: Mon May 15 13:01:56 2023 +0300 git .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 478934b9e4c8179d79bb2eb3c892417597bee756 Author: VolkovAA Date: Mon May 15 12:29:07 2023 +0300 Вывод суммы и разности main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ac76e36c12e9394a6b88db1d70b3f9c0fc7e03ec Author: VolkovAA Date: Mon May 15 12:27:49 2023 +0300 Вывод суммы :...skipping... commit d604682c3d7fd438dd38936e75b85027b87674fb (HEAD -> master) Author: VolkovAA Date: Mon May 15 13:01:56 2023 +0300 git .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 478934b9e4c8179d79bb2eb3c892417597bee756 Author: VolkovAA Date: Mon May 15 12:29:07 2023 +0300 Вывод суммы и разности main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ac76e36c12e9394a6b88db1d70b3f9c0fc7e03ec Author: VolkovAA Date: Mon May 15 12:27:49 2023 +0300 Вывод суммы main.cpp | 2 +- :...skipping... commit d604682c3d7fd438dd38936e75b85027b87674fb (HEAD -> master) Author: VolkovAA Date: Mon May 15 13:01:56 2023 +0300 git .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 478934b9e4c8179d79bb2eb3c892417597bee756 Author: VolkovAA Date: Mon May 15 12:29:07 2023 +0300 Вывод суммы и разности main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ac76e36c12e9394a6b88db1d70b3f9c0fc7e03ec Author: VolkovAA Date: Mon May 15 12:27:49 2023 +0300 Вывод суммы main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 11bf5acd396a3b0b90d6032a1b6392be128e1eff Author: VolkovAA Date: Mon May 15 12:26:50 2023 +0300 Ввод двух чисел main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 46c0a2ba1a000f0392d26d271213cb26b5693974 Author: VolkovAA Date: Mon May 15 12:16:05 2023 +0300 build:добавлен файл проекта project.cbp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) commit 4280c8f4e348d08f1c39858432433c67dd3cbde8 Author: VolkovAA Date: Mon May 15 12:13:32 2023 +0300 code: заготовка программы main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) Просмотрим коммиты (компактно) git log --oneline --decorate Просмотрим коммиты (компактно) для всех веток git log --oneline --decorate --all --graph Найдем коммиты по теме build git log --grep 'build' Найдем коммиты, затрагивающие project.cbp git log -- project.cbp Просмотрим предпоследний коммит 1 способом git show HEAD~1 Это компактные коммиты: aleksejvolkov@MacBook-Pro-Aleksej project % git log --oneline -decorate d604682 (HEAD -> master) git 478934b Вывод суммы и разности ac76e36 Вывод суммы 11bf5ac Ввод двух чисел 46c0a2b build:добавлен файл проекта 4280c8f code: заготовка программы Коммиты для всех веток: aleksejvolkov@MacBook-Pro-Aleksej project % git log --oneline --decorate --all --graph * d604682 (HEAD -> master) git * 478934b Вывод суммы и разности * ac76e36 Вывод суммы * 11bf5ac Ввод двух чисел * 46c0a2b build:добавлен файл проекта * 4280c8f code: заготовка программы Коммит по теме build: aleksejvolkov@MacBook-Pro-Aleksej project % git log --grep "build" commit 46c0a2ba1a000f0392d26d271213cb26b5693974 Author: VolkovAA Date: Mon May 15 12:16:05 2023 +0300 build:добавлен файл проекта Коммит затрагивающий project.cbp: aleksejvolkov@MacBook-Pro-Aleksej project % git log -- project.cbp commit 46c0a2ba1a000f0392d26d271213cb26b5693974 Author: VolkovAA Date: Mon May 15 12:16:05 2023 +0300 build:добавлен файл проекта Просмотрим предпоследний коммит 1 способом: aleksejvolkov@MacBook-Pro-Aleksej project % git show HEAD~1 commit 478934b9e4c8179d79bb2eb3c892417597bee756 Author: VolkovAA Date: Mon May 15 12:29:07 2023 +0300 Вывод суммы и разности diff --git a/main.cpp b/main.cpp index 1015f28..c166ede 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +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'; return 0; } Последний коммит 2 способом: aleksejvolkov@MacBook-Pro-Aleksej project % git show master HEAD~1 commit d604682c3d7fd438dd38936e75b85027b87674fb (HEAD -> master) Author: VolkovAA Date: Mon May 15 13:01:56 2023 +0300 git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9938627 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.vscode/ +/project.layout \ No newline at end of file commit 478934b9e4c8179d79bb2eb3c892417597bee756 Author: VolkovAA Date: Mon May 15 12:29:07 2023 +0300 Вывод суммы и разности diff --git a/main.cpp b/main.cpp index 1015f28..c166ede 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +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'; return 0; } Коммит 478934b третьим способом: aleksejvolkov@MacBook-Pro-Aleksej project % git show 478934b commit 478934b9e4c8179d79bb2eb3c892417597bee756 Author: VolkovAA Date: Mon May 15 12:29:07 2023 +0300 Вывод суммы и разности diff --git a/main.cpp b/main.cpp index 1015f28..c166ede 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +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'; return 0; } Внесем изменения в main.cpp: добавим << "A * B = " << a * b << '\n'; Просмотрим изменения в рабочей копии: git diff << "A * B = " << a * b << '\n'; aleksejvolkov@MacBook-Pro-Aleksej project % git diff diff --git a/main.cpp b/main.cpp index c166ede..36482bb 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +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'; + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << "A * B = " << a * b << '\n'; return 0; } Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности git diff HEAD~5 HEAD~1 aleksejvolkov@MacBook-Pro-Aleksej project % git diff HEAD~5 HEAD~1 diff --git a/main.cpp b/main.cpp index b4392ec..c166ede 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,9 @@ 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..a3c2c72 --- /dev/null +++ b/project.cbp @@ -0,0 +1,42 @@ + + + + + + Выберем файл, изменение которого должно войти в коммит git add main.cpp Сделаем коммит с темой git git commit -m "Вывод произведения" Отменим последний коммит git reset --hard HEAD~1 Добавим над функцией main() комментарий: //что-то что нужно убрать Уберем изменения в main.cpp, откатив этот файл к состоянию в последнем коммите (HEAD): git checkout HEAD -- main.cpp // что-то что нужно убрать aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m "Вывод произведения" [master bb67937] Вывод произведения 1 file changed, 1 insertion(+), 1 deletion(-) aleksejvolkov@MacBook-Pro-Aleksej project % git reset --hard HEAD~1 HEAD is now at d604682 git aleksejvolkov@MacBook-Pro-Aleksej project % git checkout HEAD -- main.cpp //что-то что нужно убрать - убралось! Далее регестрируемся на http://uit.mpei.ru/ и делаем ключ Запускаем агента, который работает в фоне и вводит ключ к другим программам Добавляем ключ на сайт 
Создаем репозиторий cs-lab02 настраиваем связь с удаленным хранилищем Клонируем проект в боба aleksejvolkov@MacBook-Pro-Aleksej bob % git clone git@uit.mpei.ru:VolkovAA/cs-lab02.git project Cloning into 'project'... Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': 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. Переходим в bob>>project cd project Инициализируем репозитарий в текущем каталоге git init Настроим репозитарий Боба, чтобы коммиты были от его имени git config user.name 'VolkovAA' git config user.email 'VolkovAlA@mpei.ru' aleksejvolkov@MacBook-Pro-Aleksej project % git init Reinitialized existing Git repository in /Users/aleksejvolkov/Desktop/lab02/bob/project/.git/ aleksejvolkov@MacBook-Pro-Aleksej project % git config user.name 'VolkovAA' aleksejvolkov@MacBook-Pro-Aleksej project % git config user.email 'VolkovAlA@mpei.ru' "На машине Боба" добавим в программу печать произведения чисел Выберем файл, изменение которого должно войти в коммит git add main.cpp Сделаем коммит git commit -m "Вывод произведения" Просмотрим последний коммит git show HEAD << "A * B =" << a * b << '\n' aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m 'Вывод произведения' On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: modified: main.cpp no changes added to commit aleksejvolkov@MacBook-Pro-Aleksej project % git show HEAD commit d604682c3d7fd438dd38936e75b85027b87674fb (HEAD -> master, origin/master, origin/HEAD) Author: VolkovAA Date: Mon May 15 13:01:56 2023 +0300 git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9938627 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.vscode/ +/project.layout \ No newline at end of file Отправим коммит на GitHub git push aleksejvolkov@MacBook-Pro-Aleksej project % git push Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Everything up-to-date "На машине Алисы" выполним загрузку изменений git fetch Просмотрим историю всех веток git log --oneline --decorate --all --graph aleksejvolkov@MacBook-Pro-Aleksej project % git fetch Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': * d604682 (HEAD -> master, origin/master) git * 478934b Вывод суммы и разности * ac76e36 Вывод суммы * 11bf5ac Ввод двух чисел * 46c0a2b build:добавлен файл проекта • 4280c8f code: заготовка программы Продвинем ветку master к скачанной версии aleksejvolkov@MacBook-Pro-Aleksej project % git pull --ff-only Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Already up to date. "От имени Алисы" добавим в программу печать деления << "A / B = " << a / b << '\n' Выберем файл, изменение которого должно войти в коммит aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp Сделаем коммит "Вывод деления" aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m "Вывод деления" [master ec4c6d6] Вывод деления 1 file changed, 1 insertion(+), 1 deletion(-) Просмотрим последний коммит git show HEAD aleksejvolkov@MacBook-Pro-Aleksej project % git show HEAD commit ec4c6d645bf0ca14f6e1538557d0ceddb222ac1a (HEAD -> master) Author: VolkovAA Date: Sun May 28 19:58:49 2023 +0300 Вывод деления diff --git a/main.cpp b/main.cpp index c166ede..623b5c6 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +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'; + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A / B = " << a / b << '\n'; return 0; } Отправим коммит на GitHub aleksejvolkov@MacBook-Pro-Aleksej project % git push Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Counting objects: 3, done. Delta compression using up to 10 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 402 bytes | 402.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:VolkovAA/cs-lab02.git d604682..ec4c6d6 master -> master "На машине Боба" выполним загрузку изменений aleksejvolkov@MacBook-Pro-Aleksej project % git fetch Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': 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), done. From uit.mpei.ru:VolkovAA/cs-lab02 d604682..ec4c6d6 master -> origin/master Просмотрим историю всех веток aleksejvolkov@MacBook-Pro-Aleksej project % git log --oneline --decorate --all --graph * ec4c6d6 (HEAD -> master, origin/master) Вывод деления * d604682 git * 478934b Вывод суммы и разности * ac76e36 Вывод суммы * 11bf5ac Ввод двух чисел * 46c0a2b build:добавлен файл проекта • 4280c8f code: заготовка программы Продвинем ветку master к скачанной версии aleksejvolkov@MacBook-Pro-Aleksej project % git pull --ff-only Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Already up to date. "На машине Алисы" дополним программу печатью максимума Выберем файл, изменение которого должно войти в коммит git add main.cpp f (a > b) cout << "max = " << a << '\n'; else cout << "max = " << b << '\n'; aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp Сделаем коммит "Вывод максимума" aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m "Вывод максимума" [master 38c17ce] Вывод максимума 1 file changed, 1 insertion(+) Просмотрим последний коммит aleksejvolkov@MacBook-Pro-Aleksej project % git show HEAD commit 38c17cebeb006f568a4fcab781a52af21fcf97e1 (HEAD -> master) Author: VolkovAA Date: Sun May 28 20:44:40 2023 +0300 Вывод максимума diff --git a/main.cpp b/main.cpp index 623b5c6..c26c435 100644 --- a/main.cpp +++ b/main.cpp @@ -8,5 +8,6 @@ int main() int a, b; cin >> a >> b; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A / B = " << a / b << '\n'; + if (a > b) cout << "max = " << a << '\n'; else cout << "max = " << b << '\n'; return 0; } Отправим коммит на GitHub aleksejvolkov@MacBook-Pro-Aleksej project % git push Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Counting objects: 3, done. Delta compression using up to 10 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 425 bytes | 425.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:VolkovAA/cs-lab02.git ec4c6d6..38c17ce master -> master "На машине Боба" дополним программу печатью минимума if (a > b) cout << "min = " << b << '\n'; else cout << "min = " << a << '\n'; Выберем файл, изменение которого должно войти в коммит aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp Сделаем коммит "Вывод минимума" aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m "Вывод минимума" [master 6b45e05] Вывод минимума 1 file changed, 3 insertions(+), 1 deletion(-) Просмотрим последний коммит aleksejvolkov@MacBook-Pro-Aleksej project % git show HEAD commit 6b45e058a2317111af71c313b5b2520899115978 (HEAD -> master) Author: VolkovAA <'VolkovAlA@mpei.ru'> Date: Sun May 28 21:25:51 2023 +0300 Вывод минимума diff --git a/main.cpp b/main.cpp index c166ede..8a6d9a1 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,8 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n'; + cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A * B =" << a * b << '\n'; + if (a > b) cout << "min = " << b << '\n'; else cout << "min = " << a << '\n'; return 0; } + Попытаемся отправить коммит на GitHub aleksejvolkov@MacBook-Pro-Aleksej project % git push Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': To uit.mpei.ru:VolkovAA/cs-lab02.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@uit.mpei.ru:VolkovAA/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. Удаленный репозитарий не принимает изменений: коммит Боба основан не на последнем существующем коммите "На машине Боба" выполним загрузку изменений aleksejvolkov@MacBook-Pro-Aleksej project % git fetch Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': 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), done. From uit.mpei.ru:VolkovAA/cs-lab02 ec4c6d6..38c17ce master -> origin/master Просмотрим историю всех веток aleksejvolkov@MacBook-Pro-Aleksej project % git log --oneline --decorate --all --graph * 6b45e05 (HEAD -> master) Вывод минимума | * 38c17ce (origin/master, origin/HEAD) Вывод максимума | * ec4c6d6 Вывод деления |/ * d604682 git * 478934b Вывод суммы и разности * ac76e36 Вывод суммы * 11bf5ac Ввод двух чисел * 46c0a2b build:добавлен файл проекта • 4280c8f code: заготовка программы Переместим коммит Боба поверх коммита Алисы, то есть поверх origin/master aleksejvolkov@MacBook-Pro-Aleksej project % git rebase origin/master First, rewinding head to replay your work on top of it... Applying: Вывод минимума Using index info to reconstruct a base tree... M main.cpp .git/rebase-apply/patch:14: new blank line at EOF. + warning: 1 line adds whitespace errors. Falling back to patching base and 3-way merge... Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp error: Failed to merge in the changes. Patch failed at 0001 Вывод минимума The copy of the patch that failed is found in: .git/rebase-apply/patch Resolve all conflicts manually, mark them as resolved with "git add/rm ", then run "git rebase --continue". You can instead skip this commit: run "git rebase --skip". To abort and get back to the state before "git rebase", run "git rebase --abort". <<<<<<< HEAD if (a > b) cout << "max = " << a << '\n'; else cout << "max = " << b << '\n'; ======= if (a > b) cout << "min = " << b << '\n'; else cout << "min = " << a << '\n'; >>>>>>> Вывод минимума Удалим метки конфликта: <<<< ..., ... >>>> и ===== Добавим файл в индекс aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp Продолжим прерванную операцию rebase aleksejvolkov@MacBook-Pro-Aleksej project % git rebase --continue Applying: Вывод минимума { cout << "Enter A and B: "; int a, b; cin >> a >> b; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A / B = " << a / b << '\n'; if (a > b) cout << "max = " << a << '\n'; else cout << "max = " << b << '\n'; cout << "A + B = " << a + b << '\n' << "A - B = " << a - b << '\n' << "A * B =" << a * b << '\n'; if (a > b) cout << "min = " << b << '\n'; else cout << "min = " << a << '\n'; return 0; } Отправим изменения на GitHub aleksejvolkov@MacBook-Pro-Aleksej project % git push Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Counting objects: 3, done. Delta compression using up to 10 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 451 bytes | 451.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: . Processing 1 references remote: Processed 1 references in total To uit.mpei.ru:VolkovAA/cs-lab02.git 38c17ce..d6856bb master -> master "На машине Алисы cоздадим ветку double aleksejvolkov@MacBook-Pro-Aleksej project % git branch double Переключимся на нее git checkout double aleksejvolkov@MacBook-Pro-Aleksej project % git checkout double Switched to branch 'double' Заменим тип переменных a и b на double double a, b; Выберем файл, изменение которого должно войти в коммит git add main.cpp aleksejvolkov@MacBook-Pro-Aleksej project % git add main.cpp Сделаем коммит aleksejvolkov@MacBook-Pro-Aleksej project % git commit -m "double" [double 4f49138] double 1 file changed, 1 insertion(+), 1 deletion(-) aleksejvolkov@MacBook-Pro-Aleksej project % Переключимся на ветку master aleksejvolkov@MacBook-Pro-Aleksej project % git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. "На машинеAlice" выполним загрузку изменений git fetch aleksejvolkov@MacBook-Pro-Aleksej project % git fetch Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': 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), done. From uit.mpei.ru:VolkovAA/cs-lab02 38c17ce..d6856bb master -> origin/master Продвинем ветку master к скачанной версии aleksejvolkov@MacBook-Pro-Aleksej project % git pull --ff-only Enter passphrase for key '/Users/aleksejvolkov/.ssh/id_rsa': Updating 38c17ce..d6856bb Fast-forward main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) Просмотрим историю всех веток aleksejvolkov@MacBook-Pro-Aleksej project % git log --oneline --decorate --all --graph * 4f49138 (double) double | * d6856bb (HEAD -> master, origin/master) Вывод минимума |/ * 38c17ce Вывод максимума * ec4c6d6 Вывод деления * d604682 git * 478934b Вывод суммы и разности * ac76e36 Вывод суммы * 11bf5ac Ввод двух чисел * 46c0a2b build:добавлен файл проекта • 4280c8f code: заготовка программы Сольем ветку double в master git merge double aleksejvolkov@MacBook-Pro-Aleksej project % git merge double В результате слияния образуется специальный новый коммит (merge commit), к которому Git предлагает написать сообщение в редакторе Просмотрим историю всех веток git log --oneline --decorate --all -graph aleksejvolkov@MacBook-Pro-Aleksej project % git log --oneline --decorate --all --graph * 4f49138 (double) double | * d6856bb (HEAD -> master, origin/master) Вывод минимума |/ * 38c17ce Вывод максимума * ec4c6d6 Вывод деления * d604682 git * 478934b Вывод суммы и разности * ac76e36 Вывод суммы * 11bf5ac Ввод двух чисел * 46c0a2b build:добавлен файл проекта * 4280c8f code: заготовка программы