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

पाठ 27 · पुनर्प्राप्ति

रीसेट: नरम, मिश्रित और कठोर

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

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

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

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

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

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

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

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

आप private/reset पर हैं, एक शाखा जो पाठ 18 ("अपना काम स्पष्ट रूप से देखें") से मर्ज किए गए पृष्ठ एम से शुरू होती है। इसमें एम, सी के ऊपर एक प्रतिबद्धता है, जो शीर्षक को "विश्वास के साथ परिवर्तनों की समीक्षा करें" में बदल देती है। एक शाखा rescue/before-reset पहले से ही सी पर इंगित करती है। उसके प्रतिबद्ध होने के बाद आपने पृष्ठ को फिर से संपादित किया, "प्रत्येक सहेजे गए परिवर्तन को समझें।", और आपने इसे मंचित या प्रतिबद्ध नहीं किया है। आपके पास एक अनट्रैक नोट भी है, docs/signup-hint.md। आप private/reset वापस एम पर जाना चाहते हैं।

Everything is local and on the Free plan (GitTree asks you to sign in): no hosting account, no provider, no internet. Every identity is fictional (example.com). Never run this lesson in a real project. The hard-reset copy is disposable.

परिवर्तन GitTree या मूल Git कमांड के साथ करें, दोनों एक ही प्रतिलिपि में नहीं। परिणाम पढ़ना हमेशा सुरक्षित होता है. मेनू लेबल 2.0 के स्वयं के स्ट्रिंग्स से आते हैं और मूल कमांड डिस्पोजेबल प्रतियों में Git 2.43 के साथ चलाए गए थे। GitTree चरण macOS, Windows या Linux पर नहीं चलाए गए।

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

एक रीसेट वर्तमान शाखा को किसी अन्य कमिट में ले जाता है। मोड तय करता है कि यह कितना अधिक छूता है। Soft केवल शाखा को स्थानांतरित करता है: सूचकांक और आपकी फ़ाइलें वैसी ही रहती हैं जैसी वे थीं, इसलिए अंतर चरणबद्ध परिवर्तनों के रूप में दिखाई देता है। Mixed शाखा को स्थानांतरित करता है और सूचकांक को लक्ष्य से बदल देता है: आपकी फ़ाइलें बनी रहती हैं, इसलिए अंतर अस्थिर परिवर्तनों के रूप में दिखाई देता है। Hard शाखा को स्थानांतरित करता है, सूचकांक को प्रतिस्थापित करता है और आपकी ट्रैक की गई फ़ाइलों को लक्ष्य पर फिर से लिखता है। ट्रैक की गई फ़ाइलों में आपके अप्रतिबद्ध संपादन समाप्त हो गए हैं।

बचाव शाखा कमिट सी रखती है, इसलिए कमिटेड शीर्षक फिर से पाया जा सकता है। यह नया संपादन नहीं रखता है, जो कभी प्रतिबद्ध नहीं था। रिफ्लॉग के माध्यम से प्रतिबद्धताएं पाई जा सकती हैं; सहेजे न गए संपादन नहीं कर सकते, क्योंकि वे कभी भी Git में नहीं थे। किसी भी विनाशकारी विधा से पहले उनकी रक्षा स्वयं करें।

जब लक्ष्य के पास उसी पथ पर ट्रैक की गई फ़ाइल हो तो हार्ड रीसेट एक अनट्रैक की गई फ़ाइल को भी अधिलेखित कर देता है। एक अनट्रैक की गई फ़ाइल जो रास्ते में नहीं है, जैसे कि यहां docs/signup-hint.md, अकेली छोड़ दी जाती है। यह इस परियोजना के बारे में एक अवलोकन है, न कि प्रत्येक अनट्रैक फ़ाइल के बारे में कोई वादा।

तीनों मोड में शाखा ही एकमात्र रेफरी है जो चलती है: rescue/before-reset, अन्य शाखाएं और सर्वर पर कुछ भी वैसे ही रहता है जैसे वे थे।

GitTree पहले पूछता है. इसका रीसेट डायलॉग बताता है कि क्या रहेगा, और हार्ड रीसेट के लिए यह कहता है कि जो कुछ भी यह हटाता है वह पहले refs/ogt/trash के तहत सहेजा जाता है ताकि पूर्ववत इसे पुनर्स्थापित कर सके। टर्मिनल में रीसेट रन ऐसा कोई स्नैपशॉट नहीं बनाता है।

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

