सामग्री पर जाएं
GitTree

पाठ 12 · रोजमर्रा का काम

तेजी से आगे बढ़ाएं, मर्ज करें या रिबेस करें

विचलन का निरीक्षण करने के बाद एक स्पष्ट पुल नीति चुनें। तीन प्रतियों और एक अलग स्थानीय सर्वर का उपयोग करके तेजी से आगे बढ़ने वाले इनकार, विलय और निजी रिबेस की तुलना करें।

प्रगति इस ब्राउज़र में सहेजी गई.

चलाने से YouTube से वीडियो लोड होता है (गोपनीयता-उन्नत मोड)।

अंग्रेजी कथन · English and Arabic कैप्शन

वीडियो पेज खोलेंयूट्यूब पर देखें

आप क्या सीखेंगे

  • फ़ेच को पुल एकीकरण से अलग करें.
  • तीन स्पष्ट नीति विकल्पों की तुलना करें।
  • नीति परिणाम के रूप में एफएफ-ओनली इनकार को पहचानें।
  • अपस्ट्रीम और लगातार ऐप नीति सेटिंग्स की समीक्षा करें।

शुरू करने से पहले

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

वीडियो को Git 2.52.0 और GitTree 2.0 के साथ Ubuntu 24.04 पर रिकॉर्ड किया गया था: विचलन, बचाव शाखा और नया सर्वर टर्मिनल में बनाया गया था; ऐप में तीन पुल, परिणाम दृश्य, पॉलिसी फ़ाइल और पुल-मोड पुनर्स्थापना की गई थी; परिणाम टर्मिनल में जांचे गए। macOS या Windows पर कुछ भी नहीं चलाया गया, और Ubuntu ही एकमात्र Linux सिस्टम रिकॉर्ड किया गया है। GitTree का स्रोत Git फ़्लोर 2.39.0 है।

GitTree आपसे साइन इन करने के लिए कहता है; फिर नि:शुल्क योजना यहां हर चरण को कवर करती है। किसी प्रदाता खाते, प्रो/ट्रायल, एपीआई क्रेडेंशियल या इंटरनेट सेवा की आवश्यकता नहीं है। स्थानीय मूल उत्पत्ति GitLab या सीआई नहीं है। सभी पहचान example.com का उपयोग करती हैं; इस पाठ को कभी भी स्रोत चेकआउट के अंदर न चलाएँ।

समान इनपुट पर या तो GitTree या मूल पथ के माध्यम से उत्परिवर्तन करें, दोनों लगातार नहीं। केवल पढ़ने योग्य सत्यापन का पालन किया जा सकता है। टर्मिनल कार्य के रूप में वर्णित किसी भी तैयारी को मूल तैयारी का लेबल दिया जाता है, कभी भी एक आविष्कृत ऐप सुविधा नहीं।

अवधारणा और राज्य प्रभाव

खींचो को चयनित एकीकरण नीति के बाद लाया जाता है; यह ताज़ा करने का पर्यायवाची नहीं है। एक फ़ेच चरण ट्रैकिंग रेफरी को अपडेट कर सकता है, भले ही एफएफ-ओनली बाद में स्थानीय शाखा को स्थानांतरित करने से इनकार कर दे।

डायवर्जेड प्राइवेट एस/एन पर, एफएफ-ओनली मना कर देता है, मर्ज दोनों पथों को संरक्षित करता है, और रीबेस प्राप्त आधार पर प्राइवेट कमिट को दोबारा चलाता है। इनकार को गायब करने के लिए चुपचाप मोड न बदलें।

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

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

सटीक प्रोजेक्ट स्थिति तैयार करें

Begin from a separate ordinary copy of the clean course project as lesson 11 left it. The original gittree-features stays preserved; do not run this scenario in the original or a source checkout. (An earlier plan of the course started this lesson from a later merge lesson's result; that lesson is not recorded yet, so the video uses lesson 11's project and the same steps.) Then perform the exact preparation below. Repo-local demo signing is off and GitTree Demo <demo@example.com> is the identity unless a teammate is explicitly named.

