Feature Branch Git-də: nədir, necə yaratmaq və brançlarla işləmək

Müəllif: IT Sectr Dərc olunub: 2026-05-09 Oxuma vaxtı: 8 dəq

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 Branch — bu, develop və main-dən təcrid olunmuş, yeni funksiyanın işlənməsi üçün ayrıca Git budağıdır.
  • Kodun təcrid olunması bir neçə tərtibatçıya münaqişəsiz paralel olaraq müxtəlif funksiyalar üzərində işləməyə imkan verir.
  • Pull Request — feature budağını develop-ə birləşdirmədən əvvəl kod icmalı üçün əsas mexanizmdir.
  • Adlandırma qaydaları feature budaqları: feature/funksiya-adı standart Git Flow-da.
  • Budağın silinməsi birləşdirmədən sonra — repozitoridə nizamı qorumaq üçün məcburi təcrübədir.

Feature Branch nədir Git-də

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.

Feature Branch ilə iş workflow-u

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.

  1. Budağın yaradılması develop-in son commit-indən. Tərtibatçı develop-a keçir, onu yeniləyir və yeni feature budağı yaradır.
  2. İşlənmə və commitlər feature budağında. Tərtibatçı dəyişikliklər edir, aydın təsvirlərlə commitlər edir və dövri olaraq budağı uzaq repozitoriyə push edir.
  3. Develop ilə sinxronizasiya — işlənmə zamanı əsas budaq irəli gedə bilər. Tərtibatçı öz feature budağına rebase və ya merge develop edir.
  4. Pull Request-in yaradılması — funksiya hazır olduqda, tərtibatçı kod icmalı üçün PR açır. Komanda kodu yoxlayır və şərhlər buraxır.
  5. Birləşdirmə və silmə — PR təsdiqləndikdən sonra budaq develop-ə birləşdirilir və həm lokal, həm də uzaqdan silinir.

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.

Feature budağının sinxronizasiya tezliyi

Sinxronizasiya tezliyiMünaqişə riskiİşlənmə rahatlığı
Hər günAşağıTez-tez rebase və ya merge tələb edir
Həftədə bir dəfəOrtaRahat rejim, orta münaqişələr
Ayda bir dəfəYüksəkMürəkkəb merge conflict resolution riski
Heç vaxtKritikBirləşdirmə məlumat itkisi olmadan mümkün olmaya bilər

Feature budaqlarının adlandırma qaydaları

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/ad — feature/ prefiksi klassik Git Flow-da istifadə olunur. Nümunə: feature/added-auth-module.
  • feature/JIRA-123-təsvir — izləmə sistemində tapşırıq nömrəsinə bağlama. Nümunə: feature/PROJ-42-add-login.
  • feature/növ/ad — tapşırıq növünü göstərən genişləndirilmiş format. Nümunə: 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 prosesi

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.

Yaxşı PR yaratmaq üçün tövsiyələr

  • Ölçü — 300-400 sətirdən çox olmamalıdır. Böyük PR-ləri nəzərdən keçirmək çətindir, yoxlama keyfiyyəti aşağı düşür.
  • Bir PR — bir tapşırıq — bir sorğuda əlaqəsiz dəyişiklikləri qarışdırmaqdan çəkinin.
  • Ekran görüntüləri — UI dəyişiklikləri üçün əvvəl və sonra ekran görüntüləri əlavə edin.
  • Testlər — yeni funksionallıq üçün vahid testlər yazın və onları PR-ə daxil edin.

Feature budaqlarının birləşdirmə strategiyaları

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.

  • Merge commit — feature budağının bütün commit tarixçəsini qoruyaraq birləşdirmə commit-i yaradır. Tarixçə tam qalır, lakin budaqlanma qrafiki mürəkkəbləşir.
  • Squash merge — feature budağının bütün commit-lərini birinə birləşdirir və develop-in üstünə əlavə edir. Tarixçə təmizlənir, lakin aralıq commit-lər haqqında məlumat itir.
  • Rebase and merge — feature budağının commit-lərini develop-in son commit-inin üstünə yenidən yazır və əlavə commit olmadan birləşdirir. Tarixçə xətti qalır.

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.

Feature Branch ilə işdə tipik səhvlə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.

  • Budağın çox uzun yaşaması — feature budağı develop ilə sinxronizasiya olmadan 2-3 həftədən çox yaşayır, bu da kütləvi birləşdirmə münaqişələrinə səbəb olur.
  • Qeyri-müəyyən təsvirlərlə commitlər — “fix” və ya “update” kimi mesajlar nəyin dəyişdirildiyini və niyə dəyişdirildiyini anlamağa imkan vermir.
  • Tapşırıqların qarışdırılması — bir feature budağında iki əlaqəsiz funksiya işlənir ki, bu da seçmə geri qaytarmanı qeyri-mümkün edir.
  • Sinxronizasiyanın olmaması — tərtibatçı git fetch etmir və develop-i yeniləmir, buna görə son merge-də münaqişələr yaranır.

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.

Feature Branch ilə iş üçün əmr nümunələri

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.

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

Feature budağında yoxlamaların avtomatlaşdırılması

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.

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

Eyni anda bir neçə feature budağı ola bilərmi?

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ğı develop-dən çox geri qalıbsa nə etməli?

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.

Feature budağı birləşdirmədən artıq lazım deyilsə nə etməli?

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.

Feature branch task branch-dan nə ilə fərqlənir?

Ə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.

Feature budağını birləşdirmədən sonra silmək lazımdırmı?

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ə

  • Feature Branch — develop-dan yaradılan, bir funksiyanın təcrid olunmuş işlənməsi üçün müvəqqəti budaq.
  • Kodun təcrid olunması münaqişəsiz və stabil kodu zədələmək riski olmadan müxtəlif funksiyalar üzərində paralel işləməyə imkan verir.
  • Pull Request məcburi kod icmalı ilə — feature budağının birləşdirilməsindən əvvəl əsas keyfiyyətə nəzarət mexanizmi.
  • Adlandırma qaydaları — izləmə sistemindən tapşırıq ID-si və ingilis dilində qısa təsvirlə feature/ prefiksi.
  • Müntəzəm sinxronizasiya rebase və ya merge vasitəsilə develop ilə birləşdirmə münaqişələrini minimuma endirmək üçün zəruridir.
  • Squash merge — mobil layihələr üçün optimal strategiya, develop-də təmiz tarixçə verir.
  • Tövsiyə: feature budağının ömrünü 5 iş günü ilə məhdudlaşdırın və birləşdirmədən dərhal sonra budağı silin.

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.

Layihəni müzakirə et

Həm də oxuyun