ЛЕКЦ 05: ХУВИЛБАРЫН УДИРДЛАГА БА GIT (Version Control & Git)
Хичээлийн зорилго: Хувилбарын удирдлагын суурь ойлголт, Git-ийн ажиллагааны зарчим, branch стратеги, багаар хамтран ажиллах workflow, CI/CD-ийн үндэс зэргийг эзэмшүүлэх.
Хамрах хүрээ: VCS тодорхойлолт, Git архитектур, суурь командууд, branching стратеги, merge vs rebase, pull request, conflict шийдвэрлэх, CI/CD-ийн үндэс.
ХЭСЭГ 1: ОНОЛЫН СУУРЬ (Theory & Foundations)
1.1 Хувилбарын удирдлага (Version Control) гэж юу вэ?
Version Control System (VCS) гэдэг нь файлуудын өөрчлөлтийг цаг хугацааны туршид бүртгэж, хадгалж, удирдах систем.
🔑 Тодорхойлолт: VCS нь кодын бүх өөрчлөлтийн түүхийг хадгалж, хэн, хэзээ, юу өөрчилсөн гэдгийг бүртгэдэг.
Зүйрлэл:
💡 Google Docs дээр баримт бичих — бүх өөрчлөлтийн түүхийг харж, хуучин хувилбар руу буцаж болдог шиг, VCS нь кодын "цаг хугацааны машин".
VCS-ийн шийддэг асуудлууд:
| # | Асуудал | VCS-гүй | VCS-тэй |
|---|---|---|---|
| 1 | Файл алдах | Санамсаргүй устгавал сэргээх боломжгүй | Бүх түүх хадгалагдсан, сэргээж болно |
| 2 | Хэн юу өөрчилсөн? | Мэдэхгүй | git log, git blame |
| 3 | Хамтран ажиллах | Файл дарж бичих | Branch, merge, pull request |
| 4 | Хуучин хувилбар | project_v1, project_v2_final_FINAL | Commit бүр нь хувилбар |
| 5 | Туршилт хийх | Эх кодыг эвдэх эрсдэл | Branch дээр туршиж, merge хийх |
VCS-гүй хөгжүүлэгчийн амьдрал:
📁 project_v1/
📁 project_v2/
📁 project_v2_final/
📁 project_v2_final_REAL/
📁 project_v2_final_REAL_THIS_ONE/
📁 project_backup_20240115/
📁 project_DO_NOT_DELETE/
😅 Танил санагдаж байна уу? VCS энэ бүх асуудлыг шийднэ.
1.2 VCS-ийн төрлүүд
1.2.1 Локал VCS (Local VCS)
Файлын өөрчлөлтийг зөвхөн нэг компьютер дээр хадгална.
[Ажлын хавтас] → [Локал мэдээллийн сан]
- Жишээ: RCS (Revision Control System)
- Сул тал: Хамтран ажиллах боломжгүй, компьютер эвдэрвэл бүгд алдагдана
1.2.2 Төвлөрсөн VCS (Centralized VCS — CVCS)
Нэг төв сервер дээр бүх түүх хадгалагдана. Хөгжүүлэгчид серверээс файл татаж ажиллана.
[Хөгжүүлэгч A] ←→ [ТӨВ СЕРВЕР] ←→ [Хөгжүүлэгч B]
- Жишээ: SVN (Subversion), CVS, Perforce
- Давуу тал: Хамтран ажиллах боломжтой, нэг газар удирдах
- Сул тал: Сервер унтарвал хэн ч ажиллаж чадахгүй, сервер эвдэрвэл бүх түүх алдагдана
1.2.3 Тархсан VCS (Distributed VCS — DVCS)
Хөгжүүлэгч бүр бүтэн хуулбар (clone) авна — бүх түүхтэй.
[Хөгжүүлэгч A: Бүтэн хуулбар] ←→ [Алсын сервер] ←→ [Хөгжүүлэгч B: Бүтэн хуулбар]
- Жишээ: Git, Mercurial
- Давуу тал: Офлайн ажиллах боломжтой, сервер эвдэрсэн ч локал хуулбар бүрэн, маш хурдан
- Git нь DVCS-ийн хамгийн түгээмэл, стандарт хэрэгсэл
💡 Зүйрлэл: CVCS = Номын сангаас ном зээлэх (нэг л хуулбар). DVCS = Ном бүрийг хуулж авах (хүн бүрт бүтэн хуулбар).
1.3 Git-ийн түүх ба философи
Түүх:
- 2005 он: Linus Torvalds (Linux-ийн зохиогч) Git-ийг бүтээсэн
- Шалтгаан: Linux цөмийн хөгжүүлэлтэд ашигладаг байсан BitKeeper хэрэгсэлтэй маргалдсан
- Linus-ийн зорилго: Хурдан, энгийн, тархсан, том төслийг удирдах чадвартай
Git-ийн философи:
| Зарчим | Тайлбар |
|---|---|
| Хурд | Бараг бүх үйлдэл локал → маш хурдан |
| Энгийн дизайн | Цөөн суурь ойлголт дээр суурилсан |
| Шугаман бус хөгжүүлэлт | Олон мянган зэрэгцээ branch дэмжинэ |
| Бүрэн тархсан | Хөгжүүлэгч бүр бүтэн түүхтэй |
| Том төсөл | Linux цөм (25+ сая мөр код) удирдах чадвартай |
1.4 Git-ийн архитектур — Гурван бүс (Three Areas)
Git нь 3 үндсэн бүстэй:
┌─────────────┐ git add ┌──────────────┐ git commit ┌──────────────┐
│ WORKING │ ──────────→ │ STAGING │ ────────────→ │ REPOSITORY │
│ DIRECTORY │ │ AREA │ │ (.git) │
│ (Ажлын │ ←────────── │ (Index) │ │ (Түүх) │
│ хавтас) │ файл засах │ (Бэлтгэл) │ │ │
└─────────────┘ └──────────────┘ └──────────────┘
Гурван бүсийн тайлбар:
| Бүс | Англи | Тайлбар |
|---|---|---|
| Ажлын хавтас | Working Directory | Файлуудаа засварладаг газар. Кодоо бичдэг |
| Бэлтгэл бүс | Staging Area (Index) | Дараагийн commit-д оруулах файлуудыг бэлтгэх "тайз" |
| Репозитор | Repository (.git) | Бүх commit-ийн түүх хадгалагддаг |
💡 Зүйрлэл: Гэрийн хоол хийх:
- Working Directory = Гал тогоо (хоол бэлтгэх)
- Staging Area = Тавлага (бэлэн болсон хоолыг тавих)
- Repository = Хоолны зураг авах (түүх хадгалах)
1.5 Git-ийн суурь командууд
1.5.1 Репозитор үүсгэх / клонлох
# Шинэ репозитор үүсгэх
git init
# Одоо байгаа репозиторыг клонлох (хуулах)
git clone https://github.com/user/repo.git
1.5.2 Өөрчлөлт хийх цикл
# 1. Файлуудын төлөвийг шалгах
git status
# 2. Файлыг staging area-д нэмэх
git add filename.java # Нэг файл
git add . # Бүх өөрчлөлт
# 3. Commit хийх (түүхэнд хадгалах)
git commit -m "Оюутны бүртгэлийн модуль нэмсэн"
# 4. Алсын сервер рүү илгээх
git push origin main
1.5.3 Түүх харах
# Commit-ийн түүх харах
git log
git log --oneline # Товч хэлбэрээр
git log --oneline --graph # График хэлбэрээр
# Хэн ямар мөр бичсэнийг харах
git blame filename.java
# Хоёр commit-ийн ялгааг харах
git diff commit1 commit2
1.5.4 Буцаах (Undo)
# Staging area-аас буцаах (unstage)
git restore --staged filename.java
# Ажлын хавтас дахь өөрчлөлтийг цуцлах
git restore filename.java
# Сүүлийн commit-ийн мессежийг засах
git commit --amend -m "Шинэ мессеж"
# Commit-ийг буцаах (шинэ commit үүсгэж)
git revert HEAD
1.6 Branching (Салаалт)
Branch гэж юу вэ?
Branch нь хөгжүүлэлтийн тусдаа шугам. Үндсэн кодонд нөлөөлөхгүйгээр шинэ функц, алдаа засвар зэргийг хийх боломж олгоно.
💡 Зүйрлэл: Номын зэрэгцээ бүлгүүд шиг — нэг бүлгийг бичиж байхдаа нөгөө бүлгийг эвдэхгүй. Дууссаны дараа нэгтгэнэ.
feature/login
┌──●──●──●──┐
╱ ╲ merge
main ──●──●──────────────●──●──
╲ ╱
└──●──●──●──┘
feature/payment
Суурь branch командууд:
# Бүх branch жагсаалт
git branch
# Шинэ branch үүсгэх
git branch feature/login
# Branch руу шилжих
git checkout feature/login
# эсвэл (шинэ арга)
git switch feature/login
# Үүсгэж шилжих (нэг алхам)
git checkout -b feature/payment
# эсвэл
git switch -c feature/payment
# Branch устгах
git branch -d feature/login
1.7 Merge ба Rebase
1.7.1 Merge (Нэгтгэх)
Хоёр branch-ийн түүхийг нэгтгэж, шинэ merge commit үүсгэнэ.
# main branch руу шилжих
git checkout main
# feature branch-ийг нэгтгэх
git merge feature/login
feature/login
┌──●──●──●──┐
╱ ╲ merge commit
main ──●──●──────────────●──
Давуу тал: Түүх бүрэн хадгалагдана, хэзээ merge хийсэн тодорхой Сул тал: Олон merge commit → Түүх нарийн болж болно
1.7.2 Rebase (Суурь шилжүүлэх)
Feature branch-ийн commit-уудыг main-ийн ОРОЙД дахин тавина.
# feature branch дээр байхдаа
git checkout feature/login
git rebase main
ӨМНӨ: ДАРАА:
main: ──●──●──● main: ──●──●──●
╲ ╲
feature: ●──● feature: ●'──●'
Давуу тал: Цэвэр, шугаман түүх Сул тал: Түүхийг дахин бичдэг → Хуваалцсан branch дээр ХЭЗЭЭ Ч ХЭРЭГЛЭХГҮЙ
Merge vs Rebase хэзээ ашиглах:
| Нөхцөл | Merge | Rebase |
|---|---|---|
| Нийтийн branch (main) | ✅ | ❌ |
| Хувийн feature branch | ✅ | ✅ |
| Түүх хадгалах чухал | ✅ | ❌ |
| Цэвэр түүх хэрэгтэй | ❌ | ✅ |
| Алтан дүрэм | Аюулгүй | Нийтийн branch-д хэзээ ч rebase хийхгүй |
1.8 Merge Conflict (Зөрчил)
Conflict хэзээ үүсдэг вэ?
Хоёр branch дээр ижил файлын ижил мөрийг өөр өөрөөр засварласан → Git автоматаар нэгтгэж чадахгүй.
Хөгжүүлэгч A: greeting = "Сайн байна уу";
Хөгжүүлэгч B: greeting = "Сайн уу";
↓
CONFLICT!
Conflict шийдвэрлэх:
// Git-ийн харуулдаг хэлбэр:
<<<<<<< HEAD
greeting = "Сайн байна уу"; // Одоогийн branch
=======
greeting = "Сайн уу"; // Нэгтгэж буй branch
>>>>>>> feature/greeting
// Хөгжүүлэгч шийднэ:
greeting = "Сайн байна уу!"; // Зөв хувилбарыг сонгоно
Шийдвэрлэх алхам:
# 1. Conflict-той файлуудыг олох
git status
# 2. Файлуудыг нээж, conflict-ийг гараар засах
# <<<<<<< , ======= , >>>>>>> тэмдэглэгээг устгах
# 3. Засварласан файлуудыг staging-д нэмэх
git add filename.java
# 4. Merge commit хийх
git commit -m "Merge conflict шийдвэрлэсэн"
💡 Зөвлөгөө: IDE-үүд (IntelliJ, VS Code) conflict шийдвэрлэхэд визуал хэрэгсэл санал болгодог — харьцуулж, сонгоход хялбар.
1.9 Branching стратеги
1.9.1 Git Flow
Хамгийн алдартай, томоохон төслүүдэд тохиромжтой.
main ─────────────────────────────────────── (production)
╲ ╱
develop ──────────────────────────────── (хөгжүүлэлт)
╲ ╲ ╱
feature/A feature/B ────┘
╲
release/1.0 ──── (бэлтгэл)
╲
hotfix/bug ──── (яаралтай засвар)
| Branch | Зорилго |
|---|---|
| main | Production код — үргэлж ажилладаг |
| develop | Хөгжүүлэлтийн үндсэн branch |
| feature/ | Шинэ функц бүрд тусдаа branch |
| release/ | Шинэ хувилбар гаргахын өмнөх бэлтгэл |
| hotfix/ | Production-д гарсан яаралтай алдааны засвар |
1.9.2 GitHub Flow
Энгийн, жижиг багуудад тохиромжтой.
main ──●──●──●──●──●──●──●──●──●──
╲ ╱ ╲ ╱
●──● ●──●──●
feature feature
+ PR + PR
Дүрмүүд:
mainbranch үргэлж deploy хийж болохуйц- Шинэ ажил бүрд
main-аас branch салгах - Тогтмол commit хийж, push хийх
- Pull Request нээх
- Code Review-ийн дараа merge хийх
- Merge хийсний дараа deploy
1.9.3 Trunk-Based Development
Хамгийн энгийн, CI/CD-д тохиромжтой.
main (trunk) ──●──●──●──●──●──●──●──●──●──
╲╱ ╲╱ ╲╱
маш богино feature branch-ууд
Зарчим: Бүх хөгжүүлэгч main руу шууд (эсвэл маш богино branch-аар) commit хийнэ.
1.10 Pull Request (PR) / Merge Request (MR)
Pull Request гэж юу вэ?
Pull Request нь кодыг нэгтгэхийн ӨМНӨ багийн гишүүдээр шалгуулах хүсэлт.
💡 Зүйрлэл: Илтгэлийг хэвлэхийн өмнө багшаар шалгуулах шиг — PR нь кодыг merge хийхийн өмнө шалгуулах.
PR-ийн давуу тал:
| # | Давуу тал | Тайлбар |
|---|---|---|
| 1 | Code Review | Бусад хөгжүүлэгч кодыг шалгана |
| 2 | Чанар | Алдаа, code smell-ийг merge-ийн өмнө олно |
| 3 | Мэдлэг хуваалцах | Баг бүгд кодыг мэддэг |
| 4 | Автомат шалгалт | CI/CD тест автоматаар ажиллана |
| 5 | Баримтжуулалт | Яагаад энэ өөрчлөлт хийсэн бэ гэдэг нь бүртгэгдэнэ |
Сайн PR-ийн шинж:
| Шинж | Тайлбар |
|---|---|
| Жижиг | 200-400 мөр өөрчлөлт (дээд тал нь) |
| Нэг зорилготой | Нэг PR = Нэг функц эсвэл нэг алдаа засвар |
| Тайлбартай | Юу хийсэн, яагаад хийсэн, хэрхэн тестлэсэн |
| Тест бүхий | Шинэ код + тест хамт |
1.11 Commit мессежийн стандарт
Сайн commit мессеж бичих:
<төрөл>(<хамрах хүрээ>): <товч тайлбар>
<дэлгэрэнгүй тайлбар (заавал биш)>
<холбоос, жишээ нь issue дугаар>
Conventional Commits стандарт:
| Төрөл | Тайлбар | Жишээ |
|---|---|---|
| feat | Шинэ функц | feat(auth): нэвтрэлтийн модуль нэмсэн |
| fix | Алдаа засвар | fix(cart): сагсны тооцоолол засав |
| refactor | Код бүтцийн засвар | refactor(user): UserService-ийг хуваасан |
| test | Тест нэмэх/засах | test(order): захиалгын unit тест нэмсэн |
| docs | Баримт бичиг | docs(readme): суулгах заавар нэмсэн |
| style | Формат өөрчлөлт | style: хоосон мөрүүд цэвэрлэсэн |
| chore | Бусад засвар | chore: dependency шинэчлэсэн |
Муу vs Сайн commit мессеж:
# ❌ БУРУУ:
git commit -m "fix"
git commit -m "update"
git commit -m "asdf"
git commit -m "done"
# ✅ ЗӨӨВ:
git commit -m "feat(student): оюутны GPA тооцоолох функц нэмсэн"
git commit -m "fix(login): нууц үг буруу үед алдааны мессеж засав"
git commit -m "refactor(order): calculateTotal() методыг хуваасан"
1.12 .gitignore
.gitignore гэж юу вэ?
Git-д бүртгэхгүй файлуудын жагсаалт. Компайл хийсэн файл, IDE тохиргоо, нууц мэдээлэл зэргийг Git-д нэмэхгүй.
Java төслийн .gitignore жишээ:
# Compiled files
*.class
*.jar
*.war
# Build directories
/target/
/build/
/out/
# IDE files
.idea/
*.iml
.vscode/
.eclipse/
# OS files
.DS_Store
Thumbs.db
# Environment / Secrets
.env
*.properties
!application-example.properties
# Logs
*.log
# Dependencies
/node_modules/
⚠️ Чухал: API key, нууц үг, токен зэрэг нууц мэдээллийг ХЭЗЭЭ Ч Git-д нэмж болохгүй!
.envфайлд хадгалж,.gitignore-д нэмэх.
1.13 CI/CD-ийн үндэс
CI (Continuous Integration) — Тасралтгүй нэгтгэл
Хөгжүүлэгчид код push хийх бүрд автоматаар build, тест ажиллуулах.
Хөгжүүлэгч → git push → CI сервер → Build → Test → Үр дүн мэдэгдэх
↓
✅ Pass → Merge зөвшөөрөх
❌ Fail → Хөгжүүлэгчид мэдэгдэх
CD (Continuous Delivery / Deployment) — Тасралтгүй хүргэлт
CI-ийн дараа автоматаар staging/production орчинд deploy хийх.
Code → Build → Test → Staging → Production
↑ CI ↑ ↑ CD ↑
CI/CD-ийн давуу тал:
| # | Давуу тал | Тайлбар |
|---|---|---|
| 1 | Алдааг эрт олох | Push бүрт тест ажиллана |
| 2 | Хурдан хүргэлт | Автомат deploy → Хүргэлт хурдасна |
| 3 | Итгэлцэл | Тест pass = Код найдвартай |
| 4 | Давталт багасна | Гараар build, test, deploy хийхгүй |
CI/CD хэрэгслүүд:
| Хэрэгсэл | Тайлбар |
|---|---|
| GitHub Actions | GitHub-тай нэгдсэн, үнэгүй |
| GitLab CI/CD | GitLab-тай нэгдсэн |
| Jenkins | Нээлттэй эхийн, уян хатан |
| CircleCI | Cloud-based CI/CD |
| Travis CI | Нээлттэй эхийн төслүүдэд |
GitHub Actions жишээ:
# .github/workflows/ci.yml
name: Java CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Build with Maven
run: mvn clean verify
- name: Run tests
run: mvn test
1.14 Git хамтын ажиллагааны зөвлөмжүүд
| # | Зөвлөмж | Тайлбар |
|---|---|---|
| 1 | Тогтмол commit хийх | Жижиг, тогтмол commit > Том, ховор commit |
| 2 | Утга учиртай мессеж бичих | "fix" биш → "fix(auth): token хугацаа дуусах алдааг засав" |
| 3 | Branch ашиглах | main дээр шууд ажиллахгүй |
| 4 | Pull Request ашиглах | Code review-гүйгээр merge хийхгүй |
| 5 | Conflict-ийг түргэн шийдэх | Удаан орхивол conflict ихсэнэ |
| 6 | Push-ийн өмнө pull хийх | git pull --rebase origin main |
| 7 | Нууц мэдээлэл Git-д нэмэхгүй | .env, API key → .gitignore |
| 8 | .gitignore зөв тохируулах | Build файл, IDE тохиргоо нэмэхгүй |
ХЭСЭГ 2: ТҮЛХҮҮР ҮГ БА МЭРГЭЖЛИЙН НЭР ТОМЬЁО (Keywords & Glossary)
| # | Англи нэр томьёо | Монгол утга | Дэлгэрэнгүй тайлбар |
|---|---|---|---|
| 1 | Version Control System (VCS) | Хувилбарын удирдлагын систем | Файлуудын өөрчлөлтийн түүхийг бүртгэж, удирдах систем. |
| 2 | Repository (Repo) | Репозитор / Агуулах | Кодын бүх файл, түүхийг хадгалдаг агуулах. |
| 3 | Commit | Коммит / Бүртгэл | Өөрчлөлтийг түүхэнд хадгалах үйлдэл. Нэг "хадгалах цэг". |
| 4 | Branch | Салаалт / Салбар | Хөгжүүлэлтийн тусдаа шугам. Үндсэн кодонд нөлөөлөхгүй. |
| 5 | Merge | Нэгтгэх | Хоёр branch-ийн өөрчлөлтийг нэг болгох. |
| 6 | Rebase | Суурь шилжүүлэх | Branch-ийн commit-уудыг өөр branch-ийн оройд тавих. |
| 7 | Clone | Клонлох / Хуулах | Алсын репозиторын бүтэн хуулбар авах. |
| 8 | Push | Түлхэх / Илгээх | Локал commit-уудыг алсын сервер рүү илгээх. |
| 9 | Pull | Татах | Алсын серверээс шинэ өөрчлөлтийг татах. |
| 10 | Fetch | Татах (нэгтгэхгүй) | Алсын серверээс мэдээлэл татах, гэхдээ автоматаар merge хийхгүй. |
| 11 | Staging Area (Index) | Бэлтгэл бүс | Дараагийн commit-д оруулах файлуудыг бэлтгэх газар. |
| 12 | Working Directory | Ажлын хавтас | Файлуудаа засварладаг газар. |
| 13 | HEAD | Тэргүүлэгч | Одоогийн branch-ийн хамгийн сүүлийн commit руу заадаг заагч. |
| 14 | Remote | Алсын сервер | Алсад байрлах репозитор (GitHub, GitLab гэх мэт). |
| 15 | Origin | Эх үүсвэр | Клонлосон алсын серверийн анхдагч нэр. |
| 16 | Pull Request (PR) | Татах хүсэлт | Кодыг merge хийхийн өмнө шалгуулах хүсэлт (GitHub). |
| 17 | Merge Request (MR) | Нэгтгэх хүсэлт | PR-тэй ижил, GitLab дахь нэр. |
| 18 | Merge Conflict | Нэгтгэлийн зөрчил | Хоёр branch ижил мөрийг өөрөөр засварласан → автомат нэгтгэх боломжгүй. |
| 19 | Git Flow | Гит урсгал | main, develop, feature, release, hotfix branch бүхий стратеги. |
| 20 | GitHub Flow | ГитХаб урсгал | Энгийн стратеги: main + feature branch + PR. |
| 21 | Trunk-Based Development | Үндсэн мөчирт суурилсан | Бүгд main руу богино branch-аар commit хийх стратеги. |
| 22 | CI (Continuous Integration) | Тасралтгүй нэгтгэл | Push бүрт автоматаар build, тест ажиллуулах. |
| 23 | CD (Continuous Delivery) | Тасралтгүй хүргэлт | CI-ийн дараа автоматаар deploy хийх. |
| 24 | Tag | Шошго | Тодорхой commit-д нэр өгөх. Хувилбар гаргахад (v1.0.0). |
| 25 | Stash | Нөөцлөх / Түр хадгалах | Дуусаагүй өөрчлөлтийг түр хадгалж, цэвэр branch руу шилжих. |
| 26 | Cherry-pick | Сонгон авах | Тодорхой commit-ийг өөр branch руу хуулах. |
| 27 | .gitignore | Гит үл тоомсорлох | Git-д бүртгэхгүй файлуудын жагсаалт. |
| 28 | Blame | Буруутгах / Гэм буруу | Файлын мөр бүрийг хэн бичсэнийг харуулах. |
| 29 | Diff | Ялгаа | Хоёр commit/файлын хоорондох ялгааг харуулах. |
| 30 | Revert | Буцаах | Commit-ийг буцааж, шинэ commit үүсгэх (түүх хадгалагдана). |
| 31 | Reset | Дахин тохируулах | HEAD-ийг өмнөх commit руу шилжүүлэх (түүх өөрчлөгдөж болно). |
| 32 | Amend | Засах | Сүүлийн commit-ийн мессеж/агуулгыг засах. |
| 33 | Fork | Салаалуулах | Бусдын репозиторыг өөрийн бүртгэлд хуулах (GitHub). |
| 34 | Code Review | Кодын шалгалт | Бусад хөгжүүлэгч кодыг шалгаж, санал болгох. |
| 35 | Conventional Commits | Стандарт коммит | feat:, fix:, refactor: гэх мэт commit мессежийн стандарт. |
| 36 | Distributed VCS | Тархсан VCS | Хөгжүүлэгч бүр бүтэн хуулбар авдаг (Git, Mercurial). |
| 37 | Centralized VCS | Төвлөрсөн VCS | Нэг төв серверт бүх түүх хадгалагддаг (SVN). |
| 38 | GitHub Actions | ГитХаб Үйлдлүүд | GitHub-ийн CI/CD автоматжуулалтын хэрэгсэл. |
| 39 | Hotfix | Яаралтай засвар | Production-д гарсан алдааг яаралтай засах branch. |
| 40 | Semantic Versioning | Утга бүхий хувилбарлалт | MAJOR.MINOR.PATCH (v1.2.3) хувилбарын дүрэм. |