पाठ 18 के मर्ज किए गए परिणाम एम की एक अलग सामान्य प्रति से प्रारंभ करें और अपने मूल को अछूता छोड़ दें। शाखा बनाएं, SARA को हेडिंग कमिट के रूप में सहेजें और उस पर बचाव रेफरी को शाखा दें। फिर OMAR को बिना चरण के और DOC_HINT को एक नई फ़ाइल के रूप में सहेजें। OMAR और नोट की एक प्रति Git के बाहर रखें, फिर तीन समान प्रतियां बनाएं, नरम, मिश्रित और कठोर प्रत्येक के लिए एक।

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

केवल नीचे नामित चरण पर ही सहेजें। ये अंतिम नई लाइन के साथ पूर्ण 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>
  </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>

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">Review changes with confidence.</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>
  </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>

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">Understand each saved change.</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>
  </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>

डॉक्स/signup-hint.md - DOC_HINT

आउटपुट
Unfinished signup hint: use fictional data only.

GitTree में

पैलेट को Command+Shift+P (Ubuntu पर Ctrl+Shift+P) से खोलें। रीसेट कमिट के राइट-क्लिक मेनू पर, सबमेनू Reset private/reset to This Commit के अंतर्गत होता है।

  1. जैसा कि अगले भाग में दिखाया गया है, शाखा, बचाव रेफरी, अस्थिर संपादन और नोट बनाएं। संपादन और नोट की एक प्रति Git के बाहर रखें। तीन समान प्रतियां बनाएं और उन्हें तीन टैब में खोलें।
  2. Soft copy. ग्राफ़ में, M पर राइट-क्लिक करें (C के नीचे कमिट, ब्रांच टिप नहीं) और Reset private/reset to This Commit खोलें। Soft: Keep All Changes Staged चुनें. पुष्टिकरण संवाद कहता है कि तब से प्रत्येक परिवर्तन चरणबद्ध रहता है और कोई फ़ाइल परिवर्तन नहीं होता है। Reset private/reset चुनें.
  3. सॉफ्ट परिणाम की जाँच करें: शाखा एम पर है, डिस्क पर पेज अभी भी कहता है "प्रत्येक सहेजे गए परिवर्तन को समझें।", और चरणबद्ध और अचरणबद्ध दोनों सूचियाँ index.html रखती हैं।
  4. एम पर Mixed copy. चुनें Mixed: Keep Changes in the Working Folder संवाद कहता है कि प्रत्येक परिवर्तन आपकी कार्यशील प्रतिलिपि में बिना किसी चरण के रहता है। Reset private/reset चुनें. शाखा एम पर है, डिस्क पर पेज वही संपादन है, और परिवर्तन केवल अस्थिर है।
  5. Hard copy. आपके द्वारा संपादन और नोट को अन्यत्र सहेजने के बाद ही, एम पर Hard: Discard All Changes… चुनें। संवाद एक चेतावनी है: यह सूचीबद्ध करता है कि क्या हटाया गया है और कहता है कि इसे पहले refs/ogt/trash के अंतर्गत रखा गया है। इसे पढ़ें। डिफ़ॉल्ट रद्द है. Discard and reset private/reset चुनें.
  6. कठिन परिणाम की जांच करें: शाखा एम पर है, पृष्ठ एम का शीर्षक है और परिवर्तन सूची केवल अनट्रैक किए गए नोट को दिखाती है। नोटिस में "रीसेट टू" और कमिट लिखा हुआ है।
  7. तीन प्रतियों और rescue/before-reset की तुलना करें, जो अभी भी सी पर है। उनमें से किसी को भी धक्का न दें।

रीसेट कमांड उस कमिट पर अक्षम हो जाते हैं जिस पर शाखा पहले से ही चालू है, और जब कोई शाखा चेक आउट नहीं होती है।

पाठ्यक्रम में प्रत्येक सामान्य प्रतिबद्धता के लिए: Summary बताया गया विषय है, Description खाली है और विकल्प Amend Previous Commit, Skip Hooks, Add Signed-off-by, Different Author, Push After Commit और Allow Empty Commit बंद रहते हैं।

