Git एक दूरस्थ सर्वर पर एक शाखा बना रहा है। रिपॉजिटरी में एक खाली निर्देशिका कैसे जोड़ें? नियोजित प्रतिबद्धता में पहले से जोड़े गए परिवर्तनों को छोड़कर सभी परिवर्तनों को पूर्ववत करें

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

यदि पासवर्ड प्रमाणीकरण का उपयोग कर रहे हैं:

  1. $ गिट क्लोन https://username:password@gitsrv/opt/git/repository.git

शाखाओं के साथ कार्य करना

सभी शाखाएँ दिखाएँ:
  1. $गिट शाखा
एक नई शाखा बनाएँ:
  1. $गिट शाखा
नये सूत्र पर जाएँ:
  1. $git चेकआउट
एक नई शाखा बनाएँ और उसमें जाएँ:
  1. $ गिट चेकआउट -बी
स्थानीय शाखा हटाएँ:
  1. $ गिट शाखा -डी
दूरस्थ रिपॉजिटरी से एक शाखा हटाएँ:
  1. $ गिट पुश ओरिजिन--डिलीट

प्रतिबद्धताओं के साथ काम करना

आखिरी कमिट कैसे हटाएं?

  1. $ गिट रीसेट--सॉफ्ट हेड^
गिट कैसे करें. अध्याय 16: प्रतिबद्धताओं को ख़त्म करना
गिट कैसे करें. अध्याय 17. किसी शाखा से कमिट हटाना
आधिकारिक गिट दस्तावेज़ीकरण। गिट मूल बातें - परिवर्तन पूर्ववत करना

आखिरी कमिट कैसे बदलें?

  1. $ git new_file.txt जोड़ें
  2. $ गिट प्रतिबद्धता--संशोधन

टिप्पणी को अंतिम प्रतिबद्धता में कैसे बदलें?

  1. $ गिट प्रतिबद्धता--संशोधन
  2. $ गिट कमिट--अमेंड-एम "नई टिप्पणी"

मल्टीपल कमिट्स को कैसे मर्ज करें?

  1. $ गिट रिबेस -आई हेड~3
HEAD~3 के बजाय, आप कमिट हैश का उपयोग कर सकते हैं। आपको उस कमिट का हैश पास करना होगा जिसमें आप सब कुछ मर्ज करना चाहते हैं (फ़्लैटन)।
एक संपादक कमिटों की एक सूची के साथ खुलेगा, जिसमें शीर्ष पर सबसे पुराना कमिट होगा।
  1. 1111111 चुनें 1 टिप्पणी करें
  2. 2222222 चुनें 2 टिप्पणियाँ करें
  3. 3333333 चुनें 3 टिप्पणियाँ करें
आपको पिक को स्क्वैश से बदलना होगा ताकि यह इस तरह दिखे:
  1. 1111111 चुनें 1 टिप्पणी करें
  2. स्क्वैश 2222222 2 टिप्पणियाँ करें
  3. स्क्वैश 3333333 3 टिप्पणियाँ दें
इसके बाद आपको फ़ाइल को सहेजना होगा और बाहर निकलना होगा। फिर से खुला रहेगा पाठ संपादकसभी प्रतिबद्ध टिप्पणियों के साथ. आपको संपादित करना, सहेजना और बाहर निकलना होगा। इन चरणों के बाद, कमिट मर्ज हो जाएंगे।

मैं किसी विशिष्ट फ़ाइल में परिवर्तन कैसे पूर्ववत कर सकता हूं और उसे अंतिम प्रतिबद्धता के बाद उसी स्थिति में कैसे लौटा सकता हूं?

  1. $ गिट चेकआउट -- फ़ाइल.txt

सभी अप्रतिबद्ध (अप्रतिबद्ध) परिवर्तनों को कैसे पूर्ववत करें?

  1. $git चेकआउट

अगली प्रतिबद्धता के लिए कुछ फ़ाइलें कैसे रखें?

मान लीजिए कि आप कुछ फ़ाइलों में परिवर्तन करना चाहते हैं, और अगली प्रतिबद्धता में अन्य फ़ाइलों में परिवर्तन करना चाहते हैं। फिर आप उन्हें अस्थायी रूप से रिपॉजिटरी (अस्टेज फ़ाइलें) से हटा सकते हैं, और फिर उन्हें दोबारा जोड़ सकते हैं।
  1. $ गिट रीसेट हेड फ़ाइल.txt
यह कमांड फ़ाइल को रिपॉजिटरी से हटा देगा; यह पुराने कमिट्स में रहेगा। हेड वर्तमान शाखा में अंतिम प्रतिबद्धता की ओर इशारा करता है।

यदि आप रिमोट रिपॉजिटरी पर पुश नहीं कर सकते क्योंकि रिपॉजिटरी का वर्तमान संस्करण रिमोट रिपॉजिटरी से कम है

ऐसे में आप जबरदस्ती धक्का दे सकते हैं।
  1. $ गिट पुश-एफ मूल मास्टर

शाखाओं का विलय

दूसरी शाखा से केवल कुछ फ़ाइलें कैसे लें?

  1. $ git चेकआउट शाखानाम--पथ/से/फ़ाइल.फ़ाइल

दूरस्थ रिपॉजिटरी

दूरस्थ रिपॉजिटरी के बारे में जानकारी प्रदर्शित करना

  1. $ गिट रिमोट शो मूल
स्क्रीन पर कुछ इस प्रकार प्रदर्शित होगा:
  1. *दूरस्थ उत्पत्ति
  2. यूआरएल प्राप्त करें: git@gitsrv:/opt/git/test-project.git
  3. पुश यूआरएल: git@gitsrv:/opt/git/test-project.git
  4. प्रमुख शाखा: मास्टर
  5. दूरस्थ शाखा:
  6. मास्टर नया (अगला फ़ेच रिमोट/उत्पत्ति में संग्रहीत होगा)
  7. "गिट पुश" के लिए स्थानीय रेफरी कॉन्फ़िगर किया गया:
  8. मास्टर मास्टर को धकेलता है (स्थानीय पुराना)

एक दूरस्थ रिपॉजिटरी जोड़ना

  1. $ git रिमोट मूल जोड़ें git@gitsrv:/opt/git/test-project.git

दूरस्थ शाखाएँ आपके दूरस्थ रिपॉजिटरी में शाखाओं की स्थिति का संदर्भ हैं। ये स्थानीय शाखाएँ हैं जिन्हें स्थानांतरित नहीं किया जा सकता; जब भी आप नेटवर्क पर संचार करते हैं तो वे स्वचालित रूप से चलते हैं। दूरस्थ शाखाएँ आपको यह याद दिलाने के लिए बुकमार्क के रूप में कार्य करती हैं कि पिछली बार जब आप उनसे जुड़े थे तो दूरस्थ रिपॉजिटरी में शाखाएँ कहाँ थीं।

हम मास्टर शाखा का उपयोग शाखा के स्रोत के रूप में करते हैं, इसमें शामिल है नवीनतम संस्करण. तुरंत आरंभ करने के लिए, हम "चेकआउट" शाखा को सक्रिय करते हुए एक शाखा पर स्विच करते हैं। शाखाएँ पृष्ठ स्थानीय शाखा प्रदर्शित करता है। विंडो के शीर्ष पर बोल्ड फ़ॉन्ट और आउटपुट दिखाते हैं कि हमारी फ़ाइलें समान स्तर पर हैं।

एक दूरस्थ रिपॉजिटरी जोड़ना

अब हम नई सुविधा को एकीकृत कर सकते हैं। इसलिए, "अनट्रैक की गई फ़ाइलें" अनुभाग में, आपको यह जांचना चाहिए कि क्या प्रोजेक्ट से संबंधित फ़ाइलें हैं। एक संदेश एक महत्वपूर्ण नोट के साथ दिखाई देगा जिसमें कहा जाएगा कि परिवर्तन केवल स्थानीय रूप से सहेजे गए हैं और फिर भी सर्वर पर भेजे जाने चाहिए। अब बाकी टीम को नई सुविधा देने का समय आ गया है। हमारे स्थानीय अध्याय को प्रकाशित करने की आवश्यकता है। शाखाएँ पृष्ठ पर, संदर्भ मेनू से प्रकाशित करने का चयन करने के लिए एक अप्रकाशित थ्रेड पर राइट-क्लिक करें।

वे (दूरस्थ प्रतिनिधि का नाम)/(शाखा) जैसे दिखते हैं। उदाहरण के लिए, यदि आप यह देखना चाहते हैं कि पिछली बार जब आप इससे जुड़े थे तो मूल सर्वर पर मास्टर शाखा कैसी दिखती थी, तो मूल/मास्टर शाखा देखें। यदि आप और आपका साथी एक ही समस्या पर काम कर रहे थे और उसने iss53 थ्रेड पोस्ट किया है, तो हो सकता है कि आपके पास अपनी समस्या हो स्थानीय शाखा iss53 ; लेकिन सर्वर पर वह शाखा origin/iss53 में प्रतिबद्धता को इंगित करेगी।

मर्ज विवादों को कैसे हल करें?

