Feature Branch „ egy elágazási technika a Git-ben, amelyben minden új funkció egy külön ágban kerül kifejlesztésre, elkülönítve a fő kódtól. Ez lehetővé teszi több fejlesztő számára, hogy egyszerre dolgozzanak különböző feladatokon anélkül, hogy kockáztatnák a projekt stabil verziójának sérülését. A Atlassian, 2024 szerint a Feature Branch a Git Flow kulcseleme, és a legtöbb kereskedelmi projektben használják.
Főbb pontok
feature/funkció-neve a szabványos Git Flow-ban.Feature Branch (funkció ág) „ egy ideiglenes ág a Git-ben, amely a develop-ból jön létre egy külön funkcionalitás fejlesztésére. A hosszú életű main és develop ágakkal ellentétben a feature ágak korlátozott ideig léteznek „ néhány órától néhány hétig.
A feature branch fő célja, hogy elkülönítse az egy feladathoz kapcsolódó változtatásokat a kód többi részétől. A fejlesztő kísérletezhet, számos commitot készíthet, és akár el is ronthatja a kódot az ágában anélkül, hogy befolyásolná a csapat többi tagjának munkáját.
A fejlesztés befejezése után a feature ág visszakerül a develop-ba Pull Request segítségével, kötelező kód felülvizsgálattal. Az egyesítés után az ágat általában törlik, hogy a tároló tiszta maradjon.
Vincent Driessen, 2010 szerint a Git Flow modell feature ágakkal ipari szabvánnyá vált a különböző ágtípusok közötti egyértelmű felelősségmegosztásnak köszönhetően.
Munkafolyamat a feature branch-szel a fejlesztő által minden új funkcióhoz végrehajtott lépések sorozatából áll. Ez a folyamat minimalizálja az egyesítési konfliktusokat és biztosítja a kód minőségének ellenőrzését.
Az időszakos szinkronizálás a develop-pal kritikus fontosságú. Minél tovább él egy feature ág a develop változtatásainak egyesítése nélkül, annál nagyobb a konfliktusok valószínűsége a végső egyesítésnél.
| Szinkronizálás gyakorisága | Konfliktus kockázata | Fejlesztés kényelme |
|---|---|---|
| Naponta | Alacsony | Gyakori rebase vagy merge szükséges |
| Hetente egyszer | Közepes | Kényelmes mód, mérsékelt konfliktusok |
| Havonta egyszer | Magas | Összetett merge konfliktus megoldás kockázata |
| Soha | Kritikus | Az egyesítés adatvesztés nélkül lehetetlen lehet |
Ágak elnevezése „ a csapatal fegyelem fontos része. Az egységes elnevezési szabvány lehetővé teszi, hogy gyorsan meghatározzuk, melyik feladaton dolgoznak és ki végzi azt.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.A feladat ID használata JIRA-ból, Trello-ból vagy más rendszerből a legjobb gyakorlat. Automatikusan összekapcsolja a kódot a feladattal, és leegyszerűsíti az ágak keresését a git log segítségével.
Pull Request (vagy Merge Request a GitLab-ben) „ egy kérelem a feature ág develop-ba egyesítésére. A PR nem csupán egy technikai művelet, hanem egy csapat szintű kód felülvizsgálati folyamat, amely javítja a kód minőségét és terjeszti a tudást a csapaton belül.
Egy jó PR tartalmaz egy címet a feladat rövid leírásával, egy linket a tickethez és a változtatások leírását. A fejlesztőnek jeleznie kell, hogy pontosan mi történt, mely fájlok változtak meg, és vannak-e potenciális kockázatok a projekt más részei számára.
A csapat átnézi a kódot a PR-ben, megjegyzéseket hagy, változtatásokat kér (change requests) és jóváhagyja az egyesítést (approve). A jóváhagyás után merge vagy squash merge történik.
A PR átlagos átfutási ideje a mobilfejlesztésben 4-24 óra. A Danger könyvtár automatizálja az ellenőrzések egy részét, lintereket és teszteket futtatva közvetlenül a PR-ben.
A PR jóváhagyása után a feature ág különböző módokon egyesíthető a develop-ba. Az egyesítési stratégia megválasztása befolyásolja a commit történetet és a változtatások visszaállításának lehetőségét.
Gyakori kiadásokkal rendelkező mobil projekteknél leggyakrabban a squash merge-t használják: tiszta történetet ad a develop-ban, míg a fejlesztés részletei a PR leírásában és a tracker feladatban maradnak.
Még tapasztalt fejlesztők is követnek el hibákat a feature ágak használatakor. A tipikus problémák ismerete segít elkerülni az idő- és adatvesztést.
A legjobb módja e problémák elkerülésének, ha a projekt elején megállapodunk a munkaszabályokban és automatikus ellenőrzéseket használunk a CI/CD pipeline-ban.
Tekintsünk egy gyakorlati forgatókönyvet: egy fejlesztő egy új hitelesítési funkciót kezd el egy mobil alkalmazásban. Létrehoz egy feature ágat, dolgozik a kódon, és befejezi a feladatot egy Pull Request segítségével.
# Develop frissítése és feature ág létrehozása
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Munka a funkción: commitek
git add src/ui/login/
git commit -m "Add login screen layout"
# Feature ág küldése a szerverre
git push origin feature/add-login-screen
# Szinkronizálás a develop-pal (rebase)
git fetch origin develop
git rebase origin/develop
# PR jóváhagyása után: helyi develop frissítése és ág törlése
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
A git branch -d parancs csak azután törli az ágat, hogy a változtatásai teljesen egyesítésre kerültek. Ha az ág nincs egyesítve, a Git a git branch -D használatát javasolja a kényszerített törléshez „ ezt a jelzőt óvatosan használja.
A CI/CD pipeline-nak minden feature ághoz el kell indulnia a PR létrehozása előtt. Ez lehetővé teszi a problémák korai szakaszban történő felismerését, mielőtt a kód más fejlesztők felülvizsgálatára kerülne.
# GitHub Actions a feature ág ellenőrzéséhez
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
A pipeline ellenőrzi, hogy a kód fordul-e, a tesztek átmennek-e, és a kódstílus megfelel-e a csapat által elfogadott szabványoknak. Csak az összes ellenőrzés sikeres teljesítése után hozható létre Pull Request.
Gyakran Ismételt Kérdések
Igen, ez szabványos gyakorlat. Minden fejlesztő dolgozhat a saját feature ágában, és mindegyik függetlenül szinkronizálódik a develop-pal. A fő szabály „ egy ág egy feladathoz, hogy elkerüljük a cross-task függőségeket a kódban.
Hajtsa végre a git rebase origin/develop parancsot a feature ágán. Ha konfliktusok merülnek fel „ oldja meg őket egyesével, a commitek átíródnak a develop legutóbbi állapotának tetejére. A rebase után git push --force szükséges a távoli ág frissítéséhez.
Ha a feladatot törölték, a feature ág egyszerűen törölhető. Használja a git branch -d feature/name parancsot a helyi ághoz és a git push origin --delete feature/name parancsot a távoli ághoz. Minden nem commit-elt változás elveszik.
Lényegében ugyanaz. Különböző csapatok különböző előtagokat használnak: feature/, task/, feat/. Nincs különbség a Git mechanikájában „ mindegyik ideiglenes ág, amelyet a develop-ból hoztak létre elkülönített fejlesztéshez.
Igen, ez kötelező gyakorlat. Az egyesítés utáni ágak elpiszkítják a referencialistát és zavart okozhatnak. A legtöbb platform (GitHub, GitLab) felkínálja az ág törlését közvetlenül a merge PR után, a helyi ágak pedig a git branch -d paranccsal törölhetők.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is