Feature Branch — bu, Git-də budaqlanma texnikasıdır, burada hər yeni funksiya əsas koddan təcrid olunmuş ayrıca bir budaqda işlənir. Bu, bir neçə tərtibatçıya eyni anda müxtəlif tapşırıqlar üzərində layihənin stabil versiyasını zədələmək riski olmadan işləməyə imkan verir. Atlassian, 2024-ə görə, Feature Branch Git Flow-un əsas elementidir və əksər kommersiya layihələrində istifadə olunur.
Əsas məqamlar
feature/funksiya-adı standart Git Flow-da.Feature Branch (funksiya budağı) — bu, ayrıca funksionallığın işlənməsi üçün develop-dan yaradılan Git-də müvəqqəti budaqdır. Uzunömürlü main və develop budaqlarından fərqli olaraq, feature budaqları məhdud müddət — bir neçə saatdan bir neçə həftəyə qədər mövcud olur.
Feature branch-in əsas məqsədi bir tapşırıqla əlaqəli dəyişiklikləri qalan koddan təcrid etməkdir. Tərtibatçı öz budağında təcrübələr apara bilər, çoxlu commitlər edə bilər və hətta kodu sındıra bilər, komandanın digər üzvlərinin işinə təsir etmədən.
İşlənmə tamamlandıqdan sonra feature budağı Pull Request vasitəsilə məcburi kod icmalı ilə develop-ə geri birləşdirilir. Birləşdirmədən sonra budaq adətən silinir ki, repozitori təmiz qalsın.
Vincent Driessen, 2010-a görə, feature budaqları ilə Git Flow modeli müxtəlif budaq növləri arasında aydın məsuliyyət bölgüsü sayəsində sənaye standartına çevrildi.
Workflow feature branch ilə tərtibatçının hər yeni funksiya üçün yerinə yetirdiyi addımlar ardıcıllığından ibarətdir. Bu proses birləşdirmə münaqişələrini minimuma endirir və kod keyfiyyətinə nəzarəti təmin edir.
Dövri develop ilə sinxronizasiya kritik əhəmiyyətlidir. Feature budağı develop-dən dəyişiklikləri birləşdirmədən nə qədər uzun yaşayırsa, son birləşdirmədə münaqişə ehtimalı bir o qədər yüksəkdir.
| Sinxronizasiya tezliyi | Münaqişə riski | İşlənmə rahatlığı |
|---|---|---|
| Hər gün | Aşağı | Tez-tez rebase və ya merge tələb edir |
| Həftədə bir dəfə | Orta | Rahat rejim, orta münaqişələr |
| Ayda bir dəfə | Yüksək | Mürəkkəb merge conflict resolution riski |
| Heç vaxt | Kritik | Birləşdirmə məlumat itkisi olmadan mümkün olmaya bilər |
Budaqların adlandırılması — komanda intizamının vacib hissəsidir. Vahid ad standartı hansı tapşırıq üzərində iş getdiyini və onu kimin yerinə yetirdiyini tez müəyyən etməyə imkan verir.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.JIRA, Trello və ya digər sistemdən tapşırıq ID-si istifadə etmək ən yaxşı təcrübədir. O, avtomatik olaraq kodu tapşırıqla əlaqələndirir və git log vasitəsilə budaqların axtarışını asanlaşdırır.
Pull Request (və ya GitLab-da Merge Request) — feature budağının develop-ə birləşdirilməsi üçün sorğudur. PR sadəcə texniki əməliyyat deyil, kod keyfiyyətini artıran və komanda daxilində bilikləri yayan komanda kod icmalı prosesidir.
Yaxşı PR tapşırığın qısa təsviri ilə başlıq, ticketa keçid və dəyişikliklərin təsvirini ehtiva edir. Tərtibatçı dəqiq nə edildiyini, hansı faylların dəyişdirildiyini və layihənin digər hissələri üçün potensial risklərin olub-olmadığını göstərməlidir.
Komanda PR-də kodu nəzərdən keçirir, şərhlər buraxır, dəyişikliklər tələb edir (change requests) və birləşdirməni təsdiqləyir (approve). Təsdiqləmədən sonra merge və ya squash merge yerinə yetirilir.
Mobil inkişafda PR-nin orta yoxlama müddəti 4 ilə 24 saat arasındadır. Danger kitabxanası yoxlamaların bir hissəsini avtomatlaşdırır, linterləri və testləri birbaşa PR-də işə salır.
PR təsdiqləndikdən sonra feature budağı develop-ə müxtəlif yollarla birləşdirilə bilər. Birləşdirmə strategiyasının seçimi commit tarixçəsinə və dəyişikliklərin geri qaytarılma imkanına təsir edir.
Tez buraxılışları olan mobil layihələr üçün ən çox squash merge istifadə olunur: develop-də təmiz tarixçə verir, işlənmə detalları isə PR təsvirində və tracker tapşırığında qalır.
Hətta təcrübəli tərtibatçılar feature budaqları ilə işdə səhvlərə yol verirlər. Tipik problemləri bilmək vaxt və məlumat itkisinin qarşısını almağa kömək edir.
Bu problemlərin qarşısını almağın ən yaxşı yolu layihənin başlanğıcında iş qaydalarını müəyyən etmək və CI/CD pipeline-da avtomatik yoxlamalardan istifadə etməkdir.
Praktik ssenarini nəzərdən keçirək: tərtibatçı mobil tətbiqdə yeni avtorizasiya funksiyasına başlayır. Feature budağı yaradır, kod üzərində işləyir və tapşırığı Pull Request ilə tamamlayır.
# Develop-in yenilənməsi və feature budağının yaradılması
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Funksiya üzərində iş: commitlər
git add src/ui/login/
git commit -m "Add login screen layout"
# Feature budağının serverə göndərilməsi
git push origin feature/add-login-screen
# Develop ilə sinxronizasiya (rebase)
git fetch origin develop
git rebase origin/develop
# PR təsdiqləndikdən sonra: lokal develop-in yenilənməsi və budağın silinməsi
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
git branch -d əmri budağı yalnız onun dəyişiklikləri tam birləşdirildikdən sonra silir. Budaq birləşdirilməyibsə, Git məcburi silmə üçün git branch -D istifadə etməyi təklif edəcək — bu flag-ı ehtiyatla istifadə edin.
CI/CD pipeline hər feature budağı üçün PR yaradılmazdan əvvəl işə düşməlidir. Bu, kod digər tərtibatçıların icmalına düşməzdən əvvəl problemləri erkən mərhələdə aşkar etməyə imkan verir.
# Feature budağını yoxlamaq üçün GitHub Actions
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
Pipeline kodun kompilyasiya olunduğunu, testlərin keçdiyini və kod stilinin komandada qəbul edilmiş standartlara uyğun olduğunu yoxlayır. Yalnız bütün yoxlamalardan keçdikdən sonra Pull Request yaradıla bilər.
Tez-tez verilən suallar
Bəli, bu standart təcrübədir. Hər tərtibatçı öz feature budağında işləyə bilər və hamısı develop ilə müstəqil sinxronizasiya olunur. Əsas qayda — bir tapşırıq üçün bir budaq, kodda cross-task asılılıqlarının qarşısını almaq üçün.
Feature budağınızda git rebase origin/develop yerinə yetirin. Münaqişələr yaranarsa — onları bir-bir həll edin, commitlər develop-in son vəziyyətinin üzərinə yazılacaq. Rebase-dən sonra uzaq budağı yeniləmək üçün git push --force tələb olunacaq.
Tapşırıq ləğv edilibsə, feature budağını sadəcə silmək olar. Lokal budaq üçün git branch -d feature/name və uzaq budaq üçün git push origin --delete feature/name əmrini verin. Bütün commit olunmamış dəyişikliklər itiriləcək.
Əslində bu eyni şeydir. Müxtəlif komandalar müxtəlif prefikslərdən istifadə edir: feature/, task/, feat/. Git mexanikasında fərq yoxdur — hamısı təcrid olunmuş işlənmə üçün develop-dan yaradılan müvəqqəti budaqlardır.
Bəli, bu məcburi təcrübədir. Birləşdirmədən sonra budaqlar referens siyahısını zibilləyir və qarışıqlığa səbəb ola bilər. Əksər platformalar (GitHub, GitLab) PR merge-dən dərhal sonra budağı silməyi təklif edir, lokal budaqlar isə git branch -d əmri ilə silinir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun