Git / Branch үндэс

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-ийг заана.

bash
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-уудыг харах:

bash
git branch
код
* main
  feature/login
  fix/navbar-mobile

* тэмдэг одоогийн branch-ийг заана.

Remote branch-уудыг оруулан харах:

bash
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 болгох глобал тохируулга:

bash
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 үүсгэх, шилжих, устгах командуудыг практикаар ашиглана.