टर्मिनल में

पाठ 18 के परिणाम की एक अलग प्रति में:

Command · bash
git switch --create private/reset

SARA को index.html के रूप में सहेजें, फिर:

Command · bash
git add -- index.html
git commit --quiet -m "feat: reset snapshot example"
git branch rescue/before-reset

OMAR को बिना स्टेजिंग के index.html के रूप में और DOC_HINT को docs/signup-hint.md के रूप में सहेजें। दोनों की एक प्रति Git के बाहर रखें, फिर तीन समान प्रतिलिपियाँ बनाएँ। प्रत्येक में:

Command · bash
TARGET_SHA="$(git rev-parse rescue/before-reset^)"

केवल सॉफ्ट कॉपी:

Command · bash
git reset --quiet --soft "$TARGET_SHA"

केवल मिश्रित प्रतिलिपि:

Command · bash
git reset --quiet --mixed "$TARGET_SHA"

केवल हार्ड कॉपी, इसकी डिस्पोजेबल कॉपी में:

Command · bash
git reset --quiet --hard "$TARGET_SHA"

प्रत्येक प्रति में पढ़ें:

Command · bash
git rev-parse HEAD
git show :index.html
git status --short

प्रत्येक HEAD एम है। सूचकांक नरम के बाद सारा और मिश्रित और कठोर के बाद एम का पृष्ठ रखता है। डिस्क पर फ़ाइल सॉफ्ट और मिश्रित के बाद OMAR है और हार्ड के बाद M का पेज है। स्थितियाँ थीं:

नरम:

आउटपुट
MM index.html
?? docs/signup-hint.md

मिश्रित:

आउटपुट
 M index.html
?? docs/signup-hint.md

कठिन:

आउटपुट
?? docs/signup-hint.md

टर्मिनल रीसेट ने कोई GitTree स्नैपशॉट नहीं बनाया। git reflog अभी भी C को सूचीबद्ध करता है, लेकिन OMAR इसमें कहीं नहीं है। एक अलग बैकअप लैब में, एक कमिट पर एक हार्ड रीसेट जिसमें ट्रैक किए गए docs/signup-hint.md ने उस पथ पर एक अनट्रैक फ़ाइल को ओवरराइट कर दिया है।

नतीजा

Where you end: सभी तीन शाखाएँ एम. सॉफ्ट पर हैं: सूचकांक में सारा है और फ़ाइल में OMAR है। मिश्रित: सूचकांक में M है और फ़ाइल में OMAR है। हार्ड: दोनों ने M को पकड़ रखा है। ट्रैक न किया गया नोट प्रत्येक कॉपी में बना हुआ है और rescue/before-reset अभी भी C पर है।

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

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

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

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

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

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

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

    कौन सा रीसेट मोड केवल शाखा को स्थानांतरित करता है और इंडेक्स और आपकी फ़ाइलों को वैसे ही छोड़ देता है जैसे वे थे?

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

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

    इनमें से कौन सा हार्ड रीसेट के बारे में सत्य है?

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

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

    मिश्रित प्रतिलिपि में आप private/reset को एम पर रीसेट करते हैं। git status --short क्या प्रिंट करता है?

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

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

    इनपुट बदलें: आपने संपादन और नोट को Git के बाहर सहेजा नहीं है, और आप टर्मिनल में हार्ड रीसेट चलाते हैं। आप संपादन कहाँ से वापस पा सकते हैं?

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

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

    रीसेट के बाद, git status --short प्रिंट MM index.html होता है। कौन सा मोड चला, और सूचकांक क्या रखता है?

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

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

    इसकी डिस्पोजेबल कॉपी में हार्ड रीसेट के बाद, कौन से रीडबैक दिखाते हैं कि इसने वही किया जो पाठ में कहा गया है?

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

6 में से 0 सही

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

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

अभ्यास करें

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

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

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

पुनर्कथन

  • मुलायम ही शाखा को हिलाता है।
  • मिश्रित भी सूचकांक को रीसेट करता है।
  • हार्ड आपकी फ़ाइलों को दोबारा भी लिखता है।

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

रीसेट - إعادة تعيين; नरम - मुलायम; मिश्रित - مختلطة; कठिन - كاملة; बचाव शाखा - فرع حفظ.

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

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

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