कोड समीक्षा के दौरान नयी विशेषतामुख्य शाखा के प्रति प्रतिबद्ध होना चाहिए। सबसे पहले, स्रोत शाखा और लक्ष्य शाखा का चयन किया जाता है। अब अनुरोध बनाया जा सकता है. ऑडिटर के रूप में चयनित समूह को सूचित कर दिया गया है और अब वह स्थानांतरण अनुरोध देख सकता है। पुल अनुरोध के लिए टिप्पणियों का आदान-प्रदान किया जा सकता है। प्रत्येक परीक्षक वोट कर सकता है: अनुमोदित, टिप्पणियों के साथ अनुमोदित, अस्वीकृत, आदि। विशेष रूप से महत्वपूर्ण यह तथ्य है कि कोई मर्ज विवाद नहीं हैं। यदि सबमिट किए गए परिवर्तन समुदाय की स्वीकृत स्थिति के अनुकूल नहीं हैं, तो स्थानांतरण अनुरोधकर्ता को अपने परिवर्तनों को फिर से लिखना होगा।

यह सब भ्रमित करने वाला हो सकता है, तो आइए एक उदाहरण देखें। मान लीजिए कि आपके नेटवर्क पर git.ourcompany.com पर आपका अपना Git सर्वर है। यदि आप इसमें से कुछ क्लोन करते हैं, तो Git स्वचालित रूप से इसे मूल नाम देगा, वहां से सारा डेटा लेगा, मास्टर शाखा जो भी इंगित करेगी उसके लिए एक पॉइंटर बनाएगा, और इसे स्थानीय रूप से मूल/मास्टर नाम देगा (लेकिन आप इसे स्थानांतरित नहीं कर सकते)। Git आपको अपनी स्वयं की मास्टर शाखा भी देगा, जो मूल की मास्टर शाखा के समान स्थान पर शुरू होगी, इसलिए आपके पास काम करने के लिए कुछ है (चित्र 3-22 देखें)।

क्लासिक केंद्रीय संस्करण नियंत्रण प्रणालियों में, यह कार्य समीक्षक के पास जाता है। समीक्षा के बाद, ऑडिटर सीधे ब्राउज़र में मर्ज कर सकता है। नव विकसित फ़ंक्शन इस प्रकार एकीकृत है। स्थानीय भंडारकेंद्रीय भंडार में विलय के बारे में अभी तक पता नहीं है। इसके अतिरिक्त, कुछ अतिरिक्त प्रतिबद्धताएँ भी हो सकती हैं जिन्हें हम आगे बढ़ाना चाहते हैं।

फ़ाइलें नहीं बदली गईं. मुख्य शाखा के लिए इन प्रतिबद्धताओं की सूची अब पूरी हो गई है। यहां आपको पहले पुल को बाहर निकालने की आवश्यकता हो सकती है नवीनतम परिवर्तन. तभी प्रतिबद्धताओं को आगे बढ़ाया जा सकता है। उत्कृष्ट सिंक बटन एक में पुश और पुल है। यह सर्वर से सभी परिवर्तनों को डाउनलोड करता है और अपना संदेश भेजता है।

चित्र 3-22. Git प्रोजेक्ट को क्लोन करने से आपको इसकी अपनी मास्टर शाखा और मूल/मास्टर मिलती है जो मूल में मास्टर शाखा की ओर इशारा करती है।

यदि आप अपनी स्थानीय मास्टर शाखा पर कुछ करते हैं और इस बीच कोई अन्य व्यक्ति git.ourcompany.com पर परिवर्तन करता है और वहां मास्टर शाखा को अपडेट करता है, तो आपकी कहानियां अलग तरह से जारी रहेंगी। साथ ही, जब तक आप मूल सर्वर से संपर्क नहीं करते, आपका मूल/मास्टर पॉइंटर हिलेगा नहीं (चित्र 3-23 देखें)।

अंत में, अग्रणी शाखा की स्थिति अब स्थिर शाखा में परिवर्तित हो जाती है। ऐसा करने के लिए, एक मर्ज किया जाता है। एक नई रिलीज़ को अब स्थिर शाखा स्थिति से खींचा जा सकता है। आपको लॉगिन की आवश्यकता नहीं है और आपको कहीं भी पंजीकरण करने की आवश्यकता नहीं है। जब आप कई परियोजनाओं पर काम कर रहे हों तो किसी बिंदु पर आपको इसकी आवश्यकता होगी।

ऐसा करने के लिए, "टूल्स → विकल्प" चुनें। अगले डायलॉग बॉक्स में वांछित नाम और पता दर्ज करें ईमेल, जिसे आप संस्करण नियंत्रण के लिए उपयोग करना चाहते हैं। यह जानकारी केवल स्थानीय रूप से संग्रहीत की जाती है और इंटरनेट पर कहीं भी इसका उपयोग नहीं किया जाता है।



चित्र 3-23. जब कोई स्थानीय कार्य कर रहा हो और कोई व्यक्ति दूरस्थ सर्वर पर परिवर्तन भेज रहा हो, तो प्रत्येक कहानी अलग ढंग से जारी रहती है।

अपने काम को सिंक में रखने के लिए, git फ़ेच ओरिजिन कमांड चलाएँ। यह कमांड यह देखता है कि कौन सा सर्वर मूल किससे मेल खाता है (हमारे मामले में यह git.ourcompany.com है); वह सारा डेटा निकालता है जो आपके पास पहले से नहीं है और आपके स्थानीय डेटा संग्रहण को अद्यतन करता है; मूल/मास्टर पॉइंटर को एक नई स्थिति में ले जाता है (चित्र 3-24 देखें)।

और अब "ऐड" पर क्लिक करके बिल्कुल ऐसी ही एक रिपॉजिटरी बनाएं। अब हम मानते हैं कि आपने पहले ही अपने मास्टर की थीसिस शुरू कर दी है और इसे "मास्टरबीट" नामक निर्देशिका में रख दिया है। रिपॉजिटरी नाम निर्दिष्ट करें, जो मौजूदा निर्देशिका के नाम से मेल खाना चाहिए, और निर्देशिका कहां स्थित है इसका विवरण निर्दिष्ट करें।

रिपॉजिटरी में एक खाली निर्देशिका कैसे जोड़ें?

अब आप अपनी निर्देशिका की सभी फ़ाइलों को एक दृश्य में देखेंगे, जो आपको कोई भी परिवर्तन दिखाएगा जो अभी तक समन्वयित नहीं हुआ है। विशेष रूप से, अब आप यह देख रहे हैं कि आप किन फ़ाइलों का संस्करण बनाना चाहते हैं। टिक हटाने से बचने के लिए आप फ़ाइल प्रकारों को बाहर कर सकते हैं अनावश्यक फ़ाइलें, जिसे आप हर बार रिपॉजिटरी में नहीं चाहते हैं। "टूल्स → सेटिंग्स" चुनें।


चित्र 3-24. Git फ़ेच कमांड आपके दूरस्थ संदर्भों को अपडेट करता है।

यह प्रदर्शित करने के लिए कि मल्टी-रिमोट सर्वर स्थिति में दूरस्थ शाखाएँ कैसी दिखेंगी, मान लें कि आपके पास एक और आंतरिक Git सर्वर है जिसका उपयोग आपकी केवल एक विकास टीम द्वारा विकास के लिए किया जाता है। यह सर्वर git.team1.ourcompany.com पर स्थित है। आप इसे उस प्रोजेक्ट में एक नए रिमोट लिंक के रूप में जोड़ सकते हैं जिस पर आप वर्तमान में गिट रिमोट ऐड कमांड का उपयोग करके उसी तरह से काम कर रहे हैं जैसा कि अध्याय 2 में वर्णित है। इस रिमोट सर्वर टीमऑन को नाम दें, जो पूरे यूआरएल के लिए संक्षिप्त है (चित्र देखें) .3-25).

काम करते रहें और बदलाव लाएं

आपको उन्हें अपने भंडार में जोड़ना चाहिए. यह सुनिश्चित करने के लिए कि आपको इसे हर बार कॉन्फ़िगर न करना पड़े, सूची को विश्व स्तर पर ज्ञात करें। अब "टूल्स → ओपन शेल हियर" चुनें। खुलने वाली विंडो में कमांड लाइननिम्न आदेश दर्ज करें. आप चाहें तो और भी शामिल कर सकते हैं विस्तृत विवरण"विस्तारित विवरण" फ़ील्ड में. आप अतिरिक्त भाग जोड़ते हैं, कुछ ग्राफ़िक फ़ाइलें या कुछ कच्चा डेटा और नोट्स होते हैं जिनके आप संस्करण चाहते हैं।



चित्र 3-25. एक अतिरिक्त दूरस्थ सर्वर जोड़ा जा रहा है।

अब आप वह सब कुछ लाने के लिए git Fetch Teamone चला सकते हैं जो सर्वर पर है और आपके सर्वर पर नहीं है। के बाद से इस पलइस सर्वर में मूल सर्वर के पास मौजूद डेटा का केवल एक अंश है, Git कोई डेटा नहीं लाता है, लेकिन Teamone/master नाम की एक दूरस्थ शाखा को धकेलता है, जो Teamone सर्वर पर मास्टर शाखा के समान प्रतिबद्धता की ओर इशारा करता है (चित्र 3 देखें) -26).

यदि आप रिमोट रिपॉजिटरी पर पुश नहीं कर सकते क्योंकि रिपॉजिटरी का वर्तमान संस्करण रिमोट रिपॉजिटरी से कम है

फ़ाइल नाम या उसके बाईं ओर चेकमार्क पर क्लिक करके, आप उस कमिट को चुन या अचयनित कर सकते हैं। या तो आप किसी कमिट में कुछ परिवर्तन करना चाहते हैं, या आप कुछ फ़ाइलों का उपयोग नहीं करना चाहते हैं। अब आप सभी पिछली प्रतिबद्धताओं को उनके साथ देखें संक्षिप्त विवरण, और इसीलिए वे इतने महत्वपूर्ण हैं।

जब आप इस सूची में से चयन करते हैं, तो आप देख सकते हैं कि वास्तव में क्या बदल गया है। यह एक नई प्रतिबद्धता बनाता है जो आपके पिछले कार्यों को पूर्ववत कर देता है। यदि आप आगे की प्रतिबद्ध स्थिति में जाना चाहते हैं, तो उचित प्रतिबद्धता के साथ "इस प्रतिबद्धता में रोलबैक" चुनें। यह आपकी फ़ाइलों को निर्देशिका में बदल देगा, इसलिए सुनिश्चित करें कि आप सभी चीज़ों को रिपॉजिटरी में ले जाएं, इससे पहले कि आपको इसकी आवश्यकता हो!



चित्र 3-26. अब आपके पास Teamone पर मास्टर शाखा का एक स्थानीय लिंक है।

परिवर्तन सबमिट करना

यदि आपके पास एक सर्वरफ़िक्स शाखा है जिस पर आप किसी और के साथ काम करना चाहते हैं, तो आप इसे उसी तरह आगे बढ़ा सकते हैं जैसे आपने अपनी पहली शाखा सबमिट की थी। गिट पुश (रिमोट सर्वर) (शाखा) निष्पादित करें:

फिर आपको "फोर्क" करने की आवश्यकता है जिसे वर्जनिंग शब्दजाल में "शाखा" कहा जाता है। सब कुछ ठीक है क्योंकि गीत बाद में शाखाओं को फिर से जोड़ने में मदद करता है। यह संवाद बॉक्स वह जगह है जहां आप शाखा विलय को नियंत्रित करते हैं। यदि आपने एक ही स्थान पर, एक ही तर्ज पर विभिन्न शाखाओं में कुछ बदला है, तो निश्चित रूप से मर्ज में विरोध है। आपको इसे स्वयं ठीक करना होगा.

हालाँकि, इस दृश्य में, आप गड़बड़ी देख सकते हैं, लेकिन आप उसे ठीक नहीं कर सकते। अपनी आवश्यकताओं के अनुरूप प्रासंगिक अनुभागों को संशोधित करें। अंकन रेखाएं हटाएं. फिर आप दोबारा प्रतिबद्ध हो सकते हैं और संबंधित टिप्पणी के रूप में "मैन्युअल मर्ज" निर्दिष्ट कर सकते हैं।

$ गिट पुश ओरिजिन सर्वरफिक्स वस्तुओं की गिनती: 20, हो गया। वस्तुओं को संपीड़ित करना: 100% (14/14), हो गया। वस्तुएँ लिखना: 100% (15/15), 1.74 KiB, हो गया। कुल 15 (डेल्टा 5), ​​पुन: उपयोग 0 (डेल्टा 0) को [ईमेल सुरक्षित]:schacon/simplegit.git * सर्वरफिक्स -> सर्वरफिक्स

यह एक तरह से आशुलिपि है. Git स्वचालित रूप से सर्वरफ़िक्स शाखा नाम को refs/heads/serverfix:refs/heads/serverfix तक विस्तारित करता है, जिसका अर्थ है "मेरी स्थानीय सर्वरफ़िक्स शाखा लें और उससे दूरस्थ सर्वरफ़िक्स शाखा को अपडेट करें।" हम अध्याय 9 में संदर्भ/शीर्ष/भाग पर विस्तार से चर्चा करेंगे, लेकिन इसे आमतौर पर छोड़ा जा सकता है। आप गिट पुश ओरिजिन सर्वरफिक्स: सर्वरफिक्स भी कर सकते हैं - वही होगा - यह कहता है "मेरा सर्वरफिक्स लो और इसे रिमोट सर्वरफिक्स बनाओ"। आप इस प्रारूप का उपयोग किसी स्थानीय शाखा को किसी भिन्न नाम वाली दूरस्थ शाखा में भेजने के लिए कर सकते हैं। यदि आप नहीं चाहते कि रिमोट सर्वर पर शाखा का नाम सर्वरफिक्स रखा जाए, तो पिछले कमांड के बजाय git पुश ओरिजिन सर्वरफिक्स: ऑसमब्रांच चलाएँ। यह आपकी स्थानीय सर्वरफ़िक्स शाखा को दूरस्थ प्रोजेक्ट की ऑसमब्रांच शाखा में भेज देगा।

