diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..fda279f9 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,13 @@ +## Goal + + +## Changes + + +## Testing + + +## Checklist +- [ ] Понятное, описательное название PR +- [ ] Документация/README обновлены (если нужно) +- [ ] Не добавлены секреты или большие временные файлы \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/DevOps-Intro.iml b/.idea/DevOps-Intro.iml new file mode 100644 index 00000000..f571432d --- /dev/null +++ b/.idea/DevOps-Intro.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..105ce2da --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..db8786c0 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..c632cbe0 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/demo.txt b/demo.txt new file mode 100644 index 00000000..77e1c0c0 Binary files /dev/null and b/demo.txt differ diff --git a/labs/img.png b/labs/img.png new file mode 100644 index 00000000..24eb01a3 Binary files /dev/null and b/labs/img.png differ diff --git a/labs/img_1.png b/labs/img_1.png new file mode 100644 index 00000000..24eb01a3 Binary files /dev/null and b/labs/img_1.png differ diff --git a/labs/submission1.md b/labs/submission1.md new file mode 100644 index 00000000..946f9d1c --- /dev/null +++ b/labs/submission1.md @@ -0,0 +1,9 @@ +## Task 2 — PR Template & Checklist + +### Скриншот +![img_1.png](img_1.png) +### Шаблоны PR улучшают коллаборацию через: +- Стандартизацию процесса code review +- Уменьшение когнитивной нагрузки на ревьюверов +- Гарантию, что важная информация не будет пропущена +- Ускорение процесса мерджа \ No newline at end of file diff --git a/labs/submission2.md b/labs/submission2.md new file mode 100644 index 00000000..d8a3e83a --- /dev/null +++ b/labs/submission2.md @@ -0,0 +1,280 @@ +```bash +1) git log --oneline -1 + +8c2a010 (HEAD -> feature/lab2) Add more content + +2) git cat-file -p 8c2a010 +tree 23e91942ff3ce7ef439dcdeba8c75173cf395326 +parent 7870170b70e1e9acb13bf0c1c0375d0d926c0ea1 +author Aliya Latipova 1770640763 +0300 +committer Aliya Latipova 1770640763 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- + U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgahbMKjqXpbDKS/yq0XmYOEr+XA + gJ5eIIRzF+OYwLaM4AAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 + AAAAQM34P0pE74XTF5hqymDmlRik9liI3U48nNiXoigp1TT5VOPoXyBEcF1oLuO0hJ/XlP + iAPGSegPs5to209pQGEAU= + -----END SSH SIGNATURE----- + +3) git cat-file -p 23e91942ff3ce7ef439dcdeba8c75173cf395326 + +040000 tree 4b00f342961d74262fbb50ff469745d0fc7ea83a .github +040000 tree 49ea7b4ab1503744ae47d10ae33ea487c3c93d37 .idea +100644 blob 6e60bebec0724892a7c82c52183d0a7b467cb6bb README.md +040000 tree a1061247fd38ef2a568735939f86af7b1000f83c app +040000 tree 25aa0d3a77eaf13b24ceb49e72e0de5a84dd78b5 labs +040000 tree d3fb3722b7a867a83efde73c57c49b5ab3e62c63 lectures +100644 blob e002b84b36d7cda3ed4accb7cf0d28546c2057d0 test.txt +100644 blob 29a6b9da669445d31f6dd05f14318ea39aa6ecd1 test_signed_commit.txt +100644 blob 5c02253e4d038dbb3a20c2f6b9fa4d4b567aeb3f verification_test.md + +4) git cat-file -p e002b84b36d7cda3ed4accb7cf0d28546c2057d0 +��Test content +More content + +5) git cat-file -t 8c2a010 +commit +``` + +типы объектов: +Blob — хранит содержимое файлов (например, текст test.txt) + +Tree — хранит структуру каталогов (какие файлы и папки есть, их права доступа и хэши) + +Commit — хранит снимок состояния: ссылку на дерево, родительский коммит, автора, время и сообщение + + +Git хранит данные как неизменяемые объекты с уникальными SHA-1 хэшами. Каждый коммит ссылается на дерево, которое ссылается на blobs и другие деревья. Если файл изменяется, создается новый blob, и дерево обновляется с новым хэшем. + + + + +## таск 2 +```bash +1) git log --oneline -3 +c5e8d1f (HEAD -> git-reset-practice) Third commit +7831243 Second commit +9693ba7 First commit +2) cat file.txt +First commit +Second commit +Third commit + +3) git reset --soft HEAD~1 +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> git log --oneline -2 +7831243 (HEAD -> git-reset-practice) Second commit +9693ba7 First commit + +4) cat file.txt +First commit +Second commit +Third commit + +5) git reflog +7831243 (HEAD -> git-reset-practice) HEAD@{0}: reset: moving to HEAD~1 +c5e8d1f HEAD@{1}: commit: Third commit +7831243 (HEAD -> git-reset-practice) HEAD@{2}: commit: Second commit +9693ba7 HEAD@{3}: commit: First commit +8c2a010 (feature/lab2) HEAD@{4}: checkout: moving from feature/lab2 to git-reset-practice +8c2a010 (feature/lab2) HEAD@{5}: checkout: moving from git-reset-practice to feature/lab2 +a909129 HEAD@{6}: reset: moving to HEAD~1 +f53175a HEAD@{7}: reset: moving to HEAD~1 +6428fca HEAD@{8}: commit: Reset practice: Third commit +f53175a HEAD@{9}: commit: Reset practice: Second commit +a909129 HEAD@{10}: commit: Reset practice: First commit +8c2a010 (feature/lab2) HEAD@{11}: checkout: moving from feature/lab2 to git-reset-practice +8c2a010 (feature/lab2) HEAD@{12}: commit: Add more content +7870170 HEAD@{13}: commit: Add test file +f8a853d (origin/feature/lab1, feature/lab1) HEAD@{14}: checkout: moving from feature/lab1 to feature/lab2 +: + + +6) git reset --hard c5e8d1f +HEAD is now at c5e8d1f Third commit + +7) git log --oneline -3 +c5e8d1f (HEAD -> git-reset-practice) Third commit +7831243 Second commit +9693ba7 First commit + +8) git reset --hard HEAD~1 +HEAD is now at 7831243 Second commit +9) PS C:\Users\aliya\PycharmProjects\DevOps-Intro> git log --oneline -2 +7831243 (HEAD -> git-reset-practice) Second commit +9693ba7 First commit +10) PS C:\Users\aliya\PycharmProjects\DevOps-Intro> cat file.txt +First commit +Second commit + +11) git reflog +7831243 (HEAD -> git-reset-practice) HEAD@{0}: reset: moving to HEAD~1 +c5e8d1f HEAD@{1}: reset: moving to c5e8d1f +7831243 (HEAD -> git-reset-practice) HEAD@{2}: reset: moving to HEAD~1 +c5e8d1f HEAD@{3}: commit: Third commit +7831243 (HEAD -> git-reset-practice) HEAD@{4}: commit: Second commit +9693ba7 HEAD@{5}: commit: First commit +8c2a010 (feature/lab2) HEAD@{6}: checkout: moving from feature/lab2 to git-reset-practice +8c2a010 (feature/lab2) HEAD@{7}: checkout: moving from git-reset-practice to feature/lab2 +a909129 HEAD@{8}: reset: moving to HEAD~1 +f53175a HEAD@{9}: reset: moving to HEAD~1 +6428fca HEAD@{10}: commit: Reset practice: Third commit +f53175a HEAD@{11}: commit: Reset practice: Second commit +a909129 HEAD@{12}: commit: Reset practice: First commit +8c2a010 (feature/lab2) HEAD@{13}: checkout: moving from feature/lab2 to git-reset-practice +8c2a010 (feature/lab2) HEAD@{14}: commit: Add more content +: +12) git reset --hard c5e8d1f +HEAD is now at c5e8d1f Third commit + +13) git log --oneline -3 +c5e8d1f (HEAD -> git-reset-practice) Third commit +7831243 Second commit +``` + +### таск 3 +```bash +git log --oneline --graph --all --decorate +* 82e4d35 (side-branch) Side branch commit +| * c5e8d1f (git-reset-practice) Third commit +| * 7831243 Second commit +| * 9693ba7 First commit +|/ +* 8c2a010 (HEAD -> feature/lab2) Add more content +* 7870170 Add test file +* f8a853d (origin/feature/lab1, feature/lab1) docs: fixed lab1 submission +* 3afcdcf docs: add commit signing summary +* a1501fc docs: add signed commit for verification +* 742f0e6 (origin/main, origin/HEAD, main) feat: add PR template +* a7b704e test: verify commit signing +:...skipping... +* 82e4d35 (side-branch) Side branch commit +| * c5e8d1f (git-reset-practice) Third commit +| * 7831243 Second commit +| * 9693ba7 First commit +|/ +* 8c2a010 (HEAD -> feature/lab2) Add more content +* 7870170 Add test file +* f8a853d (origin/feature/lab1, feature/lab1) docs: fixed lab1 submission +* 3afcdcf docs: add commit signing summary +* a1501fc docs: add signed commit for verification +* 742f0e6 (origin/main, origin/HEAD, main) feat: add PR template +* a7b704e test: verify commit signing +* 5a438cb docs: add lab1 submission +* 0c15da0 docs: add commit signing summary +* d6b6a03 Update lab2 +* 87810a0 feat: remove old Exam Exemption Policy +| * 0a09c16 (origin/release/f25) feat: remove old Exam Exemption Policy +|/ +* 1e1c32b feat: update structure +* 6c27ee7 feat: publish lecs 9 & 10 +: +``` + +## Task 4 — Tagging Commits + +### Создание и отправка тегов +```bash +# Создание тега v1.0.0 на текущем коммите +git tag v1.0.0 + +# Отправка тега на удаленный репозиторий +git push origin v1.0.0 +``` + +### таск 5 +```bash +# Создай новую ветку и переключись на неё +git switch -c cmd-compare + +# Проверь создание ветки +git branch + +# Создай тестовый файл +echo "Test content for switch" > switch-demo.txt +git add switch-demo.txt +git commit -m "Add file for switch demo" + +# Вернись на предыдущую ветку (feature/lab2) +git switch - +Switched to branch 'feature/lab2' + +# Проверь переключение +git branch + cmd-compare + feature/lab1 +* feature/lab2 + git-reset-practice + main + side-branch +``` + +##Работа с git checkout +```bash +git checkout -b cmd-compare-2 +Switched to a new branch 'cmd-compare-2' + git branch + cmd-compare +* cmd-compare-2 + feature/lab1 + feature/lab2 + git-reset-practice + main + side-branch +echo "Test content for checkout" > checkout-demo.txt +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> git add checkout-demo.txt +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> git commit -m "Add file for checkout demo" +[cmd-compare-2 b0a33c2] Add file for checkout demo + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 checkout-demo.txt + echo "Extra line" >> checkout-demo.txt +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> git checkout -- checkout-demo.txt +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> cat checkout-demo.txt +Test content for checkout +``` +Работа с git restore +```bash + git switch feature/lab2 +Switched to branch 'feature/lab2' +echo "Initial content" > restore-demo.txt +git add restore-demo.txt +git commit -m "Add file for restore demo" +[feature/lab2 c247506] Add file for restore demo + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 restore-demo.txt + + git status +On branch feature/lab2 +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: restore-demo.txt + +Untracked files: + (use "git add ..." to include in what will be committed) + et --hard c5e8d1f + et --soft HEAD~1 + labs/submission2.md + tatus + +no changes added to commit (use "git add" and/or "git commit -a") + +git restore restore-demo.txt +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> +PS C:\Users\aliya\PycharmProjects\DevOps-Intro> git status +On branch feature/lab2 +Untracked files: + (use "git add ..." to include in what will be committed) + et --hard c5e8d1f + et --soft HEAD~1 + labs/submission2.md + tatus + +nothing added to commit but untracked files present (use "git add" to track) +``` + +Итог + +git switch — используйте для переключения между ветками и создания новых веток. Эта команда специализирована только для работы с ветками, что делает её использование интуитивно понятным и безопасным. + +git checkout — устаревшая команда, которую следует избегать, особенно новичкам. Она имеет перегруженную функциональность: переключение веток, создание веток и восстановление файлов, что может привести к путанице и ошибкам. + +git restore — используйте для управления состоянием файлов: отмена изменений в рабочей директории, удаление файлов из staged area и восстановление файлов из других коммитов. Эта команда чётко разделяет ответственность и является современной заменой для файловых операций, которые раньше выполнялись через git checkout \ No newline at end of file diff --git a/restore-demo.txt b/restore-demo.txt new file mode 100644 index 00000000..b966ad60 Binary files /dev/null and b/restore-demo.txt differ diff --git a/test.txt b/test.txt new file mode 100644 index 00000000..e002b84b Binary files /dev/null and b/test.txt differ diff --git a/test_signed_commit.txt b/test_signed_commit.txt new file mode 100644 index 00000000..29a6b9da Binary files /dev/null and b/test_signed_commit.txt differ diff --git a/verification_test.md b/verification_test.md new file mode 100644 index 00000000..5c02253e Binary files /dev/null and b/verification_test.md differ