पूर्ण फ़ाइल इनपुट

केवल नीचे नामित चरण पर ही सहेजें। ये अंतिम नई लाइन के साथ पूर्ण UTF-8/LF निकाय हैं; कभी भी मार्कडाउन बाड़ चिपकाएँ नहीं। अपरिवर्तित चलने योग्य फ़ाइलें नामित इनपुट प्राप्त करती हैं। अलग-अलग संस्करणों में मूल को अधिलेखित नहीं किया जाना चाहिए।

Index.html - साइन अप करें

फ़ाइल अंश · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main" tabindex="-1">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work clearly.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
    <section aria-labelledby="plans-title">
      <h2 id="plans-title">Choose the workflow you need</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>Local Git</h3>
          <p>Local Git workflows work without signing in.</p>
        </article>
        <article class="feature-card">
          <h3>Connected workflows</h3>
          <p>Provider integrations and Nour require Pro or an applicable trial.</p>
        </article>
      </div>
    </section>
    <section aria-labelledby="signup-title">
      <h2 id="signup-title">Try the demo form</h2>
      <form id="signup-form" novalidate>
        <label for="demo-email">Demo email</label>
        <input id="demo-email" name="email" type="email" autocomplete="off" aria-describedby="signup-hint">
        <p id="signup-hint">Use a fictional example.com address. Nothing is sent.</p>
        <button type="submit">Check the address locally</button>
        <p id="signup-result" role="status"></p>
      </form>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

दस्तावेज़/एकीकरण-नोट.एमडी - DOC_MERGE

आउटपुट
# Integration review

This note was written on main while signup work was private.

डॉक्स/पुल-पॉलिसी.एमडी - DOC_PULL

आउटपुट
# Pull policy

Fetch first and inspect ancestry.
Use fast-forward only when no integration decision is needed.
Merge preserves existing commit identities; rebase recreates private commits.
Never rewrite someone else's published work without coordination.

GitTree में

पैलेट: Command+Shift+P (Ubuntu पर Ctrl+Shift+P); सटीक नामित कमांड टाइप करें और उसका चयन करें। नामांकित-रेफ क्रियाएँ उस पंक्ति के संदर्भ मेनू का उपयोग करती हैं, तर्क-मुक्त पैलेट शॉर्टकट का नहीं।

  1. नीचे तीन वास्तविक पृथक प्रतियां और उनका अपना सर्वर/अपस्ट्रीम तैयार करें; पॉलिसी चुनने से पहले पिछला सामान्य.पुलमोड रिकॉर्ड करें।
  2. एफएफ कॉपी में, पैलेट पुल: फास्ट-फॉरवर्ड ओनली, फिर टूलबार Pull बटन; वास्तविक विचलन इनकार की प्रतीक्षा करें। ऐप के नोटिस में लिखा है, "फीचर/साइनअप-फॉर्म तेजी से आगे नहीं बढ़ सकता", कहता है कि दोनों पक्षों ने प्रतिबद्धता जताई है और दूसरे ने ऐसा नहीं किया है, कि कुछ भी नहीं बदला गया है, और मर्ज, रीबेस या रीसेट करने के लिए Resolve… की पेशकश करता है। यह तब तक बना रहता है जब तक आप इसे ख़ारिज नहीं कर देते, इसलिए इसे अगली प्रति से पहले ख़ारिज कर दें।
  3. विषय टिप/कार्य का निरीक्षण करें, भले ही प्राप्त मूल/अद्यतन-मुख्य वर्तमान हो; फ़ोर्स पुश न दबाएँ...
  4. अछूते मर्ज कॉपी में, पुल चुनें: यदि संभव हो तो फास्ट-फॉरवर्ड, अन्यथा मर्ज, फिर टूलबार पुल बटन चुनें; वास्तविक दो-अभिभावक परिणाम का निरीक्षण करें।
  5. अछूती रीबेस कॉपी में, पुल चुनें: रीबेस, फिर पुल; वर्तमान विषय निजी है, ऑटोस्टैश की आवश्यकता नहीं है।
  6. एन पर पुनः निर्मित एस' को सत्यापित करें, माता-पिता और समान पूर्ण पेड़ों को मर्ज करें। प्रत्येक परिणाम को स्वतंत्र रूप से सुरक्षित रखें.
  7. तुलना किए गए स्नैपशॉट को संरक्षित करने के बाद ही अभ्यास प्रतिलिपि में पूर्ण DOC_PULL को docs/pull-policy.md के रूप में सहेजें; इसे यहीं अप्रतिबद्ध छोड़ दें।
  8. रिकॉर्डिंग ऐप के पिछले पुल मोड को स्पष्ट रूप से पुनर्स्थापित करें; सत्यापित करें कि कोई स्वचालित पुश या मूल-मुख्य परिवर्तन नहीं हुआ।

प्रत्येक सामान्य प्रतिबद्धता के लिए: सारांश बताया गया विषय है; विवरण रिक्त; पिछली प्रतिबद्धता में संशोधन करें, हुक छोड़ें, हस्ताक्षरित-ऑफ-बाय, अलग लेखक जोड़ें, प्रतिबद्धता के बाद पुश करें और खाली प्रतिबद्धता को अनुमति दें; कोई सह-लेखक नहीं. केवल नामित फ़ाइलों को चरणबद्ध करें, फिर एक बार एन फ़ाइलों में परिवर्तन करें (एक के लिए फ़ाइल), या विकल्प के रूप में कमांड+एंटर करें। वास्तविक परिणाम की प्रतीक्षा करें. एक पाठ जो स्पष्ट रूप से संशोधन करता है वह केवल उस बताए गए विकल्प को बदलता है।

टर्मिनल में

प्रोजेक्ट की एक अलग साफ़ प्रतिलिपि में, पहले लियो की प्राप्त प्रतिबद्धता (जो कि एम है) में मुख्य लाएँ, फिर निजी विषय बनाएँ:

Command · bash
git merge --ff-only --quiet origin/main
git switch --create feature/signup-form

सहेजी गई SIGNUP फ़ाइल को Index.html पर रखें (वीडियो ने पाठ की फ़ाइलों को ~/डाउनलोड में सहेजा है और cp ~/Downloads/SIGNUP.html index.html का उपयोग करता है), फिर:

Command · bash
git add -- index.html
git commit --quiet -m "feat: add the local signup demonstration"
git branch rescue/signup-before-rebase
BASE_SHA="$(git rev-parse HEAD~1)"
git switch --quiet --create updated-main "$BASE_SHA"

अपडेटेड-मेन पर DOC_MERGE को docs/integration-note.md (cp ~/Downloads/DOC_MERGE.md docs/integration-note.md) पर रखें, फिर:

Command · bash
git add -- docs/integration-note.md
git commit --quiet -m "docs: add the integration review"
git switch --quiet feature/signup-form

BASE_SHA निजी साइनअप प्रतिबद्धता से पहले मापा गया M पैरेंट है। विषय और अद्यतन-मुख्य दोनों की अब एक स्वतंत्र प्रतिबद्धता है; बचाव/साइनअप-बिफोर-रीबेस पुराने विषय को बरकरार रखता है। इस विषय से कुछ भी प्रकाशित नहीं है.

उस प्री-रीबेस कॉपी से, एक new सर्वर तैयार करें जिसमें केवल एन हो:

Command · bash
git clone --quiet --bare --single-branch --branch updated-main --no-local . ../gittree-pull-origin.git

cp -R <source-demo-copy> <new-copy> के साथ एक ही इनपुट की तीन सामान्य प्रतियां बनाएं, जबकि कोई Git/app ऑपरेशन सक्रिय नहीं है, या समकक्ष सत्यापित फ़ाइल सिस्टम प्रतियां .git को संरक्षित कर रही हैं। प्रत्येक प्रतिलिपि में उस नए सर्वर के लिए मूल को मापी गई फ़ाइल यूआरएल से बदलें, विषय को अपस्ट्रीम में लाएं और सेट करें; मूल को कभी भी दोबारा लक्ष्य न बनाएं:

