Feature Branch — Git में ब्रांचिंग की एक तकनीक है जिसमें प्रत्येक नई सुविधा को मुख्य कोड से अलग एक अलग ब्रांच में विकसित किया जाता है। यह कई डेवलपर्स को प्रोजेक्ट के स्थिर संस्करण को नुकसान पहुँचाने के जोखिम के बिना विभिन्न कार्यों पर एक साथ काम करने की अनुमति देता है। Atlassian, 2024 के अनुसार, Feature Branch Git Flow का एक प्रमुख तत्व है और अधिकांश वाणिज्यिक प्रोजेक्ट्स में उपयोग किया जाता है।
मुख्य बिंदु
feature/फ़ंक्शन-नाम।Feature Branch (सुविधा ब्रांच) Git में एक अस्थायी ब्रांच है जो किसी विशिष्ट कार्यक्षमता को विकसित करने के लिए develop से बनाई जाती है। लंबे समय तक चलने वाली main और develop ब्रांच के विपरीत, feature ब्रांच सीमित समय — कुछ घंटों से लेकर कुछ हफ्तों तक — के लिए मौजूद रहती हैं।
feature branch का मुख्य उद्देश्य एक कार्य से संबंधित परिवर्तनों को बाकी कोड से अलग करना है। डेवलपर अपनी ब्रांच में प्रयोग कर सकता है, कई commits कर सकता है और कोड को तोड़ भी सकता है, बिना टीम के अन्य सदस्यों के काम को प्रभावित किए।
विकास पूरा होने के बाद, feature branch को अनिवार्य कोड समीक्षा के साथ Pull Request के माध्यम से वापस develop में विलय कर दिया जाता है। विलय के बाद, रिपॉजिटरी को साफ रखने के लिए ब्रांच को आमतौर पर हटा दिया जाता है।
Vincent Driessen, 2010 के अनुसार, feature ब्रांच के साथ Git Flow मॉडल विभिन्न प्रकार की ब्रांच के बीच जिम्मेदारियों के स्पष्ट विभाजन के कारण उद्योग मानक बन गया।
कार्यप्रवाह feature branch के साथ उन चरणों के अनुक्रम से बना है जो डेवलपर प्रत्येक नई सुविधा के लिए करता है। यह प्रक्रिया विलय विवादों को कम करती है और कोड गुणवत्ता नियंत्रण सुनिश्चित करती है।
develop के साथ समय-समय पर सिंक्रोनाइज़ेशन बहुत महत्वपूर्ण है। feature ब्रांच जितनी अधिक समय तक develop से परिवर्तनों को विलय किए बिना रहती है, अंतिम विलय में विवादों की संभावना उतनी ही अधिक होती है।
| सिंक्रोनाइज़ेशन आवृत्ति | विवाद जोखिम | विकास सुविधा |
|---|---|---|
| दैनिक | कम | बार-बार rebase या merge आवश्यक |
| साप्ताहिक | मध्यम | आरामदायक गति, मध्यम विवाद |
| मासिक | उच्च | जटिल विलय विवाद समाधान का जोखिम |
| कभी नहीं | गंभीर | डेटा हानि के बिना विलय असंभव हो सकता है |
ब्रांच नामकरण टीम अनुशासन का एक महत्वपूर्ण हिस्सा है। एक समान नामकरण मानक जल्दी से यह पहचानने की अनुमति देता है कि किस कार्य पर काम चल रहा है और इसे कौन कर रहा है।
feature/added-auth-module।feature/PROJ-42-add-login।feature/feat/analytics-dashboard।JIRA, Trello या अन्य सिस्टम से कार्य ID का उपयोग करना सबसे अच्छा अभ्यास है। यह स्वचालित रूप से कोड को कार्य से जोड़ता है और git log के माध्यम से ब्रांच खोज को सरल बनाता है।
Pull Request (या GitLab में Merge Request) feature ब्रांच को develop में विलय करने का अनुरोध है। PR केवल एक तकनीकी संक्रिया नहीं है, बल्कि एक टीम कोड समीक्षा प्रक्रिया है जो कोड गुणवत्ता में सुधार करती है और टीम के भीतर ज्ञान फैलाती है।
एक अच्छे PR में कार्य के संक्षिप्त विवरण के साथ शीर्षक, टिकट का लिंक और परिवर्तनों का विवरण होता है। डेवलपर को यह बताना चाहिए कि वास्तव में क्या किया गया, कौन सी फ़ाइलें बदली गईं और क्या प्रोजेक्ट के अन्य भागों के लिए संभावित जोखिम हैं।
टीम PR में कोड की समीक्षा करती है, टिप्पणियाँ छोड़ती है, परिवर्तनों का अनुरोध करती है (change requests) और विलय को मंजूरी देती है (approve)। स्वीकृति के बाद, merge या squash merge किया जाता है।
मोबाइल डेवलपमेंट में PR समीक्षा का औसत समय 4 से 24 घंटे तक है। Danger लाइब्रेरी सीधे PR में linters और परीक्षण चलाकर कुछ जाँचों को स्वचालित करती है।
PR की स्वीकृति के बाद, feature ब्रांच को विभिन्न तरीकों से develop में विलय किया जा सकता है। विलय रणनीति का चुनाव commit इतिहास और परिवर्तनों को वापस लाने की क्षमता को प्रभावित करता है।
बार-बार रिलीज़ वाली मोबाइल परियोजनाओं के लिए, आमतौर पर squash merge का उपयोग किया जाता है: यह develop में साफ इतिहास देता है, जबकि विकास विवरण PR विवरण और tracker कार्य में रहते हैं।
अनुभवी डेवलपर भी feature ब्रांच के साथ काम करते समय गलतियाँ करते हैं। सामान्य समस्याओं का ज्ञान समय और डेटा की हानि से बचने में मदद करता है।
इन समस्याओं से बचने का सबसे अच्छा तरीका प्रोजेक्ट की शुरुआत में काम के नियमों पर सहमत होना और CI/CD पाइपलाइन में स्वचालित जाँच का उपयोग करना है।
एक व्यावहारिक परिदृश्य पर विचार करें: एक डेवलपर मोबाइल ऐप में एक नई प्रमाणीकरण सुविधा शुरू करता है। वह एक feature ब्रांच बनाता है, कोड पर काम करता है और Pull Request के साथ कार्य पूरा करता है।
# develop को अपडेट करें और feature ब्रांच बनाएँ
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# सुविधा पर काम: commits
git add src/ui/login/
git commit -m "Add login screen layout"
# feature ब्रांच को सर्वर पर push करें
git push origin feature/add-login-screen
# develop के साथ सिंक्रोनाइज़ करें (rebase)
git fetch origin develop
git rebase origin/develop
# PR स्वीकृति के बाद: स्थानीय develop अपडेट करें और ब्रांच हटाएँ
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
कमांड git branch -d ब्रांच को तभी हटाता है जब उसके परिवर्तन पूरी तरह से विलय हो चुके हों। यदि ब्रांच विलय नहीं हुई है, तो Git जबरन हटाने के लिए git branch -D का उपयोग करने का सुझाव देगा — इस फ्लैग का सावधानी से उपयोग करें।
PR बनाने से पहले प्रत्येक feature ब्रांच के लिए CI/CD पाइपलाइन चलनी चाहिए। यह कोड के अन्य डेवलपर्स की समीक्षा में जाने से पहले प्रारंभिक चरण में समस्याओं का पता लगाने में मदद करता है।
# feature ब्रांच की जाँच के लिए 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
पाइपलाइन जाँचती है कि कोड संकलित होता है, परीक्षण पास होते हैं और कोड शैली टीम के मानकों को पूरा करती है। सभी जाँच पास करने के बाद ही Pull Request बनाया जा सकता है।
अक्सर पूछे जाने वाले प्रश्न
हाँ, यह मानक अभ्यास है। प्रत्येक डेवलपर अपनी feature ब्रांच में काम कर सकता है, और वे सभी develop के साथ स्वतंत्र रूप से सिंक्रोनाइज़ होती हैं। मुख्य नियम — एक कार्य के लिए एक ब्रांच, कोड में cross-task निर्भरता से बचने के लिए।
अपनी feature ब्रांच पर git rebase origin/develop चलाएँ। यदि विवाद उत्पन्न होते हैं — उन्हें एक-एक करके हल करें, commits develop की नवीनतम स्थिति के ऊपर पुनः लिखे जाएँगे। Rebase के बाद, रिमोट ब्रांच को अपडेट करने के लिए git push --force की आवश्यकता होगी।
यदि कार्य रद्द कर दिया गया है, तो feature ब्रांच को बस हटाया जा सकता है। स्थानीय ब्रांच के लिए git branch -d feature/name और रिमोट के लिए git push origin --delete feature/name चलाएँ। सभी अनकमिटेड परिवर्तन खो जाएँगे।
मूलतः यह एक ही चीज़ है। विभिन्न टीमें विभिन्न उपसर्गों का उपयोग करती हैं: feature/, task/, feat/। Git मैकेनिक्स में कोई अंतर नहीं है — ये सभी अलग-अलग विकास के लिए develop से बनाई गई अस्थायी ब्रांच हैं।
हाँ, यह एक अनिवार्य अभ्यास है। विलय के बाद ब्रांच संदर्भों की सूची को अव्यवस्थित करती हैं और भ्रम पैदा कर सकती हैं। अधिकांश प्लेटफ़ॉर्म (GitHub, GitLab) PR के विलय के तुरंत बाद ब्रांच को हटाने का विकल्प देते हैं, और स्थानीय ब्रांच को git branch -d कमांड से हटाया जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें