Создаем папку alice: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02 $ mkdir alice Создаем папку bob: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02 $ mkdir bob заходим в папку alice: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02 $ cd alice Создаем папку project: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice $ mkdir project заходим в папку project: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice $ cd project выходим из данной папки: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project $ cd .. заходим в папку project: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice $ cd project Инициализируем репозитарий в текущем каталоге (project): Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project $ git init Initialized empty Git repository in C:/Users/Texas/Desktop/lab02/alice/project/.git/ Настроим репозитарий Алисы, чтобы коммиты были от ее имени: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git config user.name 'Alice (LevshenkoDI)' Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git config user.email 'aglowtexas38@gmail.com' Запустим CodeBlocks и создадим проект в репозитарии Алисы Вернувшись в Git Bash, просмотрим состояние рабочей копии: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git status On branch master No commits yet Untracked files: (use "git add ..." to include in what will be committed) bin/ создан codeblocks при сборке main.cpp код программы obj/ создан codeblocks при сборке project.cbp файл проекта nothing added to commit but untracked files present (use "git add" to track) Добавим файл main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит. Так как этот файл ранее не отслеживался Git, то говорят, что файл «заносят под Git» или «начинают отслеживать» Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git add main.cpp Проверим теперь состояние рабочей копии: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ 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) bin/ obj/ project.cbp project.layout Файл main.cpp теперь отслеживается гитом Выполним коммит с файлом main.cpp и коротким сообщением: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git commit -m 'code: заготовка программы' [master (root-commit) 7ef0d03] code: заготовка программы 1 file changed, 9 insertions(+) create mode 100644 main.cpp Добавим файл project.cbp в индекс и сделаем коммит с ним, тема — build Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git add project.cbp warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git commit -m 'build: добавлен файл проекта' [master 0b1b029] build: добавлен файл проекта 1 file changed, 40 insertions(+) create mode 100644 project.cbp Поменяем имя ветки на main командой: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (master) $ git branch -m main Заменим тело функции main() на ввод двух чисел Просмотрим состояние репозитария: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: main.cpp Untracked files: (use "git add ..." to include in what will be committed) bin/ obj/ no changes added to commit (use "git add" and/or "git commit -a") Файл main.cpp теперь не новый, а измененный 3 способа создания коммита: Способ 1. Сначала выбрать файлы, изменения которых должны войти в коммит, затем сделать коммит: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add main.cpp Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: ввод двух чисел' [main 5bf9edf] code: ввод двух чисел 1 file changed, 3 insertions(+), 1 deletion(-) Добавим в программу вывод суммы a и b Способ 2. Добавить в индекс все изменения, затем сделать коммит: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add -u Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'code: вывод суммы' [main edb0229] code: вывод суммы 1 file changed, 1 insertion(+) Добавим в программу вывод разности a и b Способ 3. Добавить все изменения в индекс и сделать коммит в один шаг: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -a -m 'code: Вывод разности' [main 65528f7] code: Вывод разности 1 file changed, 2 insertions(+), 1 deletion(-) Укажем Git игнорировать присутствие каталога bin. Для этого создадим в CodeBlocks новый файл (File → New... → Empty) и запишем в него строку: /bin /obj Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git status On branch main Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: project.cbp Untracked files: (use "git add ..." to include in what will be committed) .gitignore project.depend no changes added to commit (use "git add" and/or "git commit -a") Выполнив git status, можно видеть, что каталог bin и obj не отображаются. Создадим коммит с .gitignore, тема — git: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git add .gitignore Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git commit -m 'git: Игнорирование файлов' [main 7e60d56] git: Игнорирование файлов 1 file changed, 2 insertions(+) create mode 100644 .gitignore Журнал репозитория: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --stat commit 7e60d5629fa4b2e1d1711de402485c6f8fc65f0e (HEAD -> main) Author: Alice (LevshenkoDI) Date: Sun Jun 4 11:11:05 2023 +0300 git: Игнорирование файлов .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:59:31 2023 +0300 code: Вывод разности main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit edb022963a6ee245da95872e42c47d7afa73e682 Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:56:17 2023 +0300 code: вывод суммы У последнего коммита 1 файл был изменен и 2 файла было вставленно Другие способы просмотра журнала: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate 7e60d56 (HEAD -> main) git: Игнорирование файлов 65528f7 code: Вывод разности edb0229 code: вывод суммы 5bf9edf code: ввод двух чисел 0b1b029 build: добавлен файл проекта 7ef0d03 code: заготовка программы Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --oneline --decorate --all --graph * 7e60d56 (HEAD -> main) git: Игнорирование файлов * 65528f7 code: Вывод разности * edb0229 code: вывод суммы * 5bf9edf code: ввод двух чисел * 0b1b029 build: добавлен файл проекта * 7ef0d03 code: заготовка программы Найдем коммиты по теме build, затем коммиты, затрагивающие project.cbp: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log --grep "build:" commit 0b1b029d257541c706ab0b077511b2e52e4e9bf7 Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:41:22 2023 +0300 build: добавлен файл проекта Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git log -- project.cbp commit 0b1b029d257541c706ab0b077511b2e52e4e9bf7 Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:41:22 2023 +0300 build: добавлен файл проекта Просмотрим последний коммит тремя эквивалентными способами 1 способ: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git show HEAD~1 commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:59:31 2023 +0300 code: Вывод разности diff --git a/main.cpp b/main.cpp index 6de6dd2..c4f6adb 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } 2 способ: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git show main HEAD~1 commit 7e60d5629fa4b2e1d1711de402485c6f8fc65f0e (HEAD -> main) Author: Alice (LevshenkoDI) Date: Sun Jun 4 11:11:05 2023 +0300 git: Игнорирование файлов diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c7473d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin +/obj commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:59:31 2023 +0300 code: Вывод разности diff --git a/main.cpp b/main.cpp index 6de6dd2..c4f6adb 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } 3 способ: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git show 65528f7f42db18fda52af5f597e56f5d1d8fa08a commit 65528f7f42db18fda52af5f597e56f5d1d8fa08a Author: Alice (LevshenkoDI) Date: Sun Jun 4 10:59:31 2023 +0300 code: Вывод разности diff --git a/main.cpp b/main.cpp index 6de6dd2..c4f6adb 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,7 @@ int main() cout << "Enter A and B: "; int a, b; cin >> a >> b; - cout << "A + B = " << a + b << '\n'; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } Добавим печать произведения чисел, но не станем пока делать коммит Просмотрим изменения в рабочей копии: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff warning: in the working copy of 'project.cbp', LF will be replaced by CRLF the next time Git touches it diff --git a/main.cpp b/main.cpp index c4f6adb..7a59eaf 100644 --- a/main.cpp +++ b/main.cpp @@ -8,6 +8,7 @@ int main() int a, b; cin >> a >> b; cout << "A + B = " << a + b << '\n' - << "A - B = " << a - b << '\n'; + << "A - B = " << a - b << '\n' + << "A * B = " << a * b << '\n'; return 0; } diff --git a/project.cbp b/project.cbp index 99bb702..34f06bc 100644 --- a/project.cbp +++ b/project.cbp @@ -32,6 +32,7 @@ + Просмотрим изменения между самым первым коммитом и коммитом, добавляющим вывод разности: Texas@DESKTOP-UH3DIP3 MINGW64 ~/Desktop/lab02/alice/project (main) $ git diff 7ef0d03 65528f7 diff --git a/main.cpp b/main.cpp index b4392ec..c4f6adb 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,10 @@ using namespace std; int main() { - cout << "Hello world!" << endl; + cout << "Enter A and B: "; + int a, b; + cin >> a >> b; + cout << "A + B = " << a + b << '\n' + << "A - B = " << a - b << '\n'; return 0; } diff --git a/project.cbp b/project.cbp new file mode 100644 index 0000000..99bb702 --- /dev/null +++ b/project.cbp @@ -0,0 +1,40 @@ + + + + +