आइए वर्कफ़्लो के साथ शाखाकरण और विलय के एक सरल उदाहरण की कल्पना करें जिसे वास्तविकता में दर्शाया जा सकता है। कल्पना कीजिए कि आप इन चरणों का पालन कर रहे हैं।

  • आप एक वेबसाइट पर काम कर रहे हैं.
  • आप के लिए एक शाखा बनाएँ नया विषयजिस पर आप काम करना चाहते हैं.
  • आप इस सूत्र पर कुछ काम कर रहे हैं.
इस बिंदु पर, आपको एक संदेश प्राप्त होगा कि आप गंभीर रूप से समस्या का समाधान कर रहे हैं। और आप इन चरणों का पालन करेंगे.

बुनियादी शाखाकरण प्रक्रियाएँ

कल्पना करें कि आप किसी प्रोजेक्ट पर काम कर रहे हैं और आपके पास पहले से ही कई पुष्टियाँ हैं। सरल और संक्षिप्त पुष्टिकरण रिकॉर्ड करें. आप उस सिस्टम में अंक #53 पर काम करने का निर्णय लेते हैं जिसका उपयोग आपकी कंपनी मुद्दों को ट्रैक करने के लिए करती है। चूँकि अंक #53 एक विशिष्ट और सामयिक मुद्दा है जिस पर आप काम करने जा रहे हैं, आप इसके लिए एक नई शाखा बनाते हैं। चित्र 3-11 परिणाम दिखाता है।

$ git फ़ेच ओरिजिन रिमोट: वस्तुओं की गिनती: 20, हो गया। रिमोट: वस्तुओं को संपीड़ित करना: 100% (14/14), हो गया। रिमोट: कुल 15 (डेल्टा 5), ​​पुन: उपयोग 0 (डेल्टा 0) वस्तुओं को खोलना: 100% (15/15), हो गया। से [ईमेल सुरक्षित]:schacon/simplegit * सर्वरफिक्स -> ओरिजिन/सर्वरफिक्स

यह ध्यान रखना महत्वपूर्ण है कि जब आप नई दूरस्थ शाखाएँ लाते हैं, तो आपको स्वचालित रूप से उनके लिए स्थानीय संपादन योग्य प्रतियां नहीं मिलती हैं। दूसरे शब्दों में, हमारे मामले में आपको एक नई सर्वरफ़िक्स शाखा नहीं मिलेगी - केवल एक मूल/सर्वरफ़िक्स पॉइंटर, जिसे आप बदल नहीं सकते।

एक नई शाखा के लिए एक सूचक बनाएँ। आप एक वेबसाइट पर काम कर रहे हैं और कुछ बदलावों की पुष्टि कर रहे हैं। फिर आपको एक कॉल आती है जो आपको वेबसाइट के साथ एक और जरूरी समस्या के बारे में सूचित करती है। एक समस्या जिसे आपको तुरंत हल करना होगा। शाखाओं के बीच कूदने से पहले हमेशा साफ-सुथरा काम करने की स्थिति रखना सबसे अच्छा है। और इसके लिए हमारे पास कुछ प्रक्रियाएँ हैं जिन्हें हम बाद में देखेंगे।

अभी के लिए, चूँकि हमने सभी परिवर्तनों की पुष्टि कर दी है, हम बिना किसी समस्या के मास्टर शाखा में जा सकते हैं। इसके बाद आपके पास होगा कार्य फ़ोल्डरठीक वैसे ही जैसे यह समस्या पर काम शुरू करने से पहले था। # और आप नई गंभीर समस्या पर ध्यान केंद्रित कर सकते हैं। यह सुनिश्चित करने के लिए कि आपकी कार्यशील प्रतिलिपि आपके परिवर्तनों की अंतिम प्रतिबद्धता में शाखा के समान ही है। तत्काल समस्या पर लौटें. समाधान होने तक काम करने के लिए हम एक नई हॉटफ़िक्स शाखा बनाएंगे।

इन विकासों को अपनी वर्तमान कार्यशील शाखा में मर्ज करने के लिए, git merge origin/serverfix चलाएँ। यदि आप चाहते हैं कि आपकी स्वयं की सर्वरफ़िक्स शाखा काम करे, तो आप दूरस्थ शाखा से निर्माण कर सकते हैं:

