पाठ 8 · रोजमर्रा का काम
बिना सिर हिलाए इतिहास पढ़ें
बचे हुए त्रिज्या संपादन को रिकॉर्ड करें, वास्तविक इतिहास का दस्तावेजीकरण करें, और फ़ाइल-ट्री अंतर के साथ संशोधन सेट की तुलना करें। ग्राफ़ पंक्ति का चयन करना निरीक्षण है, शाखा स्विच नहीं।
- स्तर: शुरुआती
- 9 मिनट पढ़ा
- 4 मिनट का वीडियो
- अद्यतन किया गया
- इस पाठ से पहले: इच्छित स्नैपशॉट को स्टेज करें और अपनी पहली प्रतिबद्धता बनाएं, चयनित हंक को प्रतिबद्ध करें, संपूर्ण फ़ाइल को नहीं
प्रगति इस ब्राउज़र में सहेजी गई.
चलाने से YouTube से वीडियो लोड होता है (गोपनीयता-उन्नत मोड)।
आप क्या सीखेंगे
- HEAD, एक चयनित कमिट, लेखक और कमिटर में अंतर करें।
- माता-पिता और प्रथम-जनक पूर्वजों का अनुसरण करें।
- दो-बिंदु/तीन-बिंदु लॉग सेट को अलग-अलग समापन बिंदुओं के साथ भ्रमित किए बिना पढ़ें।
- इतिहास को दोबारा लिखे बिना GitTree में दो वास्तविक प्रतिबद्धताओं की तुलना करें।
शुरू करने से पहले
आप वहीं से शुरू करते हैं जहां पाठ 7 समाप्त हुआ था: मुख्य में पाठ 5 से 7 तक तीन कमिट हैं। केवल सीएसएस त्रिज्या संशोधित रहती है: हेड और इंडेक्स में सीएसएस-02-इंडेक्स, कार्यशील फ़ाइल सीएसएस-02-वर्किंग है। कोई रिमोट नहीं. वीडियो को Git 2.52.0 और GitTree 2.0 के साथ Ubuntu 24.04 पर रिकॉर्ड किया गया था: दोनों कमिट, दस्तावेज़, ग्राफ़ निरीक्षण, खोज, जंप टू हेड और तुलना संदर्भ ऐप में संचालित किए गए थे, और टर्मिनल चेक ऐप द्वारा बनाए गए के विरुद्ध चला, इसलिए दिखाए गए कमिट आईडी वे हैं जिनकी तुलना ऐप ने की थी। डायवर्ज्ड-ब्रांच केस एक आरेख है: कोई फीचर शाखा नहीं बनाई गई थी। macOS या Windows पर कुछ भी नहीं चलाया गया, और Ubuntu ही एकमात्र Linux सिस्टम रिकॉर्ड किया गया है। GitTree का स्रोत न्यूनतम Git 2.39.0 है; एक बार जब आप साइन इन हो जाते हैं, तो स्थानीय निरीक्षण और प्रतिबद्धताएं निःशुल्क योजना पर होती हैं।
संकल्पना
एक कमिट एक ट्री, मेटाडेटा और पैरेंट आईडी रिकॉर्ड करता है। एक शाखा एक प्रतिबद्धता का नाम देती है; HEAD आमतौर पर वर्तमान शाखा का नाम देता है। किसी अन्य ग्राफ़ पंक्ति पर क्लिक करने से ऐप की selection बदल जाती है, HEAD नहीं, शाखा या डिस्क फ़ाइलें। लेखक रिकॉर्ड करता है कि काम किसने लिखा है; कमिटर रिकॉर्ड करता है कि इस कमिट को किसने रिकॉर्ड किया है। वे यहाँ भी वही काल्पनिक पहचान हैं।
एक रैखिक श्रृंखला के लिए, HEAD~1 एक प्रथम-मूल किनारे का अनुसरण करता है; HEAD~2 दो का अनुसरण करता है। HEAD^1 पहला जनक है; HEAD^2 का अर्थ है second parent of one commit, न कि "दो कमिट बैक।" एक गैर-विलय प्रतिबद्धता का कोई दूसरा अभिभावक नहीं होता है।
git log A..B का अर्थ है ए से पहुंच योग्य को छोड़कर बी से पहुंच योग्य। git log A...B का अर्थ है पहुंच योग्यता का सममित अंतर। git diff A B एंडपॉइंट पेड़ों की तुलना करता है, जबकि git diff A...B मर्ज-बेस (ए,बी) की तुलना B से करता है। तीन-बिंदु लॉग और तीन-बिंदु अंतर एक ही प्रश्न नहीं पूछते हैं। इस रैखिक इतिहास पर कुछ परिणाम सहमत होते हैं; उस संयोग को अलग-अलग शाखाओं के लिए सामान्यीकृत न करें। संशोधन संकेतन, अंतर शब्दार्थ।
पढ़ने/चयन करने/खोजने से कोई अनुक्रमणिका, कार्यशील बाइट्स या रेफरी नहीं बदलती। इस पाठ की दो स्पष्ट प्रतिबद्धताएँ स्थानीय मुख्य को स्थानांतरित करती हैं: त्रिज्या पहला, दस्तावेज़ीकरण दूसरा। कोई दूरस्थ परिवर्तन नहीं.
संपूर्ण इतिहास दस्तावेज़
पहले मौजूदा त्रिज्या संपादन को प्रतिबद्ध करें जैसा कि नीचे दिखाया गया है। फिर इस पूर्ण UTF-8/LF बॉडी के साथ docs/history.md बनाएं; इसका अंतिम आइटम उस प्रतिबद्धता का वर्णन करता है जिसमें दस्तावेज़ शामिल होगा, न कि कोई आविष्कृत SHA।
# GitTree Features history
The first-parent chain on main, oldest first:
1. feat: add the GitTree Features hero
2. feat: add styling and local project checks
3. feat: refine the hero and card spacing
4. style: finish the card radius change
5. docs: record logs-and-revisions practice
After this document is committed, HEAD names item 5.
HEAD~1 names item 4; HEAD~2 names item 3.
Selecting a graph row does not move HEAD.
These labels are descriptions, not fabricated commit SHAs.
All identities in this project are fictional.इस पाँच-प्रतिबद्ध श्रृंखला में वैकल्पिक अभ्यास नोटबुक या अतिरिक्त क्लीन-अप प्रतिबद्धताएँ न जोड़ें।
GitTree में
- पैलेट Show Working Changes (पैलेट खोलने के लिए कमांड/Ctrl+Shift+P)। Unstaged Files के अंतर्गत style.css पर क्लिक करें। पुष्टि करें कि केवल त्रिज्या 0.5rem → 0.75rem शेष है; पहले की चौड़ाई में बदलाव को न दोहराएं।
- इसकी Stage File पंक्ति क्रिया चुनें, सारांश दर्ज करें
style: finish the card radius change, सामान्य विकल्प बंद करें, फिर Commit Changes to 1 File (या Command/Ctrl+Enter एक बार)। चार कमिट सत्यापित करें और ट्रैक की गई स्थिति साफ़ करें। - पैलेट New File… → Path from the project folder = docs/history.md → Create. पूरा दस्तावेज़ चिपकाएँ और Save। Back to Graph → Show Working Changes → docs/history.md के लिए स्टेज फ़ाइल।
- सारांश
docs: record logs-and-revisions practice; एक फ़ाइल प्रतिबद्ध करें. अपेक्षित श्रृंखला में अब पाँच प्रतिबद्धताएँ हैं। - रूट हीरो पंक्ति पर क्लिक करें. प्रतिबद्ध विवरण में इसके वास्तविक SHA, विषय, लेखक/कमिटर और root commit मूल स्थिति का निरीक्षण करें। नवीनतम पंक्ति पर क्लिक करें; इसके मूल संबंध की तुलना करें। केवल इसे पढ़ने के लिए Check Out This Commit का आह्वान न करें।
- In commit details toggle View all files to distinguish the commit's whole tree from only changed paths; inspect the document at its recorded revision. This does not modify the working file.
- वापसी Back to Graph; पैलेट Search Loaded History या Command/Ctrl+F while the graph is active का उपयोग करें,
radiusटाइप करें और मिलान किए गए लोड किए गए इतिहास का निरीक्षण करें। एक संपादक में एक ही राग संपादक पाठ को ढूंढता है। बाद में खोज साफ़ करें. लोडेड-इतिहास खोज एक सर्वर-व्यापी इतिहास क्वेरी नहीं है। - पैलेट Jump to HEAD, Command/Ctrl+Shift+H, वर्तमान टिप का पता लगाता है। चयन/खोज आगे बढ़ सकती है जबकि मूल निवासी
git symbolic-ref --short HEADअभी भी मुख्य रिपोर्ट करता है। - इसकी real प्रतिबद्ध आईडी प्राप्त करने के लिए मूल
git rev-parse HEAD~2का उपयोग करें; कोई निश्चित पाठ्यक्रम SHA की आपूर्ति नहीं की जाती है। पैलेट Compare References… (repo.compareRefs) खुलता है Compare References। Old side में, उस मापी गई आईडी को पेस्ट करें और उसका कमिट विकल्प चुनें; New side में, HEAD चुनें। पिकर एक प्रतिबद्ध आईडी स्वीकार करता है, यह वादा नहीं कि मनमाना संशोधन अभिव्यक्ति वहां पार्स की गई है। - What to compare के अंतर्गत, पहले The two endpoints फिर Compare चुनें। इस श्रृंखला के लिए docs/history.md और style.css में अंतर की अपेक्षा करें। तुलना को फिर से खोलें/बदलें और समान पक्षों के साथ Changes since the merge base चुनें: रैखिक वंशावली यहां समापन बिंदु परिणाम को मेल खाती है। उस दृश्य से सममित-लॉग व्यवहार का अनुमान न लगाएं। Cancel इतिहास बदले बिना बाहर निकल जाता है।
टर्मिनल में
मूल उत्परिवर्तन विकल्प, केवल संबंधित ऐप की सफलता से पहले:
git add -- styles.css
git commit --quiet -m "style: finish the card radius change"दोनों चुपचाप सफल हुए। पूरा दस्तावेज़ सहेजने के बाद:
git add -- docs/history.md
git commit --quiet -m "docs: record logs-and-revisions practice"
git log --reverse --format=%sपूर्ण प्रेक्षित श्रृंखला:
feat: add the GitTree Features hero
feat: add styling and local project checks
feat: refine the hero and card spacing
style: finish the card radius change
docs: record logs-and-revisions practiceसेट बनाम पेड़ का निरीक्षण करें:
git log --format=%s HEAD~2..HEAD
git log --format=%s HEAD~2...HEADप्रत्येक क्वेरी अलग से मुद्रित:
docs: record logs-and-revisions practice
style: finish the card radius changeवे केवल इसलिए मेल खाते हैं क्योंकि पुराना समापन बिंदु यहां पूर्वज है।
git diff --name-only HEAD~2 HEAD
git rev-list --count HEAD
git symbolic-ref --short HEADआउटपुट क्रम में:
docs/history.md
styles.css
5
mainदो नामित फ़ाइलें ट्री अंतर हैं, लॉग द्वारा लौटाए गए दो कमिट की पहचान नहीं।
git rev-parse --verify --quiet HEAD^2कोई stdout/stderr और निकास 1 नहीं देखा गया: नवीनतम प्रतिबद्धता कोई मर्ज नहीं है। इसके बजाय दो प्रथम-मूल चरणों के लिए HEAD~2 का उपयोग करें। वास्तविक तुलना आईडी की पहचान करने के लिए:
git rev-parse HEAD~2रिहर्सल के दौरान इसका वास्तविक आउटपुट पढ़ें; मापा गया SHA प्रतिबद्ध मेटाडेटा के साथ बदलता है और इसे मॉडल लेबल से कॉपी नहीं किया जाना चाहिए।
नतीजा
इस पाठ के अंत में: प्रलेखित क्रम में मुख्य रूप से पाँच प्रतिबद्धताएँ; ट्रैक किया गया कार्य/सूचकांक साफ़, कोई रिमोट या संचालन प्रगति पर नहीं। सीएसएस का दायरा अब 0.75rem है और docs/history.md प्रतिबद्ध है। पिछली ग्राफ़ पंक्ति को पढ़ने से HEAD अलग नहीं हुआ है।
सामान्य गलतियाँ
- चयनित पंक्ति को चेक-आउट प्रतिबद्धता के रूप में मानना: HEAD का स्वतंत्र रूप से निरीक्षण करना।
- ^2 को ~2 के रूप में पढ़ना: दूसरा पैरेंट बनाम दो प्रथम-पैरेंट किनारा।
- तीन-बिंदु अंतर पर सममित-लॉग अर्थ लागू करना: अंतर मर्ज आधार से दाईं ओर दिशात्मक है।
- यह मानते हुए कि ग्राफ़ खोज अनलोडेड/अनफ़ेच्ड इतिहास को कवर करती है।
अगर कुछ गलत होता है
एक लापता संशोधन का मतलब अपर्याप्त वंशावली, एक टाइपो या उथली सीमा हो सकता है, भ्रष्टाचार नहीं। श्रृंखला और चयनित रिपॉजिटरी को सत्यापित करें। कमिट ख़त्म करने से पहले ऐप फ़िल्टर साफ़ करें गायब हो गए। किसी चयन को सुधारने के लिए किसी मनमाने प्रदाता से न लाएँ, रीसेट न करें या चेकआउट न करें। यदि कोई दस्तावेज़ पहले से मौजूद है, तो इस नए फ़ाइल चरण को लागू करने से पहले उसकी सामग्री का निरीक्षण करें।
अपनी समझ की जाँच करें
प्रत्येक प्रश्न का उत्तर दें, फिर क्यों पढ़ें। "आवश्यक" चिह्नित प्रश्न पाठ को पूरा करने में गिने जाते हैं।
6 में से 0 सही
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें।
इस ब्राउज़र में चेक किया गया.
अभ्यास करें
एक पुरानी पंक्ति चुनें और साबित करें कि HEAD मुख्य रहता है। बताएं कि क्यों दो लॉग प्रविष्टियाँ केवल दो पथों में अंतर के अनुरूप हो सकती हैं। परिवर्तित इनपुट: H3 से एक कमिट वाली एक अलग शाखा के लिए, जबकि मुख्य H5 पर है, अनुमान लगाएं कि मुख्य..फीचर में केवल वह फीचर कमिट है, लेकिन मुख्य...फीचर में H4/H5 भी शामिल है। उस शाखा को विहित चेकपॉइंट में न बनाएं; एक डिस्पोजेबल कॉपी का उपयोग करें.
आपकी अपनी पुष्टि: साइट आपका कंप्यूटर नहीं देख सकती।
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें और व्यावहारिक अभ्यास की पुष्टि करें।
पुनर्कथन
- चयन और HEAD के अलग-अलग स्वामी हैं।
- मूल संकेतन और पुनरीक्षण सेट वंश का वर्णन करते हैं, फ़ाइल परिवर्तनों का नहीं।
- वास्तविक हल किए गए अंतिम बिंदुओं की तुलना करें और प्रश्न को स्पष्ट रूप से लेबल करें।
संबंधित
शब्दावली शब्द प्रस्तुत किये गये
प्रतिबद्ध - إيداع; माता-पिता - إيداع أب; रेफरी - مرجع; पुनरीक्षण - مراجعة; रेंज - نطاق; मर्ज आधार - أساس الدمج; लेखक - المؤلف; कमिटर - المُودِع.
वीडियो प्रतिलेख
वीडियो का वर्णन, संकेत दर संकेत।
प्रतिलिपि दिखाएँ
- बिना इतिहास पढ़ें अपनी वर्तमान शाखा को स्थानांतरित करना।
- सबसे पहले उसका निरीक्षण करें L007 द्वारा छोड़ा गया स्वतंत्र संपादन।
- त्रिज्या को अपनी स्थानीय प्रतिबद्धता के रूप में रिकॉर्ड करें।
- प्रलेखित शृंखला का उपयोग करके लिखें विषय, आविष्कृत हैश नहीं।
- दस्तावेज़ बन जाता है इस शृंखला में पाँचवीं प्रतिबद्धता।
- पहले वास्तविक ऑर्डर सत्यापित करें पुनरीक्षण संकेतन पढ़ाना।
- एक शाखा का नाम और एक चयनित ग्राफ़ पंक्ति भिन्न हैं.
- केवल मूल का चयन करना निरीक्षण की गई प्रतिबद्धता को बदलता है।
- पूरा पेड़ ही नहीं है उस प्रतिबद्धता में सूची बदल गई।
- लोडेड इतिहास खोजें, नहीं एक वादा किया गया सर्वर-व्यापी संग्रह।
- चयन को वर्तमान टिप पर लौटाएँ।
- टर्मिनल स्वतंत्र रूप से चेक-आउट शाखा की पुष्टि करता है।
- दो मूल चरण नहीं हैं एक प्रतिबद्धता का दूसरा जनक।
- यह गैर-विलय प्रतिबद्धता उसका कोई दूसरा माता-पिता नहीं है.
- ये सेट यहाँ सहमत हैं क्योंकि अंतिम बिंदु पूर्वज हैं।
- एक वृक्ष अंतर नाम फ़ाइलें, प्रतिबद्ध पहचानों का एक सेट नहीं।
- मापी गई प्रतिबद्ध आईडी का उपयोग करें तुलना पिकर में.
- हल किए गए दोनों की तुलना करें रेफरी बदले बिना पेड़।
- यह मोड मर्ज की तुलना करता है दाहिनी ओर से आधार.
- एक अपसारी ग्राफ बनता है दोनों लॉग श्रेणियाँ भिन्न हैं।
- थ्री-डॉट लॉग और थ्री-डॉट भिन्न-भिन्न प्रश्नों के उत्तर भिन्न-भिन्न हैं।
- एक ग़लत चयन की आवश्यकता है नेविगेशन, विनाशकारी पुनर्प्राप्ति नहीं।
- श्रृंखला और अपरिवर्तित सत्यापित करें शाखा लगाने से पहले सिर।
- अगला, बनाएं और स्विच करें शाखा के नाम जानबूझकर.