git branch का उपयोग करके अपनी लोकल और रिमोट Git ब्रांचों की सूची बनाना और उन्हें फ़िल्टर करना सीखें। git fetch, git checkout और git prune के साथ ट्रबलशूटिंग में दक्ष बनें।
यदि आपने कभी एक साथ एक से अधिक फीचर पर काम किया है, तो यह स्थिति परिचित लग सकती है: आप कोई Git कमांड चलाते हैं, और अब आपको यकीन नहीं रहता कि पिछले सप्ताह का आपका काम वास्तव में कहाँ है।
जैसे-जैसे प्रोजेक्ट बड़े होते हैं, यह समस्या आम होती जाती है। शुरुआत में, किसी रिपॉज़िटरी में केवल main ब्रांच हो सकती है। समय के साथ, हालाँकि, टीमें नए फीचर, बग फिक्स, प्रयोग, रिलीज़ और आपातकालीन हॉटफिक्स के लिए ब्रांच बनाती हैं।
यहीं पर Git में ब्रांचों की सूची बनाना आवश्यक हो जाता है। यह व्यावहारिक सवालों का जवाब देता है:
मैं फिलहाल किस ब्रांच पर काम कर रहा/रही हूँ?
मेरे कंप्यूटर पर और कौन-कौन सी ब्रांच मौजूद हैं?
रिमोट रिपॉज़िटरी पर कौन सी ब्रांच हैं?
इस गाइड में, हम Git में ब्रांचों की सूची बनाने की मूल बातें, इसे कैसे करें, और आम समस्याओं को कैसे ठीक करें, यह देखेंगे।
यदि Git आपके लिए बिल्कुल नया है, तो अधिक विस्तृत ब्रांच प्रबंधन विषयों में जाने से पहले आत्मविश्वास बढ़ाने के लिए हमारा Introduction to Git कोर्स करने की सलाह देता/देती हूँ।
Git ब्रांचों को समझना
उन्हें सूचीबद्ध करने से पहले, समझ लेते हैं कि Git ब्रांचें क्या होती हैं।
एक आम गलतफ़हमी यह है कि Git ब्रांचें अलग-अलग फ़ोल्डर या कोडबेस की पूरी प्रतियाँ होती हैं, जबकि वास्तव में, Git ब्रांच केवल किसी विशेष कमिट की ओर इशारा करने वाला हल्का-फुल्का पॉइंटर होती है।
आप इसे एक समानांतर टाइमलाइन की तरह समझ सकते हैं जहाँ आप फीचर बना सकते हैं या अलग-थलग प्रयोग कर सकते हैं, बिना अपने स्थिर मुख्य कोड को प्रभावित किए। यह आर्किटेक्चर ब्रांच बनाना और मर्ज करना बेहद तेज़ और कुशल बनाता है।
Git इन टाइमलाइन में आपकी मौजूदा स्थिति को एक विशेष रेफ़रेंस से ट्रैक करता है जिसे HEAD कहा जाता है, जो हमेशा उस ब्रांच की ओर इशारा करता है जिस पर आप वर्तमान में काम कर रहे हैं। क्योंकि ब्रांचें सिर्फ पॉइंटर होती हैं, इसलिए संदर्भ बदलना तुरंत हो जाता है और भारी फ़ाइलों को इधर-उधर करने की ज़रूरत नहीं पड़ती।
अधिक जानकारी के लिए, हमारा Git ब्रांच पर ट्यूटोरियल देखें या हमारा Git चीट शीट देखें।
Git में लोकल ब्रांचों की सूची कैसे बनाएं
यह वैचारिक आधार तय हो जाने के बाद, आइए देखते हैं कि अपनी रिपॉज़िटरी में लोकल ब्रांचों की सूची कैसे बनाते हैं।
लोकल ब्रांच आपके कंप्यूटर पर मौजूद ब्रांच होती है। यह आपकी रिपॉज़िटरी के .git फ़ोल्डर के अंदर रहती है और कमिट्स की एक श्रृंखला की ओर इशारा करने वाला एक चलायमान पॉइंटर दर्शाती है। आप किसी लोकल ब्रांच पर स्विच कर सकते हैं, बदलाव कर सकते हैं और उस पर नए कमिट बना सकते हैं।
लोकल ब्रांचों को इस तरह समझना उपयोगी है:
वे आपकी रिपॉज़िटरी की कॉपी से संबंधित होती हैं
जब आप नए बदलाव कमिट करते हैं तो वे आगे बढ़ती हैं
जब दूसरे लोग कोड पुश करते हैं तो वे अपने-आप अपडेट नहीं होतीं
git branch का उपयोग
लोकल ब्रांचों की सूची बनाने के लिए सबसे आम और बुनियादी कमांड काफी सीधी है:
जब आप यह कमांड बिना किसी अतिरिक्त विकल्प के चलाते हैं, तो Git आपको सभी लोकल ब्रांचें दिखाता है।
git branch के बारे में याद रखने योग्य बातें:
यह केवल लोकल ब्रांचें दिखाता है, रिमोट नहीं
यह इंटरनेट से संपर्क नहीं करता
यह फ़ाइलों, कमिट्स या ब्रांच हिस्ट्री को नहीं बदलता
क्योंकि यह सुरक्षित और तेज़ है, कई डेवलपर नया काम शुरू करने या संदर्भ बदलने से पहले आदतन git branch चलाते हैं।
आउटपुट को समझना
यहाँ एक उदाहरण है कि git branch क्या दिखा सकता है:
bugfix/login-timeout
feature/payment-refactor
* mainसंचालित द्वारा
भले ही यह आउटपुट सरल दिखता हो, इसमें कुछ महत्वपूर्ण विवरण छिपे होते हैं।
पहला, तारांकन चिन्ह (*) वर्तमान में चेक-आउट की गई ब्रांच को दर्शाता है। यही वह ब्रांच है जिससे आपका वर्किंग डायरेक्टरी अभी जुड़ा हुआ है। आपके द्वारा बनाए गए नए कमिट इसी ब्रांच पर जाएँगे।
दूसरा, Git आमतौर पर वर्तमान ब्रांच को हरे रंग में हाइलाइट करता है। यह केवल टर्मिनल की दृश्य सहायता है और Git के व्यवहार को नहीं बदलता।
तीसरा, देखें कि क्या नहीं दिख रहा है:
कमिट की तिथियाँ नहीं
लेखकों के नाम नहीं
रिमोट की जानकारी नहीं
यह जानबूझकर है। Git डिफ़ॉल्ट आउटपुट को छोटा रखता है, ताकि इसे आसानी से स्कैन किया जा सके और अन्य कमांड के साथ जोड़ा जा सके।
शुरुआती सुझाव: यदि आपका टर्मिनल किसी Git कमांड चलाने के बाद "अटका" हुआ लगे, तो q दबाने की कोशिश करें। Git अक्सर लंबा आउटपुट दिखाने के लिए पेजर का उपयोग करता है, और इससे बाहर निकलने का यह सामान्य तरीका है।
केवल वर्तमान ब्रांच प्राप्त करना
कभी-कभी, सभी ब्रांचों की सूची बनाना आवश्यक नहीं होता। आपको केवल यह जानना हो सकता है कि आप अभी किस ब्रांच पर हैं। इसके लिए Git एक समर्पित कमांड देता है:
ऑटोमेशन या CI पाइपलाइन्स में ब्रांच का नाम उपयोग करना
यदि Git detached HEAD state में है, तो यह कमांड कुछ भी वापस नहीं करती। शुरुआत में यह अजीब लग सकता है, लेकिन वास्तव में यह उन स्क्रिप्ट्स के लिए सहायक है जिन्हें यह पता लगाना होता है कि कोई ब्रांच चेक-आउट है या नहीं।
आम गलती: कुछ उपयोगकर्ता सोचते हैं कि Git "खराब" हो गया है जब कोई ब्रांच नाम नहीं दिखता। अधिकांश मामलों में, इसका सरल अर्थ यह है कि आप फिलहाल किसी ब्रांच पर नहीं, बल्कि किसी विशेष कमिट पर हैं।
Git में रिमोट और सभी ब्रांचों की सूची कैसे बनाएं
Git में रिमोट या सभी ब्रांचों की सूची बनाना, लोकल ब्रांचों की सूची जैसा ही है।
Git में रिमोट ब्रांचों की सूची बनाना
GitHub या GitLab जैसी रिमोट रिपॉज़िटरीज़ की अपनी ब्रांचें होती हैं। उन्हें देखने के लिए -r फ़्लैग जोड़ें:
origin/HEAD -> origin/main
origin/bugfix/login-timeout
origin/feature/payment-refactor
origin/mainसंचालित द्वारा
यह उदाहरण आउटपुट शुरुआत में भ्रमित कर सकता है, तो आइए इसे समझते हैं।
आप जो देख रहे हैं वे remote-tracking ब्रांचें हैं। ये स्थानीय रेफ़रेंस होती हैं जिन्हें Git रिमोट रिपॉज़िटरी की अंतिम ज्ञात स्थिति याद रखने के लिए उपयोग करता है।
समझने के लिए मुख्य बिंदु:
ये ब्रांचें लोकल रूप से संग्रहीत होती हैं
ये केवल तब अपडेट होती हैं जब आप fetch करते हैं
ये अपने-आप नहीं चलतीं
शुरुआती सुझाव: remote-tracking ब्रांचों को Git की नोटबुक की तरह समझें। Git आख़िरी बार आपने जो देखा, रिमोट कैसा दिखता था, उसे लिख लेता है, लेकिन जब तक आप स्पष्ट रूप से fetch नहीं करते, वह नोटबुक अपडेट नहीं होगी।
Git में सभी ब्रांचों की सूची बनाना
लोकल ब्रांचों और remote-tracking ब्रांचों—दोनों को साथ में देखने के लिए -a फ़्लैग का उपयोग करें:
* main
feature/payment-refactor
remotes/origin/bugfix/login-timeout
remotes/origin/mainसंचालित द्वारा
यह संयुक्त दृश्य आपको समझने में मदद करता है कि आपकी लोकल ब्रांचें रिमोट ब्रांचों से कैसे संबंधित हैं।
ध्यान देने योग्य नामकरण पैटर्न:
लोकल ब्रांचें साधारण नामों जैसे main के रूप में दिखती हैं
remote-tracking ब्रांचें remotes/origin/ के अंतर्गत दिखती हैं
यह दृश्य विशेष रूप से तब उपयोगी होता है जब आप किसी मौजूदा रिमोट ब्रांच को ट्रैक करने के लिए नई लोकल ब्रांच बनाने का निर्णय ले रहे हों। यदि आपको किसी रिपॉज़िटरी को क्लोन करके किसी विशिष्ट ब्रांच पर काम करना है, तो हमारे गाइड को देखें: Git में किसी विशिष्ट ब्रांच को कैसे क्लोन करें।
हमेशा पहले fetch करें
यदि किसी टीममेट ने कोई नई ब्रांच पुश की है और आप उसे नहीं देख पा रहे हैं, तो इसका सबसे आम कारण है कि आपका लोकल कैश पुराना है।
यह कमांड किसी भी समय चलाने के लिए सुरक्षित है। यह कोड मर्ज नहीं करता और आपका काम ओवरराइट नहीं करता। कई टीमें ब्रांच देखने से पहले git fetch को एक नियमित कदम मानती हैं।
आम गलती: शुरुआती लोग अक्सर git fetch को git pull से भ्रमित कर देते हैं। Fetch केवल ब्रांच जानकारी अपडेट करता है, जबकि Pull आपके वर्तमान ब्रांच में बदलावों को मर्ज भी करता है।
Git ब्रांच सूची पर अधिक विवरण कैसे प्राप्त करें
कभी-कभी, केवल ब्रांच नाम पर्याप्त नहीं होते। यदि आप अतिरिक्त विवरण देखना चाहते हैं, तो कुछ सहायक फ़्लैग आपकी मदद कर सकते हैं।
आख़िरी कमिट देखना
यह देखने के लिए कि हर ब्रांच में वास्तव में क्या है, उपयोग करें:
* main a1b2c3d Fix typo in README
feature/payment-refactor e4f5g6h Refactor payment serviceसंचालित द्वारा
जैसा कि आप देख सकते हैं, -v फ़्लैग महत्वपूर्ण संदर्भ जोड़ता है:
शॉर्ट कमिट हैश दिखाता है कि ब्रांच वर्तमान में कहाँ पॉइंट कर रही है
कमिट संदेश ब्रांच के उद्देश्य का संकेत देता है
इसे चेकआउट किए बिना किसी ब्रांच का उद्देश्य समझने के सबसे आसान तरीकों में से यह एक है।
शुरुआती सुझाव: यदि आप सुनिश्चित नहीं हैं कि कोई ब्रांच हटाने के लिए सुरक्षित है या नहीं, तो उसका आख़िरी कमिट संदेश जाँचना पहला अच्छा सुराग है। ब्रांच हटाने पर पूर्ण गाइड के लिए हमारा ट्यूटोरियल देखें: Git ब्रांच कैसे डिलीट करें।
Upstream कनेक्शन जाँचना
लोकल ब्रांचें अक्सर संबंधित रिमोट ब्रांच को ट्रैक करती हैं। यह संबंध देखने के लिए चलाएँ:
* main a1b2c3d [origin/main] Fix typo in README
feature/payment-refactor e4f5g6h [origin/feature/payment-refactor] Refactor payment serviceसंचालित द्वारा
यह आउटपुट आपको बताता है:
आपकी लोकल ब्रांच किस रिमोट ब्रांच से जुड़ी है
git pull कहाँ से पुल करेगा
git push कहाँ पुश करेगा
यदि किसी ब्रांच का कोई upstream नहीं है, तो ब्रैकेट में कुछ नहीं दिखेगा। यह अक्सर push या pull त्रुटियों की व्याख्या करता है।
आम गलती: बिना upstream वाली ब्रांच पर git pull चलाने की कोशिश आमतौर पर असफल होगी। ऐसे में, आपको पहले upstream ब्रांच सेट करनी होगी या ब्रांच को पहली बार पुश करना होगा।
तारीख या संस्करण के आधार पर ब्रांचों को सॉर्ट करना
हाल ही में सक्रिय ब्रांचें खोजने के लिए, आप कमिट तारीख के आधार पर सॉर्ट कर सकते हैं:
यह संस्करण संख्याओं का सम्मान करता है और भ्रमित करने वाले वर्णक्रमानुसार क्रम से बचाता है।
Git में ब्रांच सूची को फ़िल्टर कैसे करें
यदि आप किसी विशेष ब्रांच को खोज रहे हैं, तो फ़िल्टरिंग बहुत सहायक हो सकती है। मैं आपको कुछ महत्वपूर्ण फ़्लैग के साथ यह करना दिखाऊँगा/दिखाऊँगी।
नाम पैटर्न से खोज
खासकर बड़ी रिपॉज़िटरी में, नाम से फ़िल्टर करना सही ब्रांच खोजने में आपका बहुत समय बचा सकता है। आप --list फ़्लैग और अपने खोज शब्द का उपयोग करके नाम से फ़िल्टर कर सकते हैं:
ध्यान दें कि * वाइल्डकार्ड के रूप में उपयोग होता है: परिणाम यहाँ केवल वे ब्रांचें दिखाता है जो पैटर्न से मेल खाती हैं, यानी जो feature से शुरू होती हैं। टीमें अक्सर चीज़ों को व्यवस्थित रखने के लिए feature/, bugfix/ या hotfix/ जैसे प्रीफ़िक्स का उपयोग करती हैं। इन्हें अपनी ब्रांचों के फ़ोल्डर की तरह समझें।
ये कमांड अन्य ब्रांचों की तुलना आपकी वर्तमान ब्रांच से करती हैं।
--merged वे ब्रांचें दिखाता है जिनका काम पहले से शामिल है (और अधिक जानें: Git merge)
--no-merged वे ब्रांचें दिखाता है जिनमें अब भी यूनिक कमिट्स हैं
सुरक्षा अनुस्मारक: --merged उपयोग करने से पहले हमेशा दोबारा जाँच लें कि आप सही बेस ब्रांच (अक्सर main या develop) पर हैं। परिणाम आपकी वर्तमान ब्रांच पर निर्भर करते हैं।
कौन-सी ब्रांच में कोई कमिट शामिल है, यह ढूँढना
यदि आप कोई कमिट हैश जानते हैं और जानना चाहते हैं कि वह कहाँ मौजूद है, तो यह कमांड उपयोग करें:
यह बग ट्रैक करते समय या यह सत्यापित करने में उपयोगी है कि कोई फिक्स मर्ज हो चुका है।
उदाहरण के लिए, जब कोई सहकर्मी आपसे कहता/कहती है: "मुझे इस कमिट हैश में एक बग मिला; किन ब्रांचों पर इसका प्रभाव है?" आप इस कमांड से बग के सटीक स्थान का पता लगा सकते हैं।
उन्नत वर्कफ़्लो के लिए फ़िल्टर मिलाना
मैंने जो फ़िल्टर दिखाए हैं, उन्हें मिलाकर आप परिणामों को और संकीर्ण कर सकते हैं। एक उदाहरण देखते हैं:
इसका मतलब है कि आप किसी ब्रांच पर नहीं हैं। आप सीधे किसी विशेष कमिट को देख रहे हैं।
Detached HEAD state अपने-आप में खतरनाक नहीं है, लेकिन आप जो भी नए कमिट करेंगे, वे बाद में ढूँढना मुश्किल हो सकते हैं, जब तक कि आप कोई ब्रांच न बना लें।
सामान्य काम पर लौटने के लिए, किसी मौजूदा ब्रांच पर स्विच करें:
आधुनिक विकल्प: Git 2.23+ से, आप git switch <branch-name> उपयोग कर सकते हैं, जो खासकर ब्रांच बदलने के लिए डिज़ाइन किया गया अधिक साफ़ और सुरक्षित कमांड है।
आप -b फ़्लैग का उपयोग करके अपनी वर्तमान स्थिति से नई ब्रांच भी बना सकते हैं:
यह बासी रेफ़रेंस को साफ़ करता है और आपकी रिपॉज़िटरी को सुव्यवस्थित रखता है।
Pro tip: वैकल्पिक रूप से, आप हर बार fetch करते समय git fetch --prune भी उपयोग कर सकते हैं, ताकि एक ही चरण में रिपॉज़िटरी अपडेट और साफ़ हो जाए।
निष्कर्ष
Git में ब्रांचों की सूची बनाना एक प्रमुख कौशल है जो आपकी रिपॉज़िटरी को समझने में मदद करता है। इस ट्यूटोरियल में शामिल कमांड और फ़्लैग आपको गलतियों से बचने और दूसरों के साथ आत्मविश्वास से काम करने में मदद करेंगे।
किसी नए प्रोजेक्ट की शुरुआत में, यह सोचना आमतौर पर उपयोगी होता है कि आपको किस तरह की ब्रांच संरचना चाहिए होगी। कुछ सुझावों के लिए, इस गाइड को देखें: Git branching strategy।
बेसिक्स से आगे बढ़ने के लिए तैयार हैं? Git Fundamentals स्किल ट्रैक शुरुआती से प्रो बनने के लिए आवश्यक कॉन्सेप्ट और हैंड्स-ऑन अनुभव प्रदान करता है।
Git Branches की सूची: प्रायः पूछे जाने वाले प्रश्न
लोकल और रिमोट ब्रांचों में क्या अंतर है?⌄
लोकल ब्रांचें आपके कंप्यूटर पर मौजूद होती हैं। रिमोट ब्रांचें रिमोट रिपॉज़िटरी पर ब्रांचों की स्थिति को दर्शाती हैं।
मुझे कैसे पता चले कि कौन-सी ब्रांच पहले से मर्ज हो चुकी हैं?⌄
वर्तमान ब्रांच में जिन ब्रांचों के बदलाव पहले से शामिल हैं, उन्हें देखने के लिए git branch --merged चलाएँ।
क्या सूची देखने के बाद ब्रांच को डिलीट करना सुरक्षित है?⌄
हाँ, यदि वह मर्ज हो चुकी है। git branch -d branch-name उपयोग करें। यदि वह सुरक्षित रूप से मर्ज नहीं हुई है, तो Git डिलीट करने से रोकेगा। Git किसी ब्रांच को "सुरक्षित" तब मानता है जब वह आपकी वर्तमान ब्रांच में मर्ज हो चुकी हो या उसे रिमोट रिपॉज़िटरी पर पुश किया गया हो।
मैं उस ब्रांच को क्यों नहीं देख पा रहा/रही जो रिमोट पर मौजूद है?⌄
सबसे अधिक संभावना है कि लोकल रिपो ने अभी तक उसे fetch नहीं किया है। git fetch चलाएँ, फिर रिमोट ब्रांचें देखने के लिए git branch -r उपयोग करें।
git branch क्या दिखाता है?⌄
यह केवल आपकी लोकल ब्रांचों की सूची देता है। वर्तमान ब्रांच को * से चिह्नित किया जाता है। रिमोट ब्रांचें तभी दिखती हैं जब आप -r फ़्लैग जोड़ते हैं।
मैं हाल की गतिविधि के अनुसार सॉर्ट की हुई ब्रांच सूची कैसे देखूँ?⌄
सबसे हालिया गतिविधि के अनुसार ब्रांचें दिखाने के लिए git branch --sort=-committerdate उपयोग करें। यह तब सहायक है जब आप वे ब्रांचें ढूँढना चाहते हैं जिन पर आप या आपकी टीम ने हाल में काम किया है। आप इसे अन्य फ़्लैग के साथ भी जोड़ सकते हैं, जैसे git branch -v --sort=-committerdate, ताकि सॉर्टेड सूची के साथ कमिट संदेश भी दिखें।
मैं ऑस्टिन हूँ—एक ब्लॉगर और टेक राइटर, जिसके पास स्वास्थ्य सेवा क्षेत्र में डेटा वैज्ञानिक और डेटा विश्लेषक के रूप में वर्षों का अनुभव है। जीवविज्ञान की पृष्ठभूमि से अपनी टेक यात्रा शुरू करने के बाद, अब मैं अपने टेक ब्लॉग के माध्यम से दूसरों को भी यही बदलाव करने में मदद करता हूँ। प्रौद्योगिकी के प्रति मेरे जुनून ने मुझे दर्जनों SaaS कंपनियों के लिए लिखने के लिए प्रेरित किया है, जहाँ मैं अपनी अनुभूतियाँ साझा करता हूँ और दूसरों को प्रेरित करता हूँ।
यदि आपने कभी एक साथ एक से अधिक फीचर पर काम किया है, तो यह स्थिति परिचित लग सकती है: आप कोई Git कमांड चलाते हैं, और अब आपको यकीन नहीं रहता कि पिछले सप्ताह का आपका काम वास्तव में कहाँ है।
जैसे-जैसे प्रोजेक्ट बड़े होते हैं, यह समस्या आम होती जाती है। शुरुआत में, किसी रिपॉज़िटरी में केवल
mainब्रांच हो सकती है। समय के साथ, हालाँकि, टीमें नए फीचर, बग फिक्स, प्रयोग, रिलीज़ और आपातकालीन हॉटफिक्स के लिए ब्रांच बनाती हैं।यहीं पर Git में ब्रांचों की सूची बनाना आवश्यक हो जाता है। यह व्यावहारिक सवालों का जवाब देता है:
इस गाइड में, हम Git में ब्रांचों की सूची बनाने की मूल बातें, इसे कैसे करें, और आम समस्याओं को कैसे ठीक करें, यह देखेंगे।
यदि Git आपके लिए बिल्कुल नया है, तो अधिक विस्तृत ब्रांच प्रबंधन विषयों में जाने से पहले आत्मविश्वास बढ़ाने के लिए हमारा Introduction to Git कोर्स करने की सलाह देता/देती हूँ।
Git ब्रांचों को समझना
उन्हें सूचीबद्ध करने से पहले, समझ लेते हैं कि Git ब्रांचें क्या होती हैं।
एक आम गलतफ़हमी यह है कि Git ब्रांचें अलग-अलग फ़ोल्डर या कोडबेस की पूरी प्रतियाँ होती हैं, जबकि वास्तव में, Git ब्रांच केवल किसी विशेष कमिट की ओर इशारा करने वाला हल्का-फुल्का पॉइंटर होती है।
आप इसे एक समानांतर टाइमलाइन की तरह समझ सकते हैं जहाँ आप फीचर बना सकते हैं या अलग-थलग प्रयोग कर सकते हैं, बिना अपने स्थिर मुख्य कोड को प्रभावित किए। यह आर्किटेक्चर ब्रांच बनाना और मर्ज करना बेहद तेज़ और कुशल बनाता है।
स्रोत: Git
Git इन टाइमलाइन में आपकी मौजूदा स्थिति को एक विशेष रेफ़रेंस से ट्रैक करता है जिसे HEAD कहा जाता है, जो हमेशा उस ब्रांच की ओर इशारा करता है जिस पर आप वर्तमान में काम कर रहे हैं। क्योंकि ब्रांचें सिर्फ पॉइंटर होती हैं, इसलिए संदर्भ बदलना तुरंत हो जाता है और भारी फ़ाइलों को इधर-उधर करने की ज़रूरत नहीं पड़ती।
अधिक जानकारी के लिए, हमारा Git ब्रांच पर ट्यूटोरियल देखें या हमारा Git चीट शीट देखें।
Git में लोकल ब्रांचों की सूची कैसे बनाएं
यह वैचारिक आधार तय हो जाने के बाद, आइए देखते हैं कि अपनी रिपॉज़िटरी में लोकल ब्रांचों की सूची कैसे बनाते हैं।
लोकल ब्रांच आपके कंप्यूटर पर मौजूद ब्रांच होती है। यह आपकी रिपॉज़िटरी के
.gitफ़ोल्डर के अंदर रहती है और कमिट्स की एक श्रृंखला की ओर इशारा करने वाला एक चलायमान पॉइंटर दर्शाती है। आप किसी लोकल ब्रांच पर स्विच कर सकते हैं, बदलाव कर सकते हैं और उस पर नए कमिट बना सकते हैं।लोकल ब्रांचों को इस तरह समझना उपयोगी है:
git branch का उपयोग
लोकल ब्रांचों की सूची बनाने के लिए सबसे आम और बुनियादी कमांड काफी सीधी है:
जब आप यह कमांड बिना किसी अतिरिक्त विकल्प के चलाते हैं, तो Git आपको सभी लोकल ब्रांचें दिखाता है।
git branchके बारे में याद रखने योग्य बातें:क्योंकि यह सुरक्षित और तेज़ है, कई डेवलपर नया काम शुरू करने या संदर्भ बदलने से पहले आदतन
git branchचलाते हैं।आउटपुट को समझना
यहाँ एक उदाहरण है कि
git branchक्या दिखा सकता है:भले ही यह आउटपुट सरल दिखता हो, इसमें कुछ महत्वपूर्ण विवरण छिपे होते हैं।
पहला, तारांकन चिन्ह (
*) वर्तमान में चेक-आउट की गई ब्रांच को दर्शाता है। यही वह ब्रांच है जिससे आपका वर्किंग डायरेक्टरी अभी जुड़ा हुआ है। आपके द्वारा बनाए गए नए कमिट इसी ब्रांच पर जाएँगे।दूसरा, Git आमतौर पर वर्तमान ब्रांच को हरे रंग में हाइलाइट करता है। यह केवल टर्मिनल की दृश्य सहायता है और Git के व्यवहार को नहीं बदलता।
तीसरा, देखें कि क्या नहीं दिख रहा है:
यह जानबूझकर है। Git डिफ़ॉल्ट आउटपुट को छोटा रखता है, ताकि इसे आसानी से स्कैन किया जा सके और अन्य कमांड के साथ जोड़ा जा सके।
शुरुआती सुझाव: यदि आपका टर्मिनल किसी Git कमांड चलाने के बाद "अटका" हुआ लगे, तो
qदबाने की कोशिश करें। Git अक्सर लंबा आउटपुट दिखाने के लिए पेजर का उपयोग करता है, और इससे बाहर निकलने का यह सामान्य तरीका है।केवल वर्तमान ब्रांच प्राप्त करना
कभी-कभी, सभी ब्रांचों की सूची बनाना आवश्यक नहीं होता। आपको केवल यह जानना हो सकता है कि आप अभी किस ब्रांच पर हैं। इसके लिए Git एक समर्पित कमांड देता है:
आउटपुट सिर्फ ब्रांच का नाम होता है:
जहाँ यह उपयोगी है, ऐसी आम स्थितियाँ:
यदि Git detached HEAD state में है, तो यह कमांड कुछ भी वापस नहीं करती। शुरुआत में यह अजीब लग सकता है, लेकिन वास्तव में यह उन स्क्रिप्ट्स के लिए सहायक है जिन्हें यह पता लगाना होता है कि कोई ब्रांच चेक-आउट है या नहीं।
आम गलती: कुछ उपयोगकर्ता सोचते हैं कि Git "खराब" हो गया है जब कोई ब्रांच नाम नहीं दिखता। अधिकांश मामलों में, इसका सरल अर्थ यह है कि आप फिलहाल किसी ब्रांच पर नहीं, बल्कि किसी विशेष कमिट पर हैं।
Git में रिमोट और सभी ब्रांचों की सूची कैसे बनाएं
Git में रिमोट या सभी ब्रांचों की सूची बनाना, लोकल ब्रांचों की सूची जैसा ही है।
Git में रिमोट ब्रांचों की सूची बनाना
GitHub या GitLab जैसी रिमोट रिपॉज़िटरीज़ की अपनी ब्रांचें होती हैं। उन्हें देखने के लिए
-rफ़्लैग जोड़ें:यह उदाहरण आउटपुट शुरुआत में भ्रमित कर सकता है, तो आइए इसे समझते हैं।
आप जो देख रहे हैं वे remote-tracking ब्रांचें हैं। ये स्थानीय रेफ़रेंस होती हैं जिन्हें Git रिमोट रिपॉज़िटरी की अंतिम ज्ञात स्थिति याद रखने के लिए उपयोग करता है।
समझने के लिए मुख्य बिंदु:
शुरुआती सुझाव: remote-tracking ब्रांचों को Git की नोटबुक की तरह समझें। Git आख़िरी बार आपने जो देखा, रिमोट कैसा दिखता था, उसे लिख लेता है, लेकिन जब तक आप स्पष्ट रूप से fetch नहीं करते, वह नोटबुक अपडेट नहीं होगी।
Git में सभी ब्रांचों की सूची बनाना
लोकल ब्रांचों और remote-tracking ब्रांचों—दोनों को साथ में देखने के लिए
-aफ़्लैग का उपयोग करें:यह संयुक्त दृश्य आपको समझने में मदद करता है कि आपकी लोकल ब्रांचें रिमोट ब्रांचों से कैसे संबंधित हैं।
ध्यान देने योग्य नामकरण पैटर्न:
लोकल ब्रांचें साधारण नामों जैसे
mainके रूप में दिखती हैंremote-tracking ब्रांचें
remotes/origin/के अंतर्गत दिखती हैंयह दृश्य विशेष रूप से तब उपयोगी होता है जब आप किसी मौजूदा रिमोट ब्रांच को ट्रैक करने के लिए नई लोकल ब्रांच बनाने का निर्णय ले रहे हों। यदि आपको किसी रिपॉज़िटरी को क्लोन करके किसी विशिष्ट ब्रांच पर काम करना है, तो हमारे गाइड को देखें: Git में किसी विशिष्ट ब्रांच को कैसे क्लोन करें।
हमेशा पहले fetch करें
यदि किसी टीममेट ने कोई नई ब्रांच पुश की है और आप उसे नहीं देख पा रहे हैं, तो इसका सबसे आम कारण है कि आपका लोकल कैश पुराना है।
समाधान है fetch करना:
git fetchक्या करता है:यह कमांड किसी भी समय चलाने के लिए सुरक्षित है। यह कोड मर्ज नहीं करता और आपका काम ओवरराइट नहीं करता। कई टीमें ब्रांच देखने से पहले
git fetchको एक नियमित कदम मानती हैं।आम गलती: शुरुआती लोग अक्सर
git fetchकोgit pullसे भ्रमित कर देते हैं। Fetch केवल ब्रांच जानकारी अपडेट करता है, जबकि Pull आपके वर्तमान ब्रांच में बदलावों को मर्ज भी करता है।Git ब्रांच सूची पर अधिक विवरण कैसे प्राप्त करें
कभी-कभी, केवल ब्रांच नाम पर्याप्त नहीं होते। यदि आप अतिरिक्त विवरण देखना चाहते हैं, तो कुछ सहायक फ़्लैग आपकी मदद कर सकते हैं।
आख़िरी कमिट देखना
यह देखने के लिए कि हर ब्रांच में वास्तव में क्या है, उपयोग करें:
आउटपुट कुछ इस तरह दिख सकता है:
जैसा कि आप देख सकते हैं,
-vफ़्लैग महत्वपूर्ण संदर्भ जोड़ता है:इसे चेकआउट किए बिना किसी ब्रांच का उद्देश्य समझने के सबसे आसान तरीकों में से यह एक है।
शुरुआती सुझाव: यदि आप सुनिश्चित नहीं हैं कि कोई ब्रांच हटाने के लिए सुरक्षित है या नहीं, तो उसका आख़िरी कमिट संदेश जाँचना पहला अच्छा सुराग है। ब्रांच हटाने पर पूर्ण गाइड के लिए हमारा ट्यूटोरियल देखें: Git ब्रांच कैसे डिलीट करें।
Upstream कनेक्शन जाँचना
लोकल ब्रांचें अक्सर संबंधित रिमोट ब्रांच को ट्रैक करती हैं। यह संबंध देखने के लिए चलाएँ:
यह आउटपुट आपको बताता है:
आपकी लोकल ब्रांच किस रिमोट ब्रांच से जुड़ी है
git pullकहाँ से पुल करेगाgit pushकहाँ पुश करेगायदि किसी ब्रांच का कोई upstream नहीं है, तो ब्रैकेट में कुछ नहीं दिखेगा। यह अक्सर push या pull त्रुटियों की व्याख्या करता है।
आम गलती: बिना upstream वाली ब्रांच पर
git pullचलाने की कोशिश आमतौर पर असफल होगी। ऐसे में, आपको पहले upstream ब्रांच सेट करनी होगी या ब्रांच को पहली बार पुश करना होगा।तारीख या संस्करण के आधार पर ब्रांचों को सॉर्ट करना
हाल ही में सक्रिय ब्रांचें खोजने के लिए, आप कमिट तारीख के आधार पर सॉर्ट कर सकते हैं:
यह सबसे हाल में अपडेट हुई ब्रांचों को ऊपर और पुरानी ब्रांचों को नीचे रखता है।
संस्करणित ब्रांचों वाली रिपॉज़िटरी के लिए, सेमान्टिक सॉर्टिंग अधिक उपयोगी होती है:
यह संस्करण संख्याओं का सम्मान करता है और भ्रमित करने वाले वर्णक्रमानुसार क्रम से बचाता है।
Git में ब्रांच सूची को फ़िल्टर कैसे करें
यदि आप किसी विशेष ब्रांच को खोज रहे हैं, तो फ़िल्टरिंग बहुत सहायक हो सकती है। मैं आपको कुछ महत्वपूर्ण फ़्लैग के साथ यह करना दिखाऊँगा/दिखाऊँगी।
नाम पैटर्न से खोज
खासकर बड़ी रिपॉज़िटरी में, नाम से फ़िल्टर करना सही ब्रांच खोजने में आपका बहुत समय बचा सकता है। आप
--listफ़्लैग और अपने खोज शब्द का उपयोग करके नाम से फ़िल्टर कर सकते हैं:ध्यान दें कि
*वाइल्डकार्ड के रूप में उपयोग होता है: परिणाम यहाँ केवल वे ब्रांचें दिखाता है जो पैटर्न से मेल खाती हैं, यानी जोfeatureसे शुरू होती हैं। टीमें अक्सर चीज़ों को व्यवस्थित रखने के लिएfeature/,bugfix/याhotfix/जैसे प्रीफ़िक्स का उपयोग करती हैं। इन्हें अपनी ब्रांचों के फ़ोल्डर की तरह समझें।Merged बनाम unmerged ब्रांचें ढूँढना
दो बहुत महत्वपूर्ण फ़िल्टर हैं:
ये कमांड अन्य ब्रांचों की तुलना आपकी वर्तमान ब्रांच से करती हैं।
--mergedवे ब्रांचें दिखाता है जिनका काम पहले से शामिल है (और अधिक जानें: Git merge)--no-mergedवे ब्रांचें दिखाता है जिनमें अब भी यूनिक कमिट्स हैंसुरक्षा अनुस्मारक:
--mergedउपयोग करने से पहले हमेशा दोबारा जाँच लें कि आप सही बेस ब्रांच (अक्सरmainयाdevelop) पर हैं। परिणाम आपकी वर्तमान ब्रांच पर निर्भर करते हैं।कौन-सी ब्रांच में कोई कमिट शामिल है, यह ढूँढना
यदि आप कोई कमिट हैश जानते हैं और जानना चाहते हैं कि वह कहाँ मौजूद है, तो यह कमांड उपयोग करें:
यह बग ट्रैक करते समय या यह सत्यापित करने में उपयोगी है कि कोई फिक्स मर्ज हो चुका है।
उदाहरण के लिए, जब कोई सहकर्मी आपसे कहता/कहती है: "मुझे इस कमिट हैश में एक बग मिला; किन ब्रांचों पर इसका प्रभाव है?" आप इस कमांड से बग के सटीक स्थान का पता लगा सकते हैं।
उन्नत वर्कफ़्लो के लिए फ़िल्टर मिलाना
मैंने जो फ़िल्टर दिखाए हैं, उन्हें मिलाकर आप परिणामों को और संकीर्ण कर सकते हैं। एक उदाहरण देखते हैं:
इस कमांड का परिणाम सभी unmerged
feature/ब्रांचें जल्दी से दिखा देता है और टीम को व्यवस्थित रहने में मदद करता है।आम समस्याओं का समाधान
यदि आपको समस्याएँ आती हैं, तो चिंता न करें; सबसे आम मुद्दों को ठीक करना काफ़ी आसान है।
रिमोट ब्रांचें गायब
यदि आप किसी ऐसी ब्रांच को नहीं देख पा रहे हैं जिसे किसी और ने पुश किया है, तो सबसे संभावित कारण यह है कि आप fetch करना भूल गए। समस्या निवारण के लिए:
git fetchचलाएँफिर ब्रांचों की सूची दोबारा देखें
यदि समस्या missing fetch थी, तो यह त्वरित उपाय आपकी लोकल दृश्य को तुरंत अपडेट कर देता है।
Detached HEAD state
कभी-कभी,
git branchका आउटपुट ऐसा दिखता है:इसका मतलब है कि आप किसी ब्रांच पर नहीं हैं। आप सीधे किसी विशेष कमिट को देख रहे हैं।
Detached HEAD state अपने-आप में खतरनाक नहीं है, लेकिन आप जो भी नए कमिट करेंगे, वे बाद में ढूँढना मुश्किल हो सकते हैं, जब तक कि आप कोई ब्रांच न बना लें।
सामान्य काम पर लौटने के लिए, किसी मौजूदा ब्रांच पर स्विच करें:
आधुनिक विकल्प: Git 2.23+ से, आप
git switch <branch-name>उपयोग कर सकते हैं, जो खासकर ब्रांच बदलने के लिए डिज़ाइन किया गया अधिक साफ़ और सुरक्षित कमांड है।आप
-bफ़्लैग का उपयोग करके अपनी वर्तमान स्थिति से नई ब्रांच भी बना सकते हैं:डिलीट करने के बाद भी ब्रांचें दिख रही हैं
यदि सर्वर पर डिलीट होने के बाद भी रिमोट ब्रांचें दिख रही हैं, तो आप निम्न कमांड से उनका लोकल रेफ़रेंस साफ़ कर सकते हैं:
यह बासी रेफ़रेंस को साफ़ करता है और आपकी रिपॉज़िटरी को सुव्यवस्थित रखता है।
Pro tip: वैकल्पिक रूप से, आप हर बार fetch करते समय
git fetch --pruneभी उपयोग कर सकते हैं, ताकि एक ही चरण में रिपॉज़िटरी अपडेट और साफ़ हो जाए।निष्कर्ष
Git में ब्रांचों की सूची बनाना एक प्रमुख कौशल है जो आपकी रिपॉज़िटरी को समझने में मदद करता है। इस ट्यूटोरियल में शामिल कमांड और फ़्लैग आपको गलतियों से बचने और दूसरों के साथ आत्मविश्वास से काम करने में मदद करेंगे।
किसी नए प्रोजेक्ट की शुरुआत में, यह सोचना आमतौर पर उपयोगी होता है कि आपको किस तरह की ब्रांच संरचना चाहिए होगी। कुछ सुझावों के लिए, इस गाइड को देखें: Git branching strategy।
बेसिक्स से आगे बढ़ने के लिए तैयार हैं? Git Fundamentals स्किल ट्रैक शुरुआती से प्रो बनने के लिए आवश्यक कॉन्सेप्ट और हैंड्स-ऑन अनुभव प्रदान करता है।