$ git चेकआउट -बी सर्वरफिक्स ओरिजिन/सर्वरफिक्स ब्रांच सर्वरफिक्स रिमोट ब्रांच रेफरी/रिमोट/ऑरिजिन/सर्वरफिक्स को ट्रैक करने के लिए सेट अप किया गया है। एक नई शाखा "सर्वरफ़िक्स" पर स्विच किया गया

इससे आपको काम करने के लिए एक स्थानीय शाखा मिलेगी। यह वहीं से शुरू होगा जहां ओरिजिन/सर्वरफिक्स है।

किसी दूरस्थ सर्वर पर शाखाएँ हटाना

चित्र 3 मूल मास्टर शाखा पर आधारित एक पैच शाखा है। आप परीक्षण चला सकते हैं, सत्यापित कर सकते हैं कि समाधान सही है, और परिवर्तनों को लाइव करने के लिए उन्हें मास्टर शाखा में भेज सकते हैं। इसे ही "फास्ट फॉरवर्ड" कहा जाता है। अब किए गए परिवर्तन पहले से ही मास्टर शाखा द्वारा चिह्नित कमिट स्नैपशॉट में हैं। और आप उनका विस्तार कर सकते हैं.

विलय के बाद, मास्टर शाखा पैच शाखा के समान साइट पर इंगित करती है। आपके काम में बाधा डालने वाली तत्काल समस्या का समाधान करके, आप वापस वहीं पहुँच सकते हैं जहाँ आप थे। लेकिन सबसे पहले, हॉटफ़िक्स शाखा को हटाना दिलचस्प है। क्योंकि अब हमें इसकी आवश्यकता नहीं होगी क्योंकि यह बिल्कुल मास्टर शाखा की ही साइट की ओर इशारा करता है।

शाखा ट्रैकिंग

किसी दूरस्थ शाखा से git checkout का उपयोग करके किसी स्थानीय शाखा की जाँच करने से स्वचालित रूप से कुछ कॉल उत्पन्न हो जाती है ट्रैक की गई शाखा. मॉनिटर की गई शाखाएँ स्थानीय शाखाएँ हैं जो सीधे किसी दूरस्थ शाखा से जुड़ी होती हैं। यदि आप ट्रैक की गई शाखा पर git पुश टाइप करते हैं, तो Git को पहले से ही पता चल जाएगा कि किस सर्वर और शाखा में परिवर्तन पुश करना है। इसी तरह, इनमें से किसी एक शाखा पर गिट पुल चलाने से पहले सभी दूरस्थ संदर्भ प्राप्त होंगे, और फिर स्वचालित रूप से संबंधित दूरस्थ शाखा में विलय हो जाएगा।

बुनियादी पिघलने की प्रक्रियाएँ

और इसके साथ, आप अंक #53 पर काम करने के लिए वापस आने के लिए तैयार हैं। आइए मान लें कि अंक #53 पर आपका काम अब पूरा हो गया है और मास्टर शाखा में विलय के लिए तैयार है। यह पहले निष्पादित हॉटफिक्स मर्ज से थोड़ा अलग है। इस मामले में, विकास रिकॉर्ड पहले के बिंदु पर भिन्न हो गया।

विलय के दौरान उत्पन्न होने वाले प्रमुख संघर्ष

हम इस प्रक्रिया को "पुष्टिकृत विलय" के रूप में देखते हैं। और यह बात अलग है कि उसके एक से अधिक पिता हैं। यह तथ्य ध्यान देने योग्य है कि यह Git ही है जो स्वचालित रूप से मर्ज के लिए सबसे अच्छा सामान्य पूर्वज निर्धारित करता है। और अपनी कंपनी के इश्यू ट्रैकर में इश्यू को मैन्युअल रूप से बंद करें। कुछ मामलों में, विलय प्रक्रियाएँ आमतौर पर तरल नहीं होती हैं। उदाहरण के लिए, यदि समस्या #53 में आपने वही भाग बदला है जो पैच समस्या में भी बदला गया था।

किसी रिपॉजिटरी की क्लोनिंग करते समय, यह आम तौर पर स्वचालित रूप से एक मास्टर शाखा बनाएगा जो मूल/मास्टर को ट्रैक करती है, इसलिए git पुश और git पुल उस शाखा के लिए बॉक्स से बाहर काम करते हैं और किसी अतिरिक्त तर्क की आवश्यकता नहीं होती है। हालाँकि, आप दूरस्थ रिपॉजिटरी की अन्य शाखाओं की ट्रैकिंग कॉन्फ़िगर कर सकते हैं। यह कैसे करना है इसका एक सरल उदाहरण, आपने अभी देखा - git checkout -b [branch] [delete. सर्वर]/[शाखा]। यदि आप उपयोग कर रहे हैं गिट संस्करण 1.6.2 या बाद का संस्करण, आप --ट्रैक शॉर्टकट का भी उपयोग कर सकते हैं:

