Энэ хичээлээр
- Git болон GitHub-ийн үүргийг ялгах
- Working tree, staging area, commit хоорондын урсгалыг тайлбарлах
- Нэг файлыг explicit stage хийж, staged diff шалгаад commit хийх
Яагаад Git урсгалыг ойлгох хэрэгтэй вэ?
Task Manager-ийн architecture diagram эсвэл API contract-оо өөрчиллөө гэж бодъё. Зөвхөн “Save” дарахад файл хадгалагдана, гэхдээ юу өөрчилсөн, яагаад, өмнөх хувилбар нь ямар байсныг системтэй баримтжуулахгүй.
Git өөрчлөлтийг шалгаж, сонгож, утгатай snapshot болгон хадгалах боломж өгнө. GitHub тэр repository-г network дээр байршуулж, бусадтай хуваалцах болон review хийх үйлчилгээ өгнө. Git ажиллахын тулд GitHub заавал хэрэгтэй биш.
Mental model: гурван ажлын төлөв
Working tree
→ Staging area
→ Commit history- Working tree: Та одоо нээж, засаж буй бодит файлууд.
- Staging area (index): Дараагийн commit-д яг ямар өөрчлөлт орохыг сонгосон завсрын төлөв.
- Commit: Сонгосон өөрчлөлтийн нэртэй, immutable snapshot.
Git, GitHub, repository
Git бол distributed version control system. Компьютер дээр repository, branch, commit history-тай ажиллана.
GitHub бол Git repository host хийх, pull request, issue, review зэрэг хамтын ажиллагааны боломжтой веб үйлчилгээ.
Repository нь project files болон Git-ийн history, references, configuration
агуулсан хяналтын нэгж. .git directory нь local repository-ийн дотоод
өгөгдлийг агуулдаг тул санамсаргүй засах, устгах ёсгүй.
Аюулгүй inspect-first урсгал
- Одоогийн төлөвөө хар
git statusнь branch, staged, unstaged, untracked файлыг ялгана. Ямар ажил аль хэдийн байгааг мэдэхээс өмнө reset, clean хийхгүй. - Өөрчлөлтийн diff-ийг унш
git diffнь working tree дэх, хараахан stage хийгээгүй өөрчлөлтийг харуулна. Нууц, debug log, unrelated formatting орсон эсэхийг шалга. - Тодорхой файлыг stage хий
git add docs/task-manager-flow.mdшиг exact path хэрэглэ. Ингэснээр дараагийн commit-ийн scope ойлгомжтой байна. - Staged diff-ээ дахин шалга
git diff --cachedнь commit-д орох яг тэр diff-ийг харуулна. - Утгатай commit үүсгэ
git commit -m "docs: describe task creation flow"шиг өөрчлөлтийн зорилгыг тайлбарласан message хэрэглэ. - History-г баталгаажуул
git log --oneline-оор шинэ commit зөв branch дээр орсныг шалга.
git status
git diff
git add docs/task-manager-flow.md
git diff --cached
git commit -m "docs: describe task creation flow"
git log --onelinegit add .-ийг default safe workflow гэж ашиглахгүй. Энэ command одоогийн
directory доорх олон өөрчлөлтийг хамтад нь stage хийж, өөр хүний эсвэл
туршилтын unrelated файлыг commit-д оруулах эрсдэлтэй. Exact file path stage
хийвэл intent харагдана.
Branch гэж юу вэ?
Branch нь commit history доторх хөдөлгөөнт нэрлэсэн заагч. Шинэ feature дээр
тусдаа branch ашиглавал main-ийн одоогийн state-ийг шууд хутгалгүй ажиллаж
болно.
Branch нь бүх project-ийн тусдаа copy биш. Commit нэмэгдэхэд branch pointer урагшилна. Branch солихын өмнө working tree дэх өөрчлөлтөө ойлгох хэрэгтэй: Git зарим өөрчлөлтийг авч явж болох ч conflict эсвэл overwrite эрсдэл үүснэ.
Remote, push, pull
Remote нь өөр Git repository-ийн URL-д өгсөн local нэр. Default нэр
ихэвчлэн origin, гэхдээ заавал биш.
Push нь local commit болон branch reference-ийг remote руу илгээнэ:
git pushPush хийхээс өмнө:
- зөв repository мөн үү —
git remote -v; - зөв branch мөн үү —
git status; - зөв commit-ууд уу —
git log --oneline; - tests, review дууссан уу
гэдгийг шалгана. Permission, branch protection, review policy push-ийг хязгаарлаж болно.
Pull нь remote өөрчлөлтийг fetch хийгээд current branch-д integrate хийх өндөр түвшний command. Working tree dirty үед шууд pull хийхээс өмнө local өөрчлөлтөө ойлгож, project-ийн merge/rebase policy-г мэднэ.
Нэг commit-ийн чанар
Сайн commit:
- нэг ойлгомжтой зорилготой;
- unrelated өөрчлөлтгүй;
- build/test боломжтой үедээ давагдсан;
- message нь “юу” гэхээс гадна intent-ийг ойлгуулдаг;
- secret, generated noise, debug artifact агуулаагүй.
Task Manager flow-ийн diagram болон тайлбар нэг зорилго бол нэг commit байж болно. Харин dependency update, homepage redesign-ийг хамтад нь хийх шаардлагагүй.
Практик дасгал
Нэг файлыг inspect-first аргаар commit хийх
Туршилтын repository-д task-flow.md нэртэй нэг файл үүсгээд Task үүсгэх
таван алхмыг бич. Дараах дарааллаар ажилла:
- Файл өөрчлөгдсөнийг status-аар хар.
- Diff-ийг унш.
- Зөвхөн
task-flow.md-г stage хий. - Staged diff-ээ шалга.
docs: outline task creation flowmessage-ээр commit хий.
Хэрэв repository-д өөр untracked файл байвал түүнийг устгахгүй, stage хийхгүй.
Хүлээгдэж буй үр дүн
Зөвхөн сонгосон нэг файлын өөрчлөлт орсон local commit болон staged/committed diff-ээ шалгасан terminal evidence.
Сонголттой зөвлөмж
Туршилтын шинэ repository ашиглавал бодит ажлаа эрсдэлд оруулахгүй. Unknown untracked файлыг устгах хэрэггүй.
Түгээмэл алдаа
- Git болон GitHub-ийг ижил зүйл гэж ойлгох
git add .ажиллуулаад staged diff шалгалгүй commit хийх- Commit үүсэхэд автоматаар GitHub руу явсан гэж бодох
- Push хийснийг deploy хийсэн гэж тайлагнах
- Dirty working tree дээр recovery command сохроор ажиллуулах
- Secret эсвэл
.envфайлыг history-д commit хийх - Хэт олон unrelated өөрчлөлтийг нэг commit-д холих
Мэдлэгээ шалгах
Дүгнэлт
Git working tree-ийн өөрчлөлтийг staging area-аар сонгож commit history-д хадгална. GitHub remote hosting болон collaboration нэмнэ. Аюулгүй үндсэн урсгал бол status → unstaged diff → explicit add → staged diff → commit → log. Push болон pull shared state-д нөлөөлөх тул branch, remote, local work-ээ эхлээд ойлгоно.
Албан эх сурвалж
- Git Reference Manual
Git project · documentation
- git-status documentation
Git project · documentation
- Git Basics — Recording Changes
Pro Git · documentation
- Using Git
GitHub Docs · documentation
- About remote repositories
GitHub Docs · documentation