Command · bash
git remote set-url origin "<measured-file-url>"
git fetch --quiet --prune origin
git branch --set-upstream-to=origin/updated-main feature/signup-form

प्लेसहोल्डर के स्थान पर मापी गई फ़ाइल URL का उपयोग करें। एफएफ कॉपी में:

Command · bash
git pull --quiet --ff-only origin updated-main

मापा निकास 128; नैदानिक अंश:

आउटपुट
hint: Diverging branches can't be fast-forwarded, you need to either:
hint:
hint: 	git merge --no-ff
hint:
hint: or:
hint:
hint: 	git rebase
hint:
hint: Disable this message with "git config set advice.diverging false"
fatal: Not possible to fast-forward, aborting.

अलग मर्ज कॉपी में:

Command · bash
git pull --quiet --no-rebase --no-edit origin updated-main

अलग रीबेस कॉपी में:

Command · bash
git pull --quiet --rebase origin updated-main

दोनों सफल हुए; वास्तविक अंतिम ट्री आईडी का मिलान हुआ, मर्ज के दो पैरेंट थे और एक को दोबारा चलाया गया। प्रत्येक निरीक्षण के लिए:

Command · bash
git rev-list --parents -n 1 HEAD
git rev-parse 'HEAD^{tree}'
git status --short

एसएचए अलग-अलग होते हैं; वैकल्पिक नीति-फ़ाइल अभ्यास से पहले स्थितियाँ साफ़ थीं। कोई भी आदेश किसी शाखा को आगे नहीं बढ़ाता.

नतीजा

Where you end: एफएफ-केवल प्रतिलिपि लाने के बाद इनकार के साथ एस पर बनी रहती है। मर्ज कॉपी दो-अभिभावक एकीकरण जोड़ती है; रीबेस कॉपी एन पर एस' बनाती है। पेड़ों को मर्ज/रीबेस करने पर सहमति; कोई धक्का नहीं. केवल तुलना के बाद नीति फ़ाइल को अप्रतिबद्ध अभ्यास के रूप में सुरक्षित रखें।

सामान्य गलतियाँ

  • एक सीधा ग्राफ़ मानने का मतलब है कि पुरानी प्रतिबद्ध आईडी बची हुई है।
  • वैकल्पिक फलक को मूल चेकपॉइंट के रूप में मानना।
  • ऐप की सफलता के बाद पूर्ण उत्परिवर्तन को दोहराया जा रहा है।

अगर कुछ गलत होता है

एफएफ इनकार डेटा हानि नहीं है। प्राप्त/स्थानीय संदर्भों का निरीक्षण करें और उस प्रति के लिए एक समीक्षा की गई नीति चुनें। यदि मर्ज/रीबेस रुक जाता है, तो समाधान करें/जारी रखें या स्पष्ट रूप से निरस्त करें; एक सक्रिय ऑपरेशन के ऊपर दूसरा पुल न चलाएं।

अपनी समझ की जाँच करें

प्रत्येक प्रश्न का उत्तर दें, फिर क्यों पढ़ें। "आवश्यक" चिह्नित प्रश्न पाठ को पूरा करने में गिने जाते हैं।

  1. प्रश्न 1 में से 6

    यहाँ खींच क्या है?

    एक उत्तर चुनें.

  2. प्रश्न 2 में से 6

    एफएफ-ओनली इनकार पर क्या हो सकता है?

    लागू होने वाला प्रत्येक उत्तर चुनें.

  3. प्रश्न 3 में से 6
    आवश्यक

    एन पर निजी रीप्ले: परिणामी अभिभावक?

    एक उत्तर चुनें.

  4. प्रश्न 4 में से 6
    आवश्यक

    वर्तमान कार्य को प्रकाशित साझा विषय में बदलें: रीबेस अभी भी स्वचालित सलाह?

    एक उत्तर चुनें.

  5. प्रश्न 5 में से 6

    पैलेट नीति आदेश केवल एक पुल बदलता है?

    एक उत्तर चुनें.

  6. प्रश्न 6 में से 6
    आवश्यक

    तुलना से क्या सिद्ध होता है?

    लागू होने वाला प्रत्येक उत्तर चुनें.

6 में से 0 सही

पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें।

इस ब्राउज़र में चेक किया गया.

अभ्यास करें

बताएं कि अस्वीकृत कॉपी में कौन सी स्थिति बदली, दो सफल पेड़ों और माता-पिता की तुलना करें, फिर पूरी DOC_PULL नीति लिखें। सत्यापित करें कि रिकॉर्डिंग ऐप की प्राथमिकता बहाल कर दी गई है।

आपकी अपनी पुष्टि: साइट आपका कंप्यूटर नहीं देख सकती।

पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें और व्यावहारिक अभ्यास की पुष्टि करें।

पुनर्कथन

  • पुल में एक एकीकरण नीति शामिल है।
  • इनकार एक सफल फ़ेच का अनुसरण कर सकता है।
  • नीति की दृढ़ता को स्पष्ट समीक्षा की आवश्यकता है।

शब्दावली शब्द प्रस्तुत किये गये

रिबेस - إعادة تأسيس; फिर से खेलना - إعادة تطبيق; बचाव रेफरी - مرجع حفظ.

वीडियो प्रतिलेख

वीडियो का वर्णन, संकेत दर संकेत।

प्रतिलिपि दिखाएँ
  1. सटीक चौकी से प्रारंभ करें.
  2. शाखा का नाम, सूचकांक और कार्यशील संस्करण।
  3. केवल पृथक पाठ्यक्रम प्रति ही तैयार करें।
  4. अपस्ट्रीम का नाम बताएं और तीनों इनपुट सुरक्षित रखें।
  5. फ़ास्ट-फ़ॉरवर्ड केवल इस विचलन को अस्वीकार करता है।
  6. एक इनकार एक सफल फ़ेच का अनुसरण कर सकता है।
  7. विलय नीति दोनों इतिहासों को सुरक्षित रखती है।
  8. केवल निजी विषय को दोबारा चलाएं.
  9. माता-पिता की तुलना करें और पूरे पेड़ अलग से.
  10. बाद में समीक्षा की गई पुल नीति लिखें।
  11. पिछली ऐप-व्यापी नीति पुनर्स्थापित करें।
  12. यहाँ खींच क्या है?
  13. पुल का एक परिवहन चरण होता है और नीति-शासित स्थानीय चरण।
  14. एफएफ-ओनली इनकार पर क्या हो सकता है?
  15. फ़ेच पहले समाप्त हो सकता है एकीकरण विचलन को अस्वीकार करता है।
  16. एन पर निजी रीप्ले: परिणामी अभिभावक?
  17. मर्ज K के विपरीत, रीबेस N पर S' बनाता है।
  18. वर्तमान कार्य को प्रकाशित साझा में बदलें विषय: रिबेस अभी भी स्वचालित सलाह?
  19. केवल निजी धारणाएँ अब मान्य नहीं हैं।
  20. पैलेट नीति आदेश केवल एक खिंचाव बदलता है?
  21. स्रोत सामान्य.पुलमोड लिखता है जब तक कोई अन्य विकल्प इसे पुनर्स्थापित नहीं कर देता।
  22. तुलना से क्या सिद्ध होता है?
  23. बल्कि वास्तविक स्थिति की तुलना करें मौन आदेश की तुलना में.
  24. वास्तविक परिणाम सत्यापित करें, सिर्फ एक संदेश नहीं.
  25. कार्य करने से पहले बदले हुए इनपुट का अनुमान लगाएं।
  26. पुनर्प्राप्ति से पहले उपयोगी कार्य सुरक्षित रखें.
  27. जारी रखने से पहले चेकपॉइंट साबित करें।
  28. सत्यापित परिणाम रखें अगले चरण के लिए.