पाठ 16 · रोजमर्रा का काम
स्थानीय प्रतिबद्ध संदेश या सामग्री को ठीक करें
एक निजी हीरो कमिट में पुरानी टिप को बरकरार रखते हुए टाइपो और संदेश को ठीक करें। जानें कि संशोधन पहचान को क्यों बदल देता है और क्यों असंबद्ध चरणबद्ध सामग्री को बाहर रहना चाहिए।
- स्तर: इंटरमीडिएट
- 9 मिनट पढ़ा
- 5 मिनट का वीडियो
- अद्यतन किया गया
- इस पाठ से पहले: फ़ाइलों पर ध्यान न दें और अनट्रैक किए गए कार्य को सुरक्षित रूप से साफ़ करें
प्रगति इस ब्राउज़र में सहेजी गई.
चलाने से YouTube से वीडियो लोड होता है (गोपनीयता-उन्नत मोड)।
आप क्या सीखेंगे
- प्रतिस्थापित किये जा रहे कमिट का निरीक्षण करें।
- संशोधित सामग्री को केवल-संदेश संपादन से अलग करें।
- पुरानी प्रतिबद्ध टिप को सुरक्षित रखें.
- नई पहचान और अपरिवर्तित अभिभावक सत्यापित करें.
शुरू करने से पहले
शाखा परिदृश्य/संशोधन पर पाठ 15 के परिणाम की एक अलग प्रति से प्रारंभ करें। पूरा HEADING_DRAFT पेज फिक्स के रूप में प्रतिबद्ध है: हेडिंग; कार्य वृक्ष साफ़ है और प्रतिबद्धता अप्रकाशित है। सटीक ड्राफ्ट टिप वाले नामों का बचाव/संशोधन करने से पहले।
वीडियो को Git 2.52.0 और GitTree 2.0 के साथ Ubuntu 24.04 पर रिकॉर्ड किया गया था: सुधार, संशोधन और केवल-संदेश संपादन ऐप में किया गया था; ड्राफ्ट, इसकी बचाव शाखा और चेक टर्मिनल में चले। macOS या Windows पर कुछ भी नहीं चलाया गया, और Ubuntu ही एकमात्र Linux सिस्टम रिकॉर्ड किया गया है। GitTree का स्रोत Git फ़्लोर 2.39.0 है।
GitTree आपसे साइन इन करने के लिए कहता है; फिर नि:शुल्क योजना यहां हर चरण को कवर करती है। किसी प्रदाता खाते, प्रो/ट्रायल, एपीआई क्रेडेंशियल या इंटरनेट सेवा की आवश्यकता नहीं है। स्थानीय मूल उत्पत्ति GitLab या सीआई नहीं है। सभी पहचान example.com का उपयोग करती हैं; इस पाठ को कभी भी स्रोत चेकआउट के अंदर न चलाएँ।
समान इनपुट पर या तो GitTree या मूल पथ के माध्यम से उत्परिवर्तन करें, दोनों लगातार नहीं। केवल पढ़ने योग्य सत्यापन का पालन किया जा सकता है। टर्मिनल कार्य के रूप में वर्णित किसी भी तैयारी को मूल तैयारी का लेबल दिया जाता है, कभी भी एक आविष्कृत ऐप सुविधा नहीं।
अवधारणा और राज्य प्रभाव
संशोधन वर्तमान सूचकांक से अंतिम प्रतिबद्धता के लिए एक प्रतिस्थापन लिखता है। यह पुराने कमिट में एक छोटा सुधार रिकॉर्ड नहीं जोड़ रहा है। सामग्री और संदेश एक साथ बदल सकते हैं, जबकि पुरानी वस्तु बचाव रेफरी के माध्यम से पहुंच योग्य रह सकती है।
केवल-संदेश संपादन में चुपचाप असंबद्ध चरणबद्ध परिवर्तन शामिल नहीं होने चाहिए। ऐप का एडिट कमिट मैसेज... रूट चयनित कमिट/वंशजों को फिर से लिखता है; यह यहां प्रदर्शित कंपोजर अमेंड प्रीवियस कमिट पथ से भिन्न है।
यहां बदला हुआ विषय एक अलग वस्तु पहचान की गारंटी देता है। समान माता-पिता का मतलब समान प्रतिबद्धता नहीं है। किसी प्रकाशित प्रतिबद्धता के हानिरहित संपादन के रूप में संशोधन न सिखाएं, जिस पर पहले से ही आधारित अन्य कार्य हैं।
नई सूचकांक सामग्री प्रतिस्थापन प्रतिबद्धता बन जाती है; परिदृश्य शाखा/HEAD पुराने C→C′ को स्थानांतरित करता है, मूल M रहता है, कार्य/सूचकांक साफ़ रहता है। बचाव रहता है सी; मूल मुख्य/सर्वर अपरिवर्तित.
सटीक प्रोजेक्ट स्थिति तैयार करें
स्वच्छ प्रोजेक्ट की एक अलग सामान्य प्रति से शुरुआत करें क्योंकि पाठ 15 इसे छोड़ गया है। मूल गिट्री-विशेषताएं संरक्षित रहती हैं; इस परिदृश्य को मूल या स्रोत चेकआउट में न चलाएं। (पाठ्यक्रम की एक पूर्व योजना ने इस पाठ को बाद के मर्ज पाठ के परिणाम से शुरू किया था; वह पाठ अभी तक रिकॉर्ड नहीं किया गया है, इसलिए वीडियो पाठ 15 के प्रोजेक्ट और समान चरणों का उपयोग करता है।) नीचे दिए गए दो पृष्ठ मुख्य भाग प्रोजेक्ट के इंडेक्स.एचटीएमएल हैं, केवल हीरो शीर्षक बदल गया है। रेपो-लोकल डेमो साइनिंग बंद है और GitTree डेमो <demo@example.com> पहचान है।
पूर्ण फ़ाइल इनपुट
केवल नीचे नामित चरण पर ही सहेजें। ये अंतिम नई लाइन के साथ पूर्ण UTF-8/LF निकाय हैं; कभी भी मार्कडाउन बाड़ चिपकाएँ नहीं। अपरिवर्तित चलने योग्य फ़ाइलें नामित इनपुट प्राप्त करती हैं। अलग-अलग संस्करणों में मूल को अधिलेखित नहीं किया जाना चाहिए।
Index.html - HEADING_DRAFT
<!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">
<section class="hero" aria-labelledby="hero-title">
<p class="eyebrow">GitTree Learn demo project</p>
<h1 id="hero-title">See your work cleary.</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>
</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 - HEADING_FIXED
<!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">
<section class="hero" aria-labelledby="hero-title">
<p class="eyebrow">GitTree Learn demo project</p>
<h1 id="hero-title">See your work clearly, one change at a time.</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>
</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>GitTree में
पैलेट: Command+Shift+P (Ubuntu पर Ctrl+Shift+P); सटीक नामित कमांड टाइप करें और उसका चयन करें। नामांकित-रेफ क्रियाएँ उस पंक्ति के संदर्भ मेनू का उपयोग करती हैं, तर्क-मुक्त पैलेट शॉर्टकट का नहीं।
- निजी मसौदा और बचाव शाखा नीचे दिए अनुसार तैयार करें; पुष्टि करें कि किसी रिमोट में ड्राफ्ट नहीं है।
- फ़ाइलें दिखाएँ → Index.html; अन्य सभी पृष्ठ सामग्री को संरक्षित करते हुए, पूर्ण HEADING_FIXED सहेजें।
- कार्य परिवर्तन दिखाएँ; केवल इच्छित शीर्षक प्रतिस्थापन और स्टेज फ़ाइल Index.html का निरीक्षण करें।
- कंपोज़र चेक में Amend Previous Commit; प्रतिस्थापित की जा रही वास्तविक अंतिम प्रतिबद्धता का निरीक्षण करें, पुराने ग्राफ़ चयन का नहीं। (इस बिल्ड में सारांश फ़ील्ड पुराने संदेश से नहीं भरा गया है; आप अगले चरण में नया लिखते हैं।)
- सारांश निर्धारण सेट करें: नायक शीर्षक स्पष्ट करें। पुश/साइनऑफ़/हुक बाईपास और अन्य वैकल्पिक व्यवहार बंद रखें; मंचित सामग्री की समीक्षा करें.
- कंपोज़र की ओर से Command+Enter (Ubuntu पर Ctrl+Enter) के साथ एक बार सबमिट करें; वास्तविक समापन की प्रतीक्षा करें. दूसरी सामान्य प्रतिबद्धता सबमिट न करें. पिछली प्रतिबद्धता में संशोधन का विकल्प बाद में अपने आप बंद हो जाता है।
- सत्यापित करें कि वास्तविक C′ बचाव C से भिन्न है, समान मूल, पूर्ण HEADING_FIXED और साफ़ कार्य। बाद के सामान्य कार्य से पहले पिछली प्रतिबद्धता में संशोधन को बंद करें।
- केवल-संदेश विकल्प, एक अलग प्रतिलिपि में जिसमें अभी भी ड्राफ्ट है: ड्राफ्ट कमिट पर राइट-क्लिक करें → Edit History → Edit Commit Message…। संवाद का शीर्षक कमिट की संक्षिप्त आईडी का "संदेश संपादित करें" है और कहा गया है कि कमिट और उसके ऊपर के प्रत्येक कमिट को नई आईडी मिलती हैं। Message को बिल्कुल सही किए गए विषय से बदलें और Save Message चुनें। वृक्ष और जनक वही रहते हैं; केवल आईडी और संदेश बदलता है। संशोधित परिणाम पर इसे दोबारा न दोहराएं।
प्रत्येक सामान्य प्रतिबद्धता के लिए: सारांश बताया गया विषय है; विवरण रिक्त; पिछली प्रतिबद्धता में संशोधन करें, हुक छोड़ें, हस्ताक्षरित-ऑफ-बाय, अलग लेखक जोड़ें, प्रतिबद्धता के बाद पुश करें और खाली प्रतिबद्धता को अनुमति दें; कोई सह-लेखक नहीं. केवल नामित फ़ाइलों को चरणबद्ध करें, फिर एक बार एन फ़ाइलों में परिवर्तन करें (एक के लिए फ़ाइल), या विकल्प के रूप में कमांड+एंटर करें। वास्तविक परिणाम की प्रतीक्षा करें. एक पाठ जो स्पष्ट रूप से संशोधन करता है वह केवल उस बताए गए विकल्प को बदलता है।
टर्मिनल में
पाठ 15 के परिणाम की अलग प्रति में:
git switch --create scenario/amendHEADING_DRAFT को Index.html पर रखें (वीडियो ने पाठ की फ़ाइल को ~/डाउनलोड में सहेजा है और cp ~/Downloads/HEADING_DRAFT.html index.html का उपयोग करता है), फिर:
git add -- index.html
git commit --quiet -m "fix: hedaing"
git branch rescue/before-amendपूर्ण HEADING_FIXED सहेजें, फिर:
git add -- index.html
git commit --quiet --amend --message "fix: clarify the hero heading"
git log -1 --format=%s
git rev-parse HEAD rescue/before-amend HEAD^ rescue/before-amend^
git status --shortअवलोकन किया गया विषय:
fix: clarify the hero headingपहले दो SHA आउटपुट भिन्न हैं; अंतिम दो सहमत हैं. पूर्ण रिकॉर्ड की गई फ़ाइल HEADING_FIXED के बराबर है, साफ़ काम करें। एक अलग क्लीन ड्राफ्ट कॉपी में मूल संदेश-केवल विकल्प git कमिट --amend --only -m "फिक्स: हीरो हेडिंग को स्पष्ट करें" का उपयोग करता है; --केवल उस संदेश-मात्र कार्य के लिए असंबंधित चरणबद्ध पथों को शामिल करने से बचा जाता है। ऐप का ग्राफ़ रीवर्ड ऑपरेशन एक विशिष्ट स्रोत-समर्थित मार्ग है; इसे स्थापित बिल्ड में सत्यापित करें।
नतीजा
Where you end: रिप्लेसमेंट कमिट में फिक्स कहा गया है: हीरो हेडिंग को स्पष्ट करें और इसमें पूरा HEADING_FIXED शामिल है; पैरेंट पुराने कमिट के पैरेंट से मेल खाता है, आईडी भिन्न है; पुराना टिप बचाया गया; स्वच्छ, अप्रकाशित.
सामान्य गलतियाँ
- असंबंधित चरणबद्ध फ़ाइलों के साथ संशोधन।
- वैकल्पिक फलक को मूल चेकपॉइंट के रूप में मानना।
- ऐप की सफलता के बाद पूर्ण उत्परिवर्तन को दोहराया जा रहा है।
अगर कुछ गलत होता है
बचाव शाखा पुराने प्रतिबद्ध मसौदे का नाम देती है। पुनर्स्थापन चुनने से पहले तुलना करें; यह मनमाने ढंग से मंचित न किए गए संपादनों को संरक्षित नहीं करता है। यदि हुक/हस्ताक्षर विफल हो जाते हैं, तो वास्तविक आउटपुट का निरीक्षण करें, पाठ से मिलान करने के लिए उन्हें बायपास न करें।
अपनी समझ की जाँच करें
प्रत्येक प्रश्न का उत्तर दें, फिर क्यों पढ़ें। "आवश्यक" चिह्नित प्रश्न पाठ को पूरा करने में गिने जाते हैं।
6 में से 0 सही
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें।
इस ब्राउज़र में चेक किया गया.
अभ्यास करें
समान मूल, परिवर्तित ऑब्जेक्ट आईडी, सटीक संशोधित शीर्षक/संदेश और साफ़ स्थिति साबित करें। भविष्यवाणी करें कि एक अतिरिक्त चरणबद्ध फ़ाइल कैसे बदलती है, संगीतकार एक अलग रीप्ले में सामग्री में संशोधन करता है।
आपकी अपनी पुष्टि: साइट आपका कंप्यूटर नहीं देख सकती।
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें और व्यावहारिक अभ्यास की पुष्टि करें।
पुनर्कथन
- संशोधन एक प्रतिस्थापन बनाता है.
- सूचकांक संशोधित सामग्री को नियंत्रित करता है।
- केवल संदेश एक अलग दायरा है.
संबंधित
शब्दावली शब्द प्रस्तुत किये गये
संशोधन - تعديل الإيداع الأخير; पुनर्शब्द - إعادة صياغة; रिप्लेसमेंट कमिट - إيداع بديل.
वीडियो प्रतिलेख
वीडियो का वर्णन, संकेत दर संकेत।
प्रतिलिपि दिखाएँ
- सटीक चौकी से प्रारंभ करें.
- शाखा का नाम, सूचकांक और कार्यशील संस्करण।
- केवल पृथक पाठ्यक्रम प्रति ही तैयार करें।
- निजी ड्राफ्ट को सुरक्षित रखें इसे बदलने से पहले.
- संपूर्ण इच्छित सुधार सहेजें.
- केवल संदेश ही नहीं, बल्कि सूचकांक की भी समीक्षा करें।
- संशोधन वास्तविक अंतिम प्रतिबद्धता को प्रतिस्थापित करता है।
- संशोधित विषय को स्पष्ट रूप से लिखें।
- प्रतिस्थापन केवल एक बार जमा करें.
- एक ही माता-पिता का मतलब एक ही पहचान नहीं है.
- केवल-संदेश संपादन का एक अलग दायरा है।
- संशोधन क्या बनाता है?
- Git ऑब्जेक्ट अपरिवर्तनीय हैं; प्रतिस्थापन को एक नई आईडी मिलती है।
- किस चीज़ की समीक्षा की जानी चाहिए?
- संगीतकार संशोधन सूचकांक का उपयोग करता है और अंतिम प्रतिबद्ध संदर्भ।
- संशोधित C' के जनक?
- प्रतिस्थापन पर कब्जा है वही पैतृक स्थिति.
- एक असंबंधित चरण जोड़ें संशोधन से पहले फ़ाइल: सामग्री?
- वर्तमान सूचकांक परिभाषित करता है प्रतिस्थापन वृक्ष.
- ड्राफ्ट प्रकाशित हुआ: निजी के रूप में आगे बढ़ें?
- प्रकाशित पहचान का उपयोग अन्य लोगों द्वारा किया जा सकता है।
- कौन सा सबूत चाहिए?
- दोनों प्रतिस्थापन सत्यापित करें पहचान और इच्छित सामग्री.
- वास्तविक परिणाम सत्यापित करें, सिर्फ एक संदेश नहीं.
- कार्य करने से पहले बदले हुए इनपुट का अनुमान लगाएं।
- पुनर्प्राप्ति से पहले उपयोगी कार्य सुरक्षित रखें.
- जारी रखने से पहले चेकपॉइंट साबित करें।
- सत्यापित परिणाम रखें अगले चरण के लिए.