PHP डेवलपर्स के लिए Git वर्कफ़्लो: कैसे कॉन्फ्लिक्ट से डरना छोड़ें और कोड-रिव्यू से प्यार करें
\n\nक्या आपने कभी ब्रांचेस को मर्ज करने में आधा दिन बिताया है, और अंत में प्रोडक्शन में "फैटल एरर" मिली है? या हो सकता है कि आपके सहकर्मी ने गलती से "कच्चा" कोड सीधे master में push कर दिया हो, और आपको इसका पता तब चला जब साइट डाउन हो गई? अगर हाँ — तो क्लब में आपका स्वागत है। लेकिन अच्छी खबर यह है कि ऐसी 90% समस्याएँ सही PHP डेवलपर्स के लिए Git वर्कफ़्लो से हल हो जाती हैं।
\n\nइस लेख में हम डॉक्यूमेंटेशन दोबारा नहीं बताएँगे। हम वास्तविक परिदृश्यों पर चर्चा करेंगे: ब्रांचेस को कैसे व्यवस्थित करें, कब rebase का उपयोग करें और कब merge का, और प्रक्रियाओं को कैसे सेट करें ताकि टीम कमिट में भ्रमित न हो। चलिए शुरू करते हैं!
\n\nक्यों "बस git add . && git push" बुराई है
\n\nकई PHP डेवलपर्स, विशेषकर शुरुआत में, Git को "क्लाउड फ्लैश ड्राइव" की तरह उपयोग करते हैं। वे सब कुछ कमिट करते हैं, सार्थक संदेश नहीं लिखते और सीधे master में push करते हैं। यह तब तक काम करता है जब तक पहला कॉन्फ्लिक्ट न आए या जब तक किसी बदलाव को वापस रोलबैक करने की आवश्यकता न हो।
\n\nसही git workflow php को तीन कार्य हल करने चाहिए:
\n- \n
- बदलावों का अलगाव — ताकि कोई फीचर या बगफिक्स काम कर रहे कोड को न तोड़े। \n
- पारदर्शिता — ताकि कोई भी डेवलपर समझ सके कि प्रोजेक्ट में क्या हो रहा है। \n
- ऑटोमेशन — ताकि कोड के प्रोडक्शन में जाने से पहले टेस्ट और लिंटर्स चल जाएँ। \n
आइए देखें कि इसे व्यवहार में कैसे लागू किया जाए।
\n\nब्रांचिंग रणनीति चुनना: Git Flow, GitHub Flow या अपना कुछ?
\n\nPHP प्रोजेक्ट्स के लिए कोई एक सही उत्तर नहीं है। यह सब टीम के आकार और रिलीज़ की आवृत्ति पर निर्भर करता है। लेकिन दो लोकप्रिय मॉडल हैं।
\n\nGit Flow — बड़े प्रोजेक्ट्स के लिए क्लासिक
\n\nयदि आप स्पष्ट वर्जन वाले मोनोलिथिक एप्लिकेशन पर काम कर रहे हैं (जैसे, महीने में एक बार रिलीज़), तो Git Flow आपकी पसंद है। मुख्य ब्रांचेस:
\n- \n
master— केवल स्थिर कोड, जो प्रोडक्शन के अनुरूप हो। \n develop— सभी फीचर्स के लिए इंटीग्रेशन ब्रांच। \n feature/*— प्रत्येक नया फीचर। \n release/*— रिलीज़ की तैयारी। \n hotfix/*— तत्काल सुधार। \n
PHP डेवलपर के लिए उदाहरण: आप पेमेंट मॉड्यूल लिख रहे हैं। develop से feature/payment-module ब्रांच बनाएँ। पूरा होने पर — develop में पुल-रिक्वेस्ट। जब पर्याप्त फीचर जमा हो जाएँ — release/2.3.0 बनाएँ, जहाँ केवल बगफिक्स हों। फिर master और develop में मर्ज करें।
GitHub Flow — तेज़ इटरेशन के लिए
\n\nयदि आपके पास माइक्रोसर्विसेज हैं या आप दिन में कई बार डिप्लॉय करते हैं, तो GitHub Flow सरल है:
\n- \n
main(याmaster) — हमेशा डिप्लॉय के लिए तैयार। \n - कोई भी अन्य ब्रांच — फीचर या बगफिक्स के लिए। \n
- पुल-रिक्वेस्ट और समीक्षा के बाद — सीधे
mainमें मर्ज करें। \n
PHP के लिए यह विशेष रूप से सुविधाजनक है जब आपने CI/CD सेट किया हो: main में मर्ज के बाद स्वचालित रूप से टेस्ट और staging या production पर डिप्लॉय चलता है।
\n\nसार्थक कमिट लिखना: PHP पर उदाहरण
\n\nकमिट सिर्फ "सेव करना" नहीं है। यह एक दस्तावेज़ है जिसके आधार पर आप और आपके सहकर्मी इतिहास को पुनर्स्थापित करेंगे। conventional commits का उपयोग करें:
\n\nfeat: add payment processing via Stripe\nfix: correct SQL query in user repository\nrefactor: extract validation logic to trait\n\n\nअब कल्पना करें कि आप Laravel के साथ PHP प्रोजेक्ट पर काम कर रहे हैं। मान लीजिए, आपने एक नया Artisan कमांड जोड़ा। कौन सा कमिट उपयोगी होगा?
\n\nfeat: add artisan command to sync expired subscriptions\n\n- Created SyncExpiredSubscriptions command\n- Added subscription:sync tag to schedule\n- Updated Subscription model with scopeExpired\n\n\nएक महीने बाद, आप जल्दी से पता लगा सकेंगे कि कब और क्यों