पाठ 9 · रोजमर्रा का काम
एक फीचर शाखा बनाएं और केवल डिस्पोजेबल रेफरी को रिटायर करें
मुख्य को अपरिवर्तित रखते हुए फीचर/मूल्य-कार्ड पर वर्कफ़्लो कार्ड जोड़ें। एक थ्रोअवे शाखा का नाम बदलें और इसे तभी हटाएं जब यह साबित हो जाए कि इसकी प्रतिबद्धता पहले से ही मुख्य से पहुंच योग्य है।
- स्तर: शुरुआती
- 10 मिनट पढ़ा
- 3 मिनट का वीडियो
- अद्यतन किया गया
- इस पाठ से पहले: बिना सिर हिलाए इतिहास पढ़ें
प्रगति इस ब्राउज़र में सहेजी गई.
चलाने से YouTube से वीडियो लोड होता है (गोपनीयता-उन्नत मोड)।
आप क्या सीखेंगे
- शाखा का नाम बनाने को उसकी जाँच करने से अलग करें।
- मुख्य को स्थानांतरित किए बिना किसी सुविधा पर वर्कफ़्लो अनुभाग प्रतिबद्ध करें।
- मर्ज का आविष्कार किए बिना डिस्पोजेबल स्थानीय रेफरी का नाम बदलें/हटाएं।
- मूल सुरक्षित-डिलीट चेक को GitTree के संरक्षित विलोपन से अलग करें।
शुरू करने से पहले
आप वहीं से शुरू करें जहां पाठ 8 समाप्त हुआ था: मुख्य में पांच प्रलेखित कमिट, एक क्लीन वर्क ट्री और इंडेक्स, सीएसएस-02-वर्किंग कमिटेड और कोई रिमोट नहीं है। जेनरेटेड डिस्ट को नजरअंदाज रखें। वीडियो को Git 2.52.0 और GitTree 2.0 के साथ Ubuntu 24.04 पर रिकॉर्ड किया गया था: शाखाएं बनाई गईं, उनका नाम बदला गया, हटाया गया और ऐप में स्विच किया गया, फ़ाइल को सहेजा गया और वहां प्रतिबद्ध किया गया, और ऐप ने जो बनाया उसके विरुद्ध टर्मिनल चेक चला, या केवल-निर्मित और नामांकित राज्यों के लिए अलग-अलग प्रतियों के विरुद्ध चला गया। macOS या Windows पर कुछ भी नहीं चलाया गया, और Ubuntu ही एकमात्र Linux सिस्टम रिकॉर्ड किया गया है। GitTree का निरीक्षण न्यूनतम Git 2.39.0 है। एक बार जब आप साइन इन हो जाते हैं, तो स्थानीय शाखा निःशुल्क योजना पर होती है और इसके लिए किसी होस्ट या प्रो/ट्रायल की आवश्यकता नहीं होती है।
नीचे दिए गए सभी शाखा उत्परिवर्तन written steps for the isolated GitTree Features demo हैं, इस वेबसाइट चेकआउट को शाखा देने के निर्देश कभी नहीं दिए गए हैं। लेखक की स्रोत शाखा अपरिवर्तित रहती है।
संकल्पना
एक शाखा एक कमिट के लिए एक चल स्थानीय नाम है, प्रत्येक फ़ाइल की एक प्रति नहीं। केवल नाम बनाने से सिर नहीं हिलता। स्विचिंग HEAD को उस शाखा से जोड़ता है और आवश्यकतानुसार इंडेक्स/वर्किंग फ़ाइलों को अपडेट करता है। बाद की प्रतिबद्धता केवल चेक-आउट शाखा को आगे बढ़ाती है। मूल शाखा शब्दार्थ, स्विच शब्दार्थ।
प्रारंभ में, मुख्य नाम H5. H5 पर बनाई गई एक डिस्पोजेबल शाखा उसी सर्कल में दूसरा लेबल जोड़ती है, कोई अन्य कमिट नहीं। नाम बदलने से लेबल बदल जाता है. पहले से पहुंच योग्य लेबल को हटाने से मुख्य का इतिहास नहीं हटता। बाद में फीचर/मूल्य निर्धारण-कार्ड H5 से शुरू होते हैं और F1 तक आगे बढ़ते हैं; मुख्य H5 रहता है. कोई रिमोट बनाया या हटाया नहीं गया है.
मूल git branch -d विलय की जाँच करता है (सामान्यतः अपस्ट्रीम/वर्तमान हेड के सापेक्ष)। GitTree's inspected local deletion adapter uses -D after protecting the selected tip in its trash/journal. It is not the same refusal rule. यह कभी न मानें कि ऐप किसी अनमर्ज किए गए विलोपन को सिर्फ इसलिए रोक देगा क्योंकि नेटिव -डी ने ऐसा किया था। इस पाठ्यक्रम में हम साबित करते हैं कि डिस्पोजेबल टिप मुख्य before either path का पूर्वज है, सुविधा को बनाए रखें, और कभी भी रिमोट-डिलीट कार्रवाई का चयन न करें।
पूर्ण सुविधा फ़ाइल
सुविधा पर केवल Index.html परिवर्तन होता है। इसे पूर्ण HTML-03 से बदलें; मौजूदा शैली/स्क्रिप्ट/इतिहास बिल्कुल वैसा ही रहेगा जैसा पाठ 8 ने उन्हें छोड़ा था। विषय शाखा का नाम शाब्दिक है, लेकिन अनुभाग में कोई मूल्य या प्रचार नहीं है।
<!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.</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.</p></footer>
<script type="module" src="site.js"></script>
</body>
</html>GitTree में
- पुष्टि करें कि मूल इतिहास-दस्तावेज़ प्रतिबद्धता में मुख्य, साफ़ है। Command Palette… खोलें (कमांड/Ctrl+Shift+P) → Create Branch… (
repo.branch.create)। Create a branch at HEAD की अपेक्षा करें. - Branch name =
practice/rename-meसेट करें। Uncheck Check out the new branch. Create Branch चुनें. नए रेफरी की अपेक्षा उसी कमिट पर करें जबकि मुख्य चेक आउट हो। - स्थानीय शाखा सूची में, Practice/rename-me → Rename practice/rename-me… पर राइट-क्लिक करें। Rename practice/rename-me में, शाखा का नाम पहले
practice/renamed, फिर Rename पर सेट करें। अपेक्षा करें कि पुराना नाम अनुपस्थित हो, नया नाम उसी सिरे पर हो; कोई फ़ाइल परिवर्तन नहीं. - टर्मिनल में, नीचे पूर्वज स्थिति सिद्ध करें। फिर अभ्यास/नामांकित → Delete practice/renamed… पर राइट-क्लिक करें। समीक्षा करें Delete practice/renamed in gittree-features?, सुनिश्चित करें कि केवल स्थानीय रेफरी लक्षित है, फिर Delete practice/renamed। यदि नाम/टिप भिन्न हो तो रद्द करें। स्रोत पूर्व-उत्परिवर्तन ट्रैश/जर्नल प्रविष्टि का वादा करता है, दूरस्थ पुनर्स्थापना का नहीं; उस रनटाइम-सिद्ध को कॉल करने से पहले वास्तविक ऑपरेशन/सबूत को कैप्चर करें।
- पैलेट शाखा बनाएं... फिर से, नाम
feature/pricing-cards, चेक छोड़ें Check out the new branch, फिर शाखा बनाएं। उम्मीद है कि यह सुविधा उसी H5 पर चेक आउट हो जाएगी। यह चेकबॉक्स चरण 2 के विपरीत, ऑपरेशन को and स्विच बनाता है। - फ़ाइलें दिखाएँ (कमांड/Ctrl+Shift+E), फोकस Index.html और Enter। इसके कार्यशील टेक्स्ट को पूर्ण HTML-03 और Save (कमांड/Ctrl+S) से बदलें। जनित जिले का मंचन न करें।
- ग्राफ़ → पैलेट Show Working Changes पर वापस जाएँ। Index.html की समीक्षा करें और Stage File का उपयोग करें। सारांश
feat: add workflow cards; सामान्य विकल्प बंद; Commit Changes to 1 File / Command/Ctrl+एक बार Enter करें। - स्थानीय शाखा सूची में main → Checkout main पर राइट-क्लिक करें। वर्कफ़्लो अनुभाग और साफ़ काम के बिना दस्तावेज़-युग के नायक की अपेक्षा करें। वापस लौटने के लिए सुविधा/मूल्य-कार्ड पर राइट-क्लिक करें → Checkout feature/pricing-cards; इसका अनुभाग पुनः प्रकट होता है क्योंकि शाखा का प्रतिबद्ध वृक्ष भिन्न होता है।
- यदि कोई डर्टी-स्विच संवाद प्रकट होता है, तो Cancel और अपने वास्तविक कार्य का निरीक्षण करें। विहित स्विच बिंदु साफ़ हैं; फ़िल्म से मेल खाने के लिए त्यागने का विकल्प न चुनें।
- End on feature/pricing-cards. Confirm main has five commits and the feature has one additional commit. Do not merge it yet or delete it to obtain a single-line graph.
नामित रेफरी पर संदर्भ क्रियाएं तर्क के बिना सामान्य पैलेट कमांड नहीं हैं। शीर्ष-स्तरीय पैलेट क्रिएट ब्रांच… एक अलग करंट-हेड क्रिया है। वास्तविक मेनू लेबल का उपयोग करें; डिफ़ॉल्ट डायरेक्ट ब्रांच-क्रिएट/स्विच शॉर्टकट का आविष्कार नहीं किया गया है।
टर्मिनल में
स्वच्छ मुख्य इनपुट पर मूल समकक्ष; ऐप की सफलता के बाद म्यूटेशन दोबारा न करें:
git branch practice/rename-me
git symbolic-ref --short HEAD
git branch -m practice/rename-me practice/renamed
git merge-base --is-ancestor practice/renamed mainशाखा/नाम बदलें/पूर्वजों के चेक चुपचाप सफल रहे; प्रतीकात्मक-रेफ प्रिंट:
mainपूर्वज क्वेरी से बाहर निकलें 0 साबित करता है कि यह डिस्पोजेबल टिप पहले से ही उपलब्ध है। एक शून्येतर परिणाम का अर्थ है रुकना; बल विलोपन को प्रतिस्थापित न करें.
git branch --delete --quiet practice/renamed
git switch --quiet --create feature/pricing-cardsदोनों चुपचाप सफल हुए। संपूर्ण HTML-03 सहेजने के बाद:
git add -- index.html
git commit --quiet -m "feat: add workflow cards"
git switch --quiet mainसभी चुपचाप इस स्थिरता में सफल रहे। यह मुख्य स्विच फीचर रेफरी को स्थानांतरित नहीं करता है।
जानबूझकर मूल इनकार, जबकि मुख्य की जाँच की गई है:
git -c advice.forceDeleteBranch=false branch -d feature/pricing-cardsप्रेक्षित stderr, निकास 1:
error: the branch 'feature/pricing-cards' is not fully mergedसुविधा बनी हुई है. Do not attempt this as an app safety test: इसकी संरक्षित विलोपन नीति भिन्न है। पाठ को "ठीक" करने के लिए -d को -D से न बदलें।
लौटें और निरीक्षण करें:
git switch --quiet feature/pricing-cards
git symbolic-ref --short HEAD
git branch --format='%(refname:short)'
git rev-list --count main..feature/pricing-cards
git log --format=%s main..feature/pricing-cards
git diff --name-only main feature/pricing-cards
git rev-list --count main
git status --shortसाइलेंट स्विच के बाद देखे गए आउटपुट, क्रम में:
feature/pricing-cards
feature/pricing-cards
main
1
feat: add workflow cards
index.html
5अंतिम संक्षिप्त स्थिति निकास 0 के साथ खाली है। दोनों डिस्पोजेबल नाम अनुपस्थित हैं। कोई दूरस्थ आउटपुट मौजूद नहीं है क्योंकि कोई भी कॉन्फ़िगर नहीं किया गया था।
नतीजा
इस पाठ के अंत में: फ़ीचर/मूल्य-कार्डों की जाँच की गई और साफ़ किया गया, मुख्य फ़ीचर से परे एक फ़ीचर प्रतिबद्ध; मुख्य पाँच-प्रतिबद्ध दस्तावेज़ चेकपॉइंट पर रहता है। वर्कफ़्लो कार्ड में कोई कीमत नहीं होती. डिस्पोजेबल शाखाएँ अनुपस्थित. कोई मर्ज, रिमोट, प्रकाशित शाखा या प्रदाता कार्रवाई नहीं।
सामान्य गलतियाँ
- शाखा लेबलों को कमिट के रूप में गिनना।
- यह मानते हुए कि केवल सृजन के लिए HEAD को स्थानांतरित किया गया है।
- डेमो रेफरी के बजाय सक्रिय स्रोत-वेब शाखा का नाम बदलना।
- विश्वास है कि ऐप डिलीट में नेटिव -डी का गार्ड है।
- ग्राफ़ को सरल बनाने के लिए उपयोगी सुविधा को हटाया जा रहा है।
अगर कुछ गलत होता है
अमान्य/डुप्लिकेट नामों को दर्ज किए गए मान के साथ संवाद खुला रखना चाहिए। त्रुटि पढ़ें; असंबंधित संदर्भों का नाम बदलकर केवल मामले की अस्पष्टता का समाधान न करें। यदि कार्य किसी स्विच को अवरुद्ध करता है, तो उसे रद्द करें और संरक्षित करें; बाद में स्टैश/कमिट पाठ जानबूझकर विकल्प प्रदान करते हैं। किसी अन्य वर्कट्री में चेक आउट की गई शाखा को आसानी से हटाया नहीं जा सकता।
एक मूल असंबद्ध इनकार सुरक्षात्मक है। ऐप का प्री-म्यूटेशन स्नैपशॉट एक अलग तंत्र है, रीचैबिलिटी या टिप पहचान को नजरअंदाज करने की अनुमति नहीं है। एक असफल उत्परिवर्तन को केवल इसलिए सफलता के रूप में प्रस्तुत नहीं किया जाना चाहिए क्योंकि फ़िल्टर किए गए दृश्य से एक लेबल अस्थायी रूप से गायब हो गया है।
अपनी समझ की जाँच करें
प्रत्येक प्रश्न का उत्तर दें, फिर क्यों पढ़ें। "आवश्यक" चिह्नित प्रश्न पाठ को पूरा करने में गिने जाते हैं।
6 में से 0 सही
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें।
इस ब्राउज़र में चेक किया गया.
अभ्यास करें
मुख्य को अपरिवर्तित दिखाएं और फीचर को आगे बढ़ाएं। परिवर्तित इनपुट: यदि नई शाखा की जाँच करें off है, तो अनुमान लगाएं कि स्पष्ट स्विच होने तक HEAD मुख्य बना रहेगा। एक अलग डिस्पोजेबल रीप्ले में परीक्षण करें, तैयार चेकपॉइंट को बदलकर नहीं। बताएं कि मूल इनकार ऐप इनकार को साबित क्यों नहीं करता है।
आपकी अपनी पुष्टि: साइट आपका कंप्यूटर नहीं देख सकती।
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें और व्यावहारिक अभ्यास की पुष्टि करें।
पुनर्कथन
- शाखा के नाम और कमिट अलग-अलग वस्तुएं हैं।
- क्रिएट-ओनली और क्रिएट-एंड-स्विच के अलग-अलग HEAD प्रभाव होते हैं।
- विलोपन का दायरा और पहुंच योग्यता साबित करें; संरक्षित ऐप विलोपन और नेटिव -डी अलग-अलग हैं।
संबंधित
शब्दावली शब्द प्रस्तुत किये गये
शाखा - فرع; स्विच - تبديل; रेफरी - مرجع; पहुंच योग्य - قابل للوصول; अपस्ट्रीम - فرع متتبَّع; काम करने वाला पेड़ - مجلد العمل.
वीडियो प्रतिलेख
वीडियो का वर्णन, संकेत दर संकेत।
प्रतिलिपि दिखाएँ
- एक फीचर शाखा बनाएं मुख्य को संरक्षित करते हुए.
- एक नई शाखा का नाम होता है कोई प्रतिबद्धता न बनाएं.
- डिस्पोजेबल बनाएं मुख्य को छोड़े बिना नाम.
- पुष्टि करें कि केवल-निर्माण करें अपनी शाखा नहीं बदली.
- डिस्पोजेबल रेफरी का नाम बदलें, नहीं वेबसाइट की स्रोत शाखा।
- वर्तमान डिस्पोजेबल टिप की जाँच करें मुख्य से पहले से ही पहुंच योग्य है।
- केवल पहले से जांचे गए को हटाएं डिस्पोजेबल संदर्भ.
- GitTree का संरक्षित विलोपन है देशी सुरक्षित-डिलीट इनकार नहीं।
- इस बार, बनाएं सुविधा और इसे जांचें।
- वर्कफ़्लो अनुभाग सहेजें बिना कीमतों या प्रमोशन के।
- फ़ीचर की समीक्षा करें कमिट करने से पहले फ़ाइल बदल दी।
- फीचर पर प्रतिबद्ध हों, मुख्य पर नहीं।
- केवल चेक-आउट शाखा इस प्रतिबद्धता के साथ आगे बढ़ता है।
- स्विचिंग मुख्य प्रतिबद्ध वृक्ष का चयन करता है।
- मूल सुरक्षित विलोपन अस्वीकार करता है असंबद्ध सुविधा.
- वह इनकार GitTree साबित नहीं होता वही विलोपन से इंकार कर देगा.
- फीचर पर वापस लौटें रिकॉर्ड की गई फ़ाइल सामग्री.
- एक फीचर कमिट सत्यापित करें और केवल सूचकांक बिंदु एच टी एम एल बदला गया।
- मेन के पास अभी भी पाँच कमिट हैं और सुविधा साफ़ है.
- चेकआउट बंद के साथ, नया नाम मौजूद है लेकिन HEAD मुख्य पर रहता है।
- अप्रत्याशित गंदा स्विच रद्द करें और पहले काम का निरीक्षण करें.
- एक संरक्षित स्थानीय टिप नहीं है दूरस्थ बहाली का वादा.
- उपयोगी सुविधा रखें और सत्यापित करें डिस्पोजेबल नाम चले गए हैं।
- अगला पाठ परिचय देता है रिमोट; यहां किसी की जरूरत नहीं थी.