Branch үндэс
Branch бол Git-ийн хамгийн хүчирхэг боломжуудын нэг. Үндсэн кодоо гэмтээлгүйгээр шинэ боломж туршиж, тусдаа хөгжүүлж болдог.
Branch гэж юу вэ?
Branch буюу "салаа" нь commit-ийн цувааг хянадаг заагч. main branch нь бусад commit-уудтай хамт шулуун шугамаар урагш явдаг. Шинэ branch үүсгэхэд тэр заагч тусдаа чиглэлд урагш явж эхэлдэг — үндсэн code-г хөндөхгүйгээр.
main: A → B → C
↘
feature: D → E
feature branch дээр D, E commit хийсэн ч main C дээр хэвээр байна. Бэлэн болсны дараа merge хийж нэгтгэнэ.
Branch хэрэглэх шалтгаанууд:
- Шинэ боломж хөгжүүлэх (нэвтрэлт, профайл хуудас)
- Алдаа засах ажлыг тусгаарлах
- Туршилт хийх
- Хэд хэдэн хүн зэрэгцэн ажиллах
HEAD pointer
HEAD бол Git-ийн тусгай заагч — "одоо та хаана байна" гэдгийг илэрхийлнэ. Ихэвчлэн одоогийн branch-ийн сүүлийн commit-ийг заана.
cat .git/HEAD
ref: refs/heads/main
main branch дээр байвал HEAD → main → сүүлийн commit гэсэн гинж үүснэ. Өөр branch рүү шилжихэд HEAD тэр branch руу шилждэг.
git log-ийн гаралтад:
commit a1b2c3d (HEAD -> main, origin/main)
HEAD -> main нь "та main branch дээр, энэ commit дээр байна" гэсэн утгатай.
git branch — branch жагсаах
Бүх branch-уудыг харах:
git branch
* main
feature/login
fix/navbar-mobile
* тэмдэг одоогийн branch-ийг заана.
Remote branch-уудыг оруулан харах:
git branch -a
* main
feature/login
remotes/origin/main
remotes/origin/feature/login
main vs master
Git-ийн анхдагч branch нэр түүхэндээ master байсан. 2020 оноос GitHub болон Git өөрөө main-г анхдагч болгон өөрчиллөө. Шинэ repository бүр main branch-тай үүснэ.
Хуучин repository-д master харагдвал ялгаа байхгүй — зөвхөн нэр л өөр.
Анхдагч branch нэрийг main болгох глобал тохируулга:
git config --global init.defaultBranch main
Branch нэрлэх дүрэм
Нийтлэг хэрэглэгддэг нэрлэх загварууд:
feature/нэвтрэлт-хуудас
feature/хэрэглэгч-профайл
fix/navbar-гар-утас
fix/api-алдаа-засах
hotfix/нууц-алдаа
release/v1.2.0
Товч, утга учиртай нэр ашиглах. Цагаан зайн оронд - хооронд тавих.
Branch стратеги
Багаар ажиллахад ямар branch ашиглахаа урьдчилан тохиролцдог — үүнийг branch стратеги гэдэг.
Feature Branch стратеги — хамгийн нийтлэг:
main — зөвхөн бэлэн, production код
feature/* — шинэ боломж бүр тусдаа branch
fix/* — алдаа засалт тусдаа branch
Шинэ боломж main-с salaa хийж, бэлэн болсны дараа main-д merge буцаана. Энэ аргаар main үргэлж ажиллах боломжтой хэвээр байдаг.
Trunk-based стратеги — томоохон багт:
main — бүх хөгжүүлэгч шууд ажилладаг
feature/* — богино хугацааны, хэдхэн өдрийн branch
Хичээлийн 24-д эдгээр стратегийг дэлгэрэнгүй авч үзнэ.
Дараагийн хичээлд:
Branch үүсгэх, шилжих, устгах командуудыг практикаар ашиглана.