आपको मर्ज विरोध मिल सकता है। बल्कि, वह इस प्रक्रिया में रुक जाता है और संघर्ष के सुलझने का इंतज़ार करता है। जो कुछ भी विरोधाभासी है और जिसका समाधान नहीं किया जा सकता उसे "विलय न करना" कहा जाता है। जब आप फ़ाइलों को मैन्युअल रूप से खोलते हैं और उन्हें ठीक करने के लिए उन्हें संपादित करते हैं तो बुकमार्क आपकी मदद करते हैं।

नियोजित प्रतिबद्धता में पहले से जोड़े गए परिवर्तनों को छोड़कर सभी परिवर्तनों को पूर्ववत करें

संघर्ष फ़ाइल में शामिल होगा. किसी विरोध को हल करने के लिए, आपको मैन्युअल रूप से एक या दूसरे पक्ष से सामग्री का चयन करना होगा। उदाहरण के लिए, आप ब्लॉक को बदल सकते हैं, इसे इस तरह छोड़ सकते हैं। इस सुधार में दोनों भागों का थोड़ा-थोड़ा समावेश है। यह संबंधित रेंडरिंग टूल लॉन्च करेगा और आपको इसके साथ टकराव को हल करने की अनुमति देगा। यदि आप डिफ़ॉल्ट टूल के अलावा किसी अन्य टूल का उपयोग करना चाहते हैं, तो आप इसे शुरुआत में दिखाए गए समर्थित टूल की सूची से चुन सकते हैं। टूल के लिए एक नाम दर्ज करें.

$ git चेकआउट --ट्रैक ओरिजिन/सर्वरफ़िक्स ब्रांच सर्वरफ़िक्स को रिमोट ब्रांच रेफरी/रिमोट्स/ओरिजिन/सर्वरफ़िक्स को ट्रैक करने के लिए सेट किया गया है। एक नई शाखा "सर्वरफ़िक्स" पर स्विच किया गया

दूरस्थ शाखा से भिन्न नाम के साथ एक स्थानीय शाखा स्थापित करने के लिए, आप भिन्न स्थानीय शाखा नाम के साथ पहले संस्करण का आसानी से उपयोग कर सकते हैं:

$ गिट चेकआउट -बी एसएफ मूल/सर्वरफिक्स शाखा एसएफ दूरस्थ शाखा रेफरी/रिमोट/उत्पत्ति/सर्वरफिक्स को ट्रैक करने के लिए स्थापित किया गया है। एक नई शाखा "एसएफ" में स्विच किया गया

अब आपकी स्थानीय एसएफ शाखा मूल/सर्वरफ़िक्स से परिवर्तनों को स्वचालित रूप से पुश और खींच लेगी।

किसी दूरस्थ सर्वर पर शाखाएँ हटाना

मान लीजिए कि आपने और आपके सह-लेखकों ने एक सुविधा पूरी कर ली है और इसे एक दूरस्थ सर्वर (या किसी अन्य शाखा जहां स्थिर कोड संग्रहीत है) पर मास्टर शाखा में विलय कर दिया है। आप कुछ हद तक अस्पष्ट सिंटैक्स गिट पुश [डिलीट] का उपयोग करके रिमोट सर्वर पर एक शाखा को हटा सकते हैं। सर्वर] :[शाखा]। सर्वर पर सर्वरफ़िक्स शाखा को हटाने के लिए, निम्न कार्य करें:

$ गिट पुश ओरिजिन:सर्वरफिक्स टू [ईमेल सुरक्षित]:schacon/simplegit.git - सर्वरफिक्स

ताली। आपके सर्वर पर अब कोई शाखा नहीं है. हो सकता है कि आप वर्तमान पृष्ठ को बुकमार्क करना चाहें, क्योंकि आपको इस कमांड की आवश्यकता होगी और आप संभवतः सिंटैक्स भूल जाएंगे। आप सिंटैक्स गिट पुश [डिलीट] पर लौटकर इस कमांड को याद रख सकते हैं। सर्वर] [स्थानीय। धागा]:[हटाया गया शाखा], जिसे हमने थोड़ा पहले देखा था। भाग छोड़ना [स्थान] थ्रेड], आप अनिवार्य रूप से कह रहे हैं "मेरे भंडार में कुछ भी नहीं ले लो और इसे ऐसा बनाओ कि [हटा दिया जाए। शाखा] यह वही था।



मित्रों को बताओ