गिट लॉग के साथ किसी प्रोजेक्ट के इतिहास का निरीक्षण कैसे करें

गिट लॉग के साथ किसी प्रोजेक्ट के इतिहास का निरीक्षण कैसे करें

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





NS गिट लॉग कमांड बहुत बड़ा है, किसी भी नियमित गिट कमांड में सबसे बड़ा। इसका मैनुअल 2,500 लाइनों से अधिक लंबा है। सौभाग्य से, गिट लॉग केवल कुछ प्रमुख विकल्पों में से अपना अधिकांश उपयोगी व्यवहार प्रदान करता है।





डिफ़ॉल्ट व्यवहार के साथ मूल लॉगिंग

डिफ़ॉल्ट रूप से, गिट लॉग कमिट्स की एक रिवर्स-कालानुक्रमिक सूची दिखाता है। प्रत्येक प्रतिबद्धता में उसका हैश, लेखक, दिनांक और प्रतिबद्ध संदेश शामिल होता है:





आदेश पूर्ण आउटपुट दिखाने के लिए एक पेजर (जैसे कम, अधिक) का उपयोग करता है ताकि आप परिणामों को आसानी से नेविगेट कर सकें। आप अपनी पसंद के प्रोग्राम का उपयोग करने के लिए Git को कॉन्फ़िगर कर सकते हैं, जैसे कि अधिकांश पेजर।

यहाँ से कुछ git लॉग आउटपुट दिया गया है गिट स्रोत कोड का भंडार अपने आप:



commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origin/master, origin/HEAD)
Author: Junio C Hamano
Date: Mon Jun 14 13:23:28 2021 +0900
The second batch
Signed-off-by: Junio C Hamano

परिणाम प्रतिबद्ध हैश से शुरू होता है ( 670 ...) के बाद शाखाओं की एक सूची है जो वर्तमान में उस प्रतिबद्धता को इंगित करती है ( सिर -> मास्टर , आदि।)

विंडोज़ 10 charging को चार्ज न करने में प्लग इन किया गया

अगली पंक्ति इस कमिट के लेखक का वर्णन करती है, उनका नाम और ईमेल पता देती है।





प्रतिबद्धता की पूरी तिथि और समय अगली पंक्ति पर चलता है।

अंत में, प्रतिबद्ध संदेश की पूरी सामग्री प्रकट होती है। आप कमांड-लाइन विकल्पों के साथ git log ऑफ़र की अधिकांश चीज़ों को नियंत्रित कर सकते हैं। दो मुख्य प्रकार के विकल्प हैं:





  • स्वरूपण, जो परिभाषित करता है कि गिट प्रत्येक प्रतिबद्धता को कैसे प्रदर्शित करता है।
  • फ़िल्टरिंग, जो परिभाषित करता है कि कौन सा करता है गिट लॉग शामिल है।

कमांड-लाइन विकल्पों के अलावा, git लॉग उन तर्कों को स्वीकार करता है जो फाइलों, कमिट्स, शाखाओं या अन्य प्रकार के संदर्भों को निर्दिष्ट करते हैं। ये आगे फ़िल्टरिंग लागू करते हैं।

Git लॉग आउटपुट को फ़ॉर्मेट करना

सबसे सरल समायोजनों में से एक है --एक पंक्ति विकल्प जो एक बहुत ही संक्षिप्त आउटपुट उत्पन्न करता है:

git log --oneline

लॉग में प्रत्येक पंक्ति में अब केवल एक संक्षिप्त प्रतिबद्ध हैश और प्रतिबद्ध संदेश का विषय है। परियोजना के लिए हाल ही में किए गए कार्यों का अवलोकन प्राप्त करने का यह एक शानदार तरीका है:

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

एक शाखा ग्राफ देखना

NS --ग्राफ विकल्प आपको शाखाओं के बीच संबंधों की कल्पना करने की अनुमति देता है। यह बहुत ही बुनियादी है लेकिन एक जटिल इतिहास को सुलझाने में मदद कर सकता है।

git log --oneline --graph

सम्बंधित: गिट में एक नई शाखा कैसे बनाएं

अनुकूलित सुंदर आउटपुट

आप इसका उपयोग करके विस्तार से निर्दिष्ट करके अधिक जटिल स्वरूपण प्राप्त कर सकते हैं --सुंदर हे विकल्प। वाक्य रचना बहुत सरल से बहुत अधिक जटिल हो जाती है, इसलिए संपूर्ण विवरण के लिए एक मैनुअल से परामर्श करें .

