ls - посмотреть файлы в каталоге mkdir <<>> - добавить папку с именем cd <<>> - перейти по каталогу на уровень ниже в папку cd .. - перейти по каталогу на уровень выше git init - инициализация репозитория git branch -m main - смена имени ветки на main ls -A - посмотреть скрытое в папке Git имеет три вида настроек: Системные (для всех пользователей), Пользовательские (для одного пользователя), Локальные (для отдельного репозитария) git config user.name 'Alice (DmitrievDK)' выбор имени git config user.email 'DmitriyevDK@mpei.ru' выбор почты git status - посмотреть состояние рабочей копии ------------- On branch main - смотрим ветку main No commits yet - еще нет коммитов Untracked files: - неотслеживаемые файлы (use "git add ..." to include in what will be committed) - используйте "git add ...", чтобы указать, что будет зафиксировано desktop.ini main.cpp project.cbp nothing added to commit but untracked files present (use "git add" to track) ------------ git add main.cpp - добавляем main.cpp в индекс, то есть в набор изменений, который войдет в очередной коммит ------------ $ git status On branch main 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) desktop.ini project.cbp ----------- code: заготовка программы — изменен код (а не документация, например) build: update CMake version — коммит относится к сборке обрабатывает пустой массив | fixes #1234 — исправляет ошибку № 1234 timer: учет високосных лет #4321 — доработка таймера по задаче № 4321 WIP: (work in progress). (который временный/незаконченный) правила описания коммитов несколько способов коммита 1. когда один файл git add main.cpp git commit -m "..." 2. когда много файлов git add -u git commit -m "..." 3. Добавить все изменения в индекс и сделать коммит в один шаг: git commit -a -m "..." git log - показать журнал репозитария ------ У команды git log много опций, например: git log --stat показывает файлы, измененные в коммитах. git log --oneline --decorate показывает коммиты компактно (--oneline), а также показывает ссылки, концы веток и тэги (--decorate). git log --oneline --decorate --all --graph делает то же для всех веток (--all), причем коммиты отображаются в терминале в виде дерева (--graph). ------ ------ git log --stat показывает файлы, измененные в коммитах. $ git log --stat commit 4bfae3cbed75c9d1f51c862ce160500708cc0606 (HEAD -> main) Author: Alice (DmitrievDK) Date: Mon Jun 5 03:24:31 2023 +0300 git .gitignore | 3 +++ 1 file changed, 3 insertions(+) commit debe61dfd67eca86a15387c7b35c83d24f62edf8 Author: Alice (DmitrievDK) Date: Mon Jun 5 03:16:43 2023 +0300 code: изменена сумма и разность на нормальны main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 92474770044a065395b4e6ca5f3ee7dcc808cec9 Author: Alice (DmitrievDK) Date: Mon Jun 5 03:15:04 2023 +0300 code: добавлена разность ------ ------ git log --oneline --decorate показывает коммиты компактно (--oneline), а также показывает ссылки, концы веток и тэги (--decorate $ git log --oneline --decorate 4bfae3c (HEAD -> main) git debe61d code: изменена сумма и разность на нормальны 9247477 code: добавлена разность f5b62a4 code: заготовка программы — изменен код a5f4d8f build: добавлен файл проекта 3b3f82e code: заготовка программы ------ ------ $ git log --oneline --decorate --all --graph * 4bfae3c (HEAD -> main) git * debe61d code: изменена сумма и разность на нормальны * 9247477 code: добавлена разность * f5b62a4 code: заготовка программы — изменен код * a5f4d8f build: добавлен файл проекта * 3b3f82e code: заготовка программы ------ git show просмотр отдельного коммита (refspec - хеш коммита) просмотр последнего коммита тремя разными способами git show HEAD (текущий) git show main (по имени ветви) git show d2e8af (по хэшу нужного коммита) ------ $ git show HEAD commit 4bfae3cbed75c9d1f51c862ce160500708cc0606 (HEAD -> main) Author: Alice (DmitrievDK) Date: Mon Jun 5 03:24:31 2023 +0300 git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d85abef --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin +/obj +/*.layout usr@dan128B MINGW64 ~/Desktop/lab02/alice/project (main) ------ git diff - просмотр изменения рабочей копии ------ $ git diff diff --git a/main.cpp b/main.cpp index c3d4222..b685e5e 100644 --- a/main.cpp +++ b/main.cpp @@ -8,5 +8,7 @@ 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' -добавили строчку + << "A * B = " << a * b << '\n'; -добавили строчку } ------ git diff HEAD~2 разница между последним и коммитом старее на две версии git diff HEAD~2 HEAD также, но так можно задать разные коммиты git reset --hard HEAD~1 - откат версии на 1 назад git checkout HEAD -- main.cpp - откат файла к последнему коммиту ssh-keygen создать пару ключей eval $(ssh-agent -s) запустить агента ключей ssh-add загрузка ключа cat ~/.ssh/id_rsa.pub отобразить открытый ключ мой вывод: ------ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDy3rV3tesiBvsEgT+ckOMe6usSDho/k6G8oDna/HWpMyvrGXwNq8tHAp8baMqID2fo6WVzk86iYS4NobF8Coo3oYt6LV9nCC9fvk/uavj6AIa7N3M9KEJSfei2q51/HFVr7b/5WbB0F28Tz/IHzbe655wlPkF2NWWDvaHKul6OzNmylwAnHT4L+kiwX6QMDHB+FiMCxwvLkt7avkn3h/NQiyvq3mH7pk3Hkpr5UMI3tFvWEj062nE9fo5YgNqAziHKQLp4bGXRo204AMSHBMZ6Ia/eN4GrmiHUWVvT6nnwDjnw7g5TjzT5ptMx6693apBBF3xYKurTB1E48qYf+aJAFfa06yaHcYEz1LmjpG4kBC12s2IIAZbiR3jk5OEo/7zSkVryZt+R+523zefnzNblwFWFgDrYOt/2e7urXObh+1Wr0bRLaahWyxsTT+ADJ5Eyk0XpUBK/9mG6db+B/0QQ6UFcv3f7KaAH/hF3hi7sRS7J+2cGmOtiGhEGqhbpqY0= usr@dan128B ------ git clone <адрес> <каталог> git remote -v git remote add git push отправить коммит на сервер git fetch получить коммит с сервера ------ $ git rebase origin/main Auto-merging main.cpp - автообъединение main.cpp CONFLICT (content): Merge conflict in main.cpp - конфликт слияния в main.cpp error: could not apply 9303f0f... code: добавили минимум - ошибка не удалось применить hint: Resolve all conflicts manually, mark them as resolved with - решите конфлик вручную hint: "git add/rm ", 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 9303f0f... code: добавили минимум ------ после git add main.cpp / git rebase --continue ------ code: добавили минимум # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # interactive rebase in progress; onto 4d82c00 # Last command done (1 command done): # pick 9303f0f code: добавили минимум # No commands remaining. # You are currently rebasing branch 'main' on '4d82c00'. # # Changes to be committed: # modified: main.cpp # # Untracked files: # project.layout # ~ ~ ~ ~ ~ .git/COMMIT_EDITMSG [unix] (06:30 05/06/2023) 17,1 All "~/Desktop/lab02/bob/project/.git/COMMIT_EDITMSG" [unix] 17L, 491B ------ git branch double - создание ветки git checkout double - переключение на ветку git checkout -b double (первые две команды вместе) git merge double - слить ветку double в main ------ $ git merge double Already up to date. (что-то пошло не так) ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------