Feature Branch sa Git: ano ito, paano gumawa at magtrabaho gamit ang mga branch

May-akda: IT Sectr Nai-publish: 2026-05-09 Oras ng pagbabasa: 8 min

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 Branch — ay isang hiwalay na Git branch para sa pagbuo ng isang bagong feature, naka-isolate mula sa develop at main.
  • Pag-iwas ng code ay nagpapahintulot sa maraming developer na magtrabaho nang parallel sa iba't ibang feature nang walang mga conflict.
  • Pull Request — ang pangunahing mekanismo para sa pagsusuri ng code bago ang pagsasanib ng feature branch sa develop.
  • Mga patakaran sa pagpapangalan ng mga feature branch: feature/pangalan-ng-feature sa standard na Git Flow.
  • Pagbura ng branch pagkatapos ng pagsasanib — sapilitang kasanayan para mapanatili ang kaayusan sa repository.

Ano ang Feature Branch sa Git

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

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.

  1. Paggawa ng branch mula sa huling commit ng develop. Ang developer ay lumipat sa develop, ina-update ito, at gumagawa ng bagong feature branch.
  2. Pagbuo at mga commit sa feature branch. Ang developer ay gumagawa ng mga pagbabago, nagko-commit na may malinaw na paglalarawan, at pana-panahong nagpu-push ng branch sa remote repository.
  3. Pag-sync sa develop — sa panahon ng pagbuo, ang pangunahing branch ay maaaring umusad. Ang developer ay nagsasagawa ng rebase o merge develop sa kanyang feature branch.
  4. Paggawa ng Pull Request — kapag handa na ang feature, ang developer ay nagbubukas ng PR para sa pagsusuri ng code. Sinusuri ng team ang code at nag-iiwan ng mga komento.
  5. Pagsasanib at pagbura — pagkatapos maaprubahan ang PR, ang branch ay isinasama sa develop at binubura pareho nang lokal at remote.

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 ng feature branch

Dalas ng pag-syncPanganib ng conflictKaginhawaan ng pagbuo
Araw-arawMababaNangangailangan ng madalas na rebase o merge
LingguhanKatamtamanKomportableng mode, katamtamang conflict
BuwananMataasPanganib ng komplikadong merge conflict resolution
Hindi kailanmanKritikalAng pagsasanib ay maaaring hindi posible nang walang pagkawala ng data

Mga patakaran sa pagpapangalan ng feature branch

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/pangalan — ang prefix na feature/ ay ginagamit sa klasikong Git Flow. Halimbawa: feature/added-auth-module.
  • feature/JIRA-123-paglalarawan — pag-uugnay sa numero ng gawain sa tracking system. Halimbawa: feature/PROJ-42-add-login.
  • feature/uri/pangalan — pinalawak na format na may pagtukoy sa uri ng gawain. Halimbawa: 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.

Proseso ng Pull Request

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.

Mga rekomendasyon para sa paggawa ng mahusay na PR

  • Sukat — hindi hihigit sa 300-400 linya ng pagbabago. Ang malalaking PR ay mahirap suriin, bumababa ang kalidad ng pagsusuri.
  • Isang PR — isang gawain — iwasan ang paghahalo ng hindi nauugnay na pagbabago sa isang kahilingan.
  • Screenshot — para sa mga pagbabago sa UI, maglakip ng screenshot bago at pagkatapos.
  • Test — para sa bagong functionality, sumulat ng unit test at isama ang mga ito sa PR.

Mga estratehiya sa pagsasanib ng feature branch

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.

  • Merge commit — gumagawa ng commit ng pagsasanib, pinapanatili ang buong kasaysayan ng commit ng feature branch. Ang kasaysayan ay nananatiling kumpleto, ngunit ang graph ng pagsasanga ay nagiging mas kumplikado.
  • Squash merge — pinagsasama ang lahat ng commit ng feature branch sa isa at idinadagdag ito sa ibabaw ng develop. Nagiging mas malinis ang kasaysayan, ngunit nawawala ang impormasyon tungkol sa mga intermediate na commit.
  • Rebase and merge — muling isinusulat ang mga commit ng feature branch sa ibabaw ng huling commit ng develop at isinasama nang walang karagdagang commit. Ang kasaysayan ay nananatiling linear.

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.

Mga karaniwang pagkakamali sa pagtatrabaho gamit ang Feature Branch

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.

  • Masyadong mahabang buhay ng branch — ang feature branch ay nabubuhay nang higit sa 2-3 linggo nang walang pag-sync sa develop, na humahantong sa malalaking conflict sa pagsasanib.
  • Commit na may hindi malinaw na paglalarawan — ang mga mensaheng tulad ng “fix” o “update” ay hindi nagpapaliwanag kung ano ang binago at kung bakit.
  • Paghahalo ng gawain — sa isang feature branch, dalawang hindi nauugnay na feature ang binuo, na ginagawang imposible ang piling pagbabalik.
  • Kawalan ng pag-sync — ang developer ay hindi gumagawa ng git fetch at hindi ina-update ang develop, kaya sa huling merge ay lumilitaw ang mga conflict.

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.

Mga halimbawa ng command para sa Feature Branch

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.

bash
# 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.

Automation ng mga pagsusuri sa feature branch

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.

yaml
# 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

Maaari bang magkaroon ng maraming feature branch nang sabay-sabay?

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.

Paano kung ang feature branch ay nahuhuli nang husto sa develop?

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.

Paano kung ang feature branch ay hindi na kailangan nang walang pagsasanib?

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.

Paano naiiba ang feature branch sa task branch?

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.

Kailangan bang burahin ang feature branch pagkatapos ng pagsasanib?

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

  • Feature Branch — ay isang pansamantalang branch para sa isolated development ng isang feature, na ginawa mula sa develop.
  • Pag-iwas ng code ay nagpapahintulot ng parallel na trabaho sa iba't ibang feature nang walang conflict at panganib na masira ang stable na code.
  • Pull Request na may sapilitang pagsusuri ng code — pangunahing mekanismo ng kontrol sa kalidad bago ang pagsasanib ng feature branch.
  • Mga patakaran sa pagpapangalan — prefix na feature/ na may ID ng gawain mula sa tracking system at maikling paglalarawan sa Ingles.
  • Regular na pag-sync sa develop sa pamamagitan ng rebase o merge ay kinakailangan upang mabawasan ang mga conflict sa pagsasanib.
  • Squash merge — pinakamainam na estratehiya para sa mobile project, na nagbibigay ng malinis na kasaysayan sa develop.
  • Rekomendasyon: limitahan ang buhay ng feature branch sa 5 araw ng trabaho at burahin ang branch kaagad pagkatapos ng pagsasanib.

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.

Pag-usapan ang proyekto

Basahin din