वर्ड में लाइन कैसे डिलीट करें
git log --pretty=short

अनिवार्य रूप से समान है गिट लॉग दिनांक या पूर्ण संदेश के बिना:

git log --pretty=oneline

के बराबर है गिट लॉग --ऑनलाइन .

git log --pretty=fuller

बहुत सारे विवरण शामिल हैं। यह लेखक और कमिटर को भी अलग करता है, जो सिद्धांत रूप में, अलग-अलग लोग हो सकते हैं:

उसके साथ प्रारूप: प्रकार, आप एक स्ट्रिंग की आपूर्ति कर सकते हैं जिसमें आप जो भी सामग्री चाहते हैं, जिसमें प्लेसहोल्डर शामिल हैं जिन्हें विभिन्न डेटा द्वारा प्रतिस्थापित किया जाता है। यहां कुछ उदाहरण प्लेसहोल्डर दिए गए हैं:

  • %एच प्रतिबद्ध हैश
  • %एच संक्षिप्त प्रतिबद्ध हैश
  • %प्रति लेखक तिथि
  • %साथ में लेखक तिथि, रिश्तेदार
  • %एस संदेश विषय प्रतिबद्ध करें
  • % बी संदेश निकाय प्रतिबद्ध करें
  • %पी संक्षिप्त माता-पिता हैश

आप आउटपुट में निश्चित वर्ण जोड़ सकते हैं और इसे रंगीन कर सकते हैं। यह उदाहरण दिनांक प्रारूप में भिन्नता भी दिखाता है:

git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short

ध्यान दें कि कोष्ठक दिनांक को घेरते हैं। आप जो भी स्वरूपण चुनते हैं, यदि आप चाहते हैं कि आउटपुट पाइपलाइन में या टेक्स्ट प्रोसेसिंग के अन्य रूपों के लिए उपयोगी हो, तो आपको इस बात पर विचार करना चाहिए कि आउटपुट के प्रत्येक भाग का सीमांकन कैसे किया जाए।

लॉग में कठिनाइयाँ दिखा रहा है

एक भंडार के इतिहास को देखते समय एक महत्वपूर्ण विवरण स्वयं भिन्न होता है। वे प्रतिनिधित्व करते हैं कि वास्तव में कोड में क्या बदला है! शुरुआत के लिए, आप प्रत्येक प्रतिबद्धता के साथ परिवर्तनों का सारांश प्राप्त कर सकते हैं --शॉर्टस्टैट :

git log --shortstat

यह एक पंक्ति जोड़ता है जैसे:

1 file changed, 48 insertions(+), 2 deletions(-)

प्रत्येक प्रतिबद्धता की तह तक। उदाहरण के लिए, आप अक्सर इस तरह का सारांश देखेंगे - GitHub पर पूरे पृष्ठ - और यह एक विशिष्ट प्रतिबद्धता के दायरे को जल्दी से पहचानने का एक उपयोगी तरीका है। अधिक विस्तृत जानकारी के लिए, आप का उपयोग करके पूर्ण पैच आउटपुट (diffs) शामिल कर सकते हैं -पी झंडा:

git log -p

Git लॉग आउटपुट को फ़िल्टर करना

आप जो भी स्वरूपण लागू करते हैं, आप अभी भी वर्तमान शाखा में सभी कमिट्स का पूरा लॉग देखेंगे। भले ही गिट उन्हें पृष्ठों में तोड़ देता है, फिर भी यह बहुत अधिक आउटपुट हो सकता है। निम्नलिखित विकल्प आपको अनुकूलित करने की अनुमति देते हैं जिसमें लॉग शामिल है।

राशि द्वारा प्रतिबंधित

यदि आप हाल के कुछ कमिट दिखाने के लिए परिणामों को ट्रिम करना चाहते हैं, तो इसका उपयोग करें -[संख्या] वाक्य - विन्यास:

git log -2

तिथि के अनुसार प्रतिबंधित

कमिट्स के सेट को किसी निश्चित दिनांक सीमा तक सीमित करने के लिए, का उपयोग करें --जबसे ( --उपरांत ) तथा --जब तक ( --इससे पहले ) विकल्प। ये प्रत्येक आईएसओ 8601 प्रारूप में एक तिथि लेते हैं। आप या तो उपयोग कर सकते हैं --जबसे या --जब तक अपने दम पर, या दोनों एक साथ एक सीमा निर्दिष्ट करने के लिए। विकल्प --उपरांत तथा --इससे पहले समानार्थी हैं।

git log --since='2021-01-01' --until='2021-05-01'

फ़ाइल द्वारा प्रतिबंधित

गिट लॉग आपके भंडार में प्रत्येक फ़ाइल के बजाय एक विशिष्ट फ़ाइल पर ध्यान केंद्रित कर सकता है। यह पता लगाने में आपकी मदद करने के लिए बहुत अच्छा है कि समय के साथ कोई विशेष फ़ाइल कैसे बदली है। बस फ़ाइल नाम को अपने git कमांड के अंत में संलग्न करें:

git log filename

आप केवल वही देखेंगे जो प्रभावित हुए हैं फ़ाइल का नाम .

शाखाओं के बीच अंतर

शाखा का लॉग देखते समय आपकी कुछ विशिष्ट आवश्यकताएं हो सकती हैं। उदाहरण के लिए, संपूर्ण इतिहास देखने के बजाय, आप केवल यह देखना चाहेंगे कि उस विशिष्ट शाखा में क्या परिवर्तन हुआ है। गिट लॉग के माध्यम से मदद कर सकता है रेफरी1..रेफरी2 वाक्य - विन्यास। तीन अलग-अलग दृष्टिकोण हैं जिनका आप उपयोग कर सकते हैं:

  1. देखें कमिट जो मुख्य में हैं, लेकिन शाखा में नहीं हैं: |_+_|
  2. देखें कमिट जो शाखा में हैं, लेकिन मुख्य नहीं: |_+_|
  3. देखें कमिट जो केवल शाखा या मुख्य में मौजूद हैं: |_+_|

दो टैग के बीच अंतर

जैसे आप का उपयोग करके शाखाओं के बीच इतिहास देख सकते हैं रेफरी1..रेफरी2 सिंटैक्स, आप उसी तरह टैग के बीच इतिहास भी देख सकते हैं। आखिरकार, टैग और शाखाएं दोनों प्रकार के संदर्भ हैं।

git log --oneline origin/branch..origin/main

यदि आप किसी बड़े प्रोजेक्ट के लिए रिलीज़ नोट तैयार कर रहे हैं, गिट शॉर्टलॉग कॉल का आपका पहला पोर्ट होना चाहिए। यह उनके साथ प्रतिबद्ध विषयों वाले लेखकों की एक सूची तैयार करता है। आप इसे git log के समान इतिहास को सीमित करने के लिए एक संदर्भ श्रेणी पास कर सकते हैं:

git log --oneline origin/ main ..origin/ branch

NS गिट शो कमांड से भी अधिक बहुमुखी है गिट लॉग . यह प्रतिबद्ध इतिहास से परे टैग और अन्य प्रकार की गिट वस्तुओं के साथ काम कर सकता है। यह कई विकल्पों के साथ साझा करता है गिट लॉग , लेकिन आपको वास्तव में इसकी आवश्यकता केवल तभी होगी जब आपको निचले स्तर के विवरणों में खुदाई करने की आवश्यकता हो।

गिट लॉग के साथ अतीत की समीक्षा करें

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

वर्चुअल यूट्यूबर कैसे बनें
साझा करना साझा करना कलरव ईमेल सोशल कोडिंग ट्रेंड में शामिल हों और GitHub रिपॉजिटरी में योगदान करें

अपनी कोडिंग मांसपेशियों का व्यायाम करना चाहते हैं और ओपन सोर्स प्रोजेक्ट्स में मदद करना चाहते हैं? यहाँ GitHub में योगदान करने का तरीका बताया गया है।

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • GitHub
  • कोडिंग टिप्स
लेखक के बारे में बॉबी जैक(58 लेख प्रकाशित)

बॉबी एक प्रौद्योगिकी उत्साही हैं जिन्होंने दो दशकों तक एक सॉफ्टवेयर डेवलपर के रूप में काम किया। उन्हें गेमिंग का शौक है, स्विच प्लेयर मैगज़ीन में समीक्षा संपादक के रूप में काम कर रहे हैं, और ऑनलाइन प्रकाशन और वेब विकास के सभी पहलुओं में डूबे हुए हैं।

बॉबी जैक . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें