Feature Branch — ay isang teknik ng pagsasanga sa Git kung saan ang bawat bagong feature ay binuo sa isang hiwalay na branch, na naka-isolate mula sa pangunahing code. Ito ay nagpapahintulot sa maraming developer na sabay na magtrabaho sa iba't ibang gawain nang walang panganib na masira ang stable na bersyon ng proyekto. Ayon sa Atlassian, 2024, ang Feature Branch ay isang pangunahing elemento ng Git Flow at ginagamit sa karamihan ng mga komersyal na proyekto.
Mga Pangunahing Punto
feature/pangalan-ng-feature sa standard na Git Flow.Feature Branch (branch ng feature) — ay isang pansamantalang branch sa Git, na ginawa mula sa develop para sa pagbuo ng isang hiwalay na functionality. Hindi tulad ng mga matagalang branch na main at develop, ang mga feature branch ay umiiral nang limitadong oras — mula ilang oras hanggang ilang linggo.
Ang pangunahing layunin ng feature branch ay ihiwalay ang mga pagbabagong nauugnay sa isang gawain mula sa natitirang code. Ang developer ay maaaring mag-eksperimento, gumawa ng maraming commit, at kahit sirain ang code sa kanyang branch nang hindi naaapektuhan ang gawain ng ibang miyembro ng team.
Pagkatapos ng pagbuo, ang feature branch ay isinasama pabalik sa develop sa pamamagitan ng Pull Request na may sapilitang pagsusuri ng code. Pagkatapos ng pagsasanib, ang branch ay karaniwang binubura upang manatiling malinis ang repository.
Ayon sa Vincent Driessen, 2010, ang modelo ng Git Flow na may mga feature branch ay naging pamantayan ng industriya dahil sa malinaw na paghahati ng responsibilidad sa pagitan ng iba't ibang uri ng branch.
Daloy ng trabaho gamit ang feature branch ay binubuo ng isang serye ng mga hakbang na ginagawa ng developer para sa bawat bagong feature. Ang prosesong ito ay nagpapaliit ng mga conflict sa pagsasanib at tinitiyak ang kontrol sa kalidad ng code.
Ang pana-panahong pag-sync sa develop ay kritikal na mahalaga. Kung gaano katagal nabubuhay ang feature branch nang hindi isinasama ang mga pagbabago mula sa develop, mas mataas ang posibilidad ng mga conflict sa huling pagsasanib.
| Dalas ng pag-sync | Panganib ng conflict | Kaginhawaan ng pagbuo |
|---|---|---|
| Araw-araw | Mababa | Nangangailangan ng madalas na rebase o merge |
| Lingguhan | Katamtaman | Komportableng mode, katamtamang conflict |
| Buwanan | Mataas | Panganib ng komplikadong merge conflict resolution |
| Hindi kailanman | Kritikal | Ang pagsasanib ay maaaring hindi posible nang walang pagkawala ng data |
Pagpapangalan ng branch — mahalagang bahagi ng disiplina ng team. Ang isang pamantayang pagpapangalan ay nagbibigay-daan upang mabilis na matukoy kung anong gawain ang ginagawa at kung sino ang gumaganap nito.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.Ang paggamit ng ID ng gawain mula sa JIRA, Trello, o ibang sistema ay pinakamahusay na kasanayan. Ito ay awtomatikong nag-uugnay ng code sa gawain at pinapasimple ang paghahanap ng branch sa pamamagitan ng git log.
Pull Request (o Merge Request sa GitLab) — ay isang kahilingan na isama ang feature branch sa develop. Ang PR ay hindi lamang isang teknikal na operasyon, kundi isang proseso ng pagsusuri ng code ng team na nagpapabuti sa kalidad ng code at nagpapalaganap ng kaalaman sa loob ng team.
Ang isang mahusay na PR ay naglalaman ng pamagat na may maikling paglalarawan ng gawain, link sa ticket, at paglalarawan ng mga pagbabago. Dapat ipahiwatig ng developer kung ano ang eksaktong ginawa, anong mga file ang binago, at kung may mga potensyal na panganib para sa ibang bahagi ng proyekto.
Sinusuri ng team ang code sa PR, nag-iiwan ng mga komento, humihiling ng mga pagbabago (change requests), at nag-aapruba ng pagsasanib (approve). Pagkatapos ng aprobasyon, isinasagawa ang merge o squash merge.
Ang karaniwang oras ng pagsusuri ng PR sa mobile development ay 4 hanggang 24 na oras. Ang library na Danger ay nag-automate ng bahagi ng mga pagsusuri, nagpapatakbo ng mga linter at test nang direkta sa PR.
Pagkatapos maaprubahan ang PR, ang feature branch ay maaaring isama sa develop sa iba't ibang paraan. Ang pagpili ng estratehiya sa pagsasanib ay nakakaapekto sa kasaysayan ng commit at posibilidad ng pagbabalik ng mga pagbabago.
Para sa mga mobile project na may madalas na release, kadalasang ginagamit ang squash merge: nagbibigay ito ng malinis na kasaysayan sa develop, habang ang mga detalye ng pagbuo ay nananatili sa paglalarawan ng PR at sa gawain ng tracker.
Kahit ang mga batikang developer ay nagkakamali sa pagtatrabaho gamit ang feature branch. Ang pag-alam sa mga karaniwang problema ay tumutulong upang maiwasan ang pagkawala ng oras at data.
Ang pinakamahusay na paraan upang maiwasan ang mga problemang ito ay ang magkasundo sa mga patakaran ng trabaho sa simula ng proyekto at gumamit ng mga awtomatikong pagsusuri sa CI/CD pipeline.
Isaalang-alang natin ang isang praktikal na senaryo: isang developer ay nagsisimula ng isang bagong feature ng authentication sa isang mobile app. Gumagawa siya ng feature branch, nagtatrabaho sa code, at tinatapos ang gawain sa pamamagitan ng Pull Request.
# Pag-update ng develop at paggawa ng feature branch
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Pagtatrabaho sa feature: mga commit
git add src/ui/login/
git commit -m "Add login screen layout"
# Pagpapadala ng feature branch sa server
git push origin feature/add-login-screen
# Pag-sync sa develop (rebase)
git fetch origin develop
git rebase origin/develop
# Pagkatapos maaprubahan ang PR: pag-update ng local develop at pagbura ng branch
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
Ang command na git branch -d ay bumabura ng branch pagkatapos lamang na ang mga pagbabago nito ay ganap na naisama. Kung ang branch ay hindi naisama, ang Git ay magmumungkahi na gamitin ang git branch -D para sa sapilitang pagbura — gamitin ang flag na ito nang may pag-iingat.
Ang CI/CD pipeline ay dapat tumakbo para sa bawat feature branch bago gumawa ng PR. Ito ay nagpapahintulot sa pagtuklas ng mga problema sa maagang yugto, bago ang code ay mapunta sa pagsusuri ng ibang developer.
# GitHub Actions para sa pagsusuri ng feature branch
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
Sinusuri ng pipeline kung ang code ay nagko-compile, pumapasa ang mga test, at ang estilo ng code ay sumusunod sa mga pamantayang tinatanggap sa team. Pagkatapos lamang pumasa sa lahat ng pagsusuri ay maaaring gumawa ng Pull Request.
Mga Madalas Itanong
Oo, ito ay karaniwang kasanayan. Bawat developer ay maaaring magtrabaho sa kanyang sariling feature branch, at lahat sila ay nagsi-sync sa develop nang independyente. Ang pangunahing patakaran — isang branch para sa isang gawain, upang maiwasan ang mga cross-task na dependency sa code.
Isagawa ang git rebase origin/develop sa iyong feature branch. Kung lumitaw ang mga conflict — lutasin ang mga ito isa-isa, ang mga commit ay muling isusulat sa ibabaw ng huling estado ng develop. Pagkatapos ng rebase ay kinakailangan ang git push --force para ma-update ang remote branch.
Kung ang gawain ay nakansela, ang feature branch ay maaaring direktang burahin. Gamitin ang git branch -d feature/name para sa lokal na branch at git push origin --delete feature/name para sa remote. Lahat ng hindi naka-commit na pagbabago ay mawawala.
Sa esensya, pareho lang ang mga ito. Iba't ibang team ang gumagamit ng iba't ibang prefix: feature/, task/, feat/. Walang pagkakaiba sa mekanika ng Git — lahat sila ay pansamantalang branch na ginawa mula sa develop para sa isolated development.
Oo, ito ay sapilitang kasanayan. Ang mga branch pagkatapos ng pagsasanib ay nagpapabagal sa listahan ng mga reference at maaaring magdulot ng kalituhan. Karamihan sa mga platform (GitHub, GitLab) ay nag-aalok na burahin ang branch kaagad pagkatapos ng merge PR, at ang mga lokal na branch ay binubura gamit ang command na git branch -d.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din