git log कमांड एक Git रिपॉजिटरी में कमिट का रिकॉर्ड प्रदर्शित करता है। डिफ़ॉल्ट रूप से, git log कमांड एक कमिट हैश, कमिट मैसेज, और अन्य कमिट मेटाडेटा प्रदर्शित करता है। आप विभिन्न विकल्पों का उपयोग करके git log के आउटपुट को फ़िल्टर कर सकते हैं।
वर्जन कंट्रोल सिस्टम का एक मुख्य उद्देश्य है - समय के साथ आपके कोडबेस के विकास को रिकॉर्ड करना। यह आपको यह देखने की अनुमति देता है कि आपके प्रोजेक्ट कैसे प्रगति कर चुके हैं। आप पता लगा सकते हैं कि आपके प्रोजेक्ट में किसने योगदान दिया है और पहचान सकते हैं कि आपके कोड में क्या परिवर्तन किए गए हैं और कब।
लेकिन आप वास्तव में अपने Git रिपॉजिटरी द्वारा बनाए गए इतिहास को कैसे देखते हैं? यहीं पर git log कमांड सहायक हो सकता है।
यह ट्यूटोरियल, उदाहरणों के साथ, git log कमांड की मूल बातें और आप इसका उपयोग Git रिपॉजिटरी का निरीक्षण करने के लिए कैसे कर सकते हैं, इस पर चर्चा करेगा।
git log कमांड
git log कमांड एक रिपॉजिटरी में किए गए सभी कमिट की सूची दिखाता है। आप प्रत्येक Git कमिट का हैश, प्रत्येक कमिट से जुड़ा संदेश, और अधिक मेटाडेटा देख सकते हैं। यह कमांड रिपॉजिटरी के इतिहास को प्रदर्शित करने के लिए उपयोगी है।
जहां git status कमांड वर्तमान वर्किंग डायरेक्टरी पर केंद्रित है, वहीं git log आपको अपने रिपॉजिटरी का इतिहास देखने की अनुमति देता है।
git log कमांड उदाहरण
आइए एक उदाहरण के माध्यम से चलते हैं कि git log कमांड कैसे काम करता है। हम "demo-repository" नामक एक रिपॉजिटरी पर काम कर रहे हैं। अब हम अपने रिपॉजिटरी में पुश किए गए सभी कमिट की सूची देखना चाहते हैं। ऐसा करने के लिए, हम इस कमांड का उपयोग कर सकते हैं:
git log कमांड एक रिपॉजिटरी में किए गए सभी कमिट की सूची लौटाता है। यहां इस कमांड द्वारा लौटाए गए एक सिंगल कमिट का उदाहरण दिया गया है:
commit 43433c674e3d6c86a889fad222dae179785893cf (HEAD -> master, origin/master, origin/HEAD) Author: James Gallagher <37276661+jamesgallagher432@users.noreply.github.com> Date: Tue Apr 7 13:09:58 2020 +0100 Update index.html
आइए इस आउटपुट को चरण-दर-चरण चर्चा करें। git log कमांड द्वारा लौटाई गई प्रत्येक प्रविष्टि में शामिल हैं:
- कमिट के लिए सिक्योर हैश एल्गोरिथम (SHA) हैश, जिसका उपयोग रिपॉजिटरी में प्रत्येक कमिट को विशिष्ट रूप से पहचानने के लिए किया जाता है। हमारे ऊपर के उदाहरण में, यह "43433c674e3d6c86a889fad222dae179785893cf" था।
- कमिट का लेखक। हमारे ऊपर के उदाहरण में, यह जेम्स गैलाघर था। लेखक का ईमेल भी निर्दिष्ट है।
- कमिट पुश की गई तारीख। हमारे ऊपर के उदाहरण में, यह मंगलवार, 7 अप्रैल था।
- कमिट से जुड़ा संदेश। ऊपर लौटाया गया कमिट मैसेज "Update index.html" था।
यह सारा डेटा हमें हमारे रिपॉजिटरी में कमिट के बारे में उपयोगी जानकारी देता है।
git log के आउटपुट को फ़िल्टर करना
डिफ़ॉल्ट रूप से, git log इस संरचना का उपयोग करके एक रिपॉजिटरी में किए गए सभी कमिट की सूची लौटाता है। जैसा कि आप कल्पना कर सकते हैं, यदि पढ़ने के लिए कई कमिट हैं तो आपके git log स्टेटमेंट को पढ़ना जल्दी मुश्किल हो सकता है।
git log कुछ फ्लैग्स के साथ आता है जिनका उपयोग आप अपने लॉग को फ़िल्टर करने के लिए कर सकते हैं। ये हैं:
सबसे हालिया के अनुसार फ़िल्टर करें
यदि आप कमिट की एक विशिष्ट संख्या लौटाना चाहते हैं, तो आप -n फ्लैग का उपयोग करके ऐसा कर सकते हैं। यहां इस फ्लैग का एक उदाहरण दिया गया है:
यह कमांड एक रिपॉजिटरी में किए गए तीन सबसे हालिया कमिट की सूची लौटाता है।
लेखक या कमिटर के अनुसार फ़िल्टर करें
आप git log द्वारा लौटाए गए कमिट को उस व्यक्ति के अनुसार भी फ़िल्टर कर सकते हैं जिसने परिवर्तन लिखे या कमिट किए। मान लीजिए हम "जॉन स्मिथ" द्वारा पुश किए गए कमिट की सूची देखना चाहते हैं। हम इन कमांड्स का उपयोग करके ऐसा कर सकते हैं:
git log --author="John Smith" git log --committer="John smith"
लेखक फ्लैग परिणामों को उन कमिट तक सीमित करता है जिनके परिवर्तन जॉन स्मिथ द्वारा किए गए थे। कमिटर फ्लैग परिणामों को उन कमिट तक सीमित करता है जो वास्तव में उस व्यक्ति द्वारा कमिट किए गए थे।
आप पाएंगे कि, ज्यादातर मामलों में, लेखक और कमिटर एक ही व्यक्ति होते हैं। बड़े प्रोजेक्ट्स में, एक कमिट का लेखक आवश्यक रूप से वह नहीं हो सकता है जो इसे रिपॉजिटरी में पुश करता है। यही कारण है कि ये दो फ्लैग मौजूद हैं।
तारीख के अनुसार फ़िल्टर करें
इसके अलावा, आप git log के परिणामों को तारीख के अनुसार फ़िल्टर कर सकते हैं। ऐसा करने के लिए, आप --before और --after फ्लैग का उपयोग कर सकते हैं। ये फ्लैग तारीख प्रारूपों की एक विस्तृत श्रृंखला स्वीकार करते हैं, लेकिन दो सबसे अधिक उपयोग किए जाने वाले सापेक्ष संदर्भ और पूर्ण तारीखें हैं।
मान लीजिए हम 2019-3-2 के बाद के कमिट की सूची प्राप्त करना चाहते हैं। हम इस कमांड का उपयोग करके ऐसा कर सकते हैं:
git log --after="2019-3-2"
हमने अपने कमिट को फ़िल्टर करने के लिए एक तारीख निर्दिष्ट की है। इसी तरह, यदि हम कल से पहले के कमिट की सूची प्राप्त करना चाहते हैं, तो हम इस कमांड का उपयोग करके ऐसा कर सकते हैं:
git log --before="yesterday"
हमने एक सापेक्ष मान ("कल") निर्दिष्ट किया है।
अब, मान लीजिए हम उन कमिट की सूची प्राप्त करना चाहते हैं जो 2019-3-2 के बाद और 2019-3-19 से पहले प्रकाशित हुए थे। हम इस कमांड का उपयोग करके ऐसा कर सकते हैं:
git log --after="2019-3-2" --before="2019-3-19"
फाइल के अनुसार फ़िल्टर करें
जब आप git log कमांड का उपयोग कर रहे होते हैं, तो आप केवल उन कमिट की सूची देखना चाह सकते हैं जिन्होंने किसी विशेष फाइल को प्रभावित किया है। ऐसा करने के लिए, आप उस फाइल को निर्दिष्ट कर सकते हैं जिसके परिवर्तन आप देखना चाहते हैं।
मान लीजिए हम अपने कोड में "main.py" फाइल में किए गए परिवर्तन देखना चाहते हैं। हम निम्न कमांड का उपयोग करके ऐसा कर सकते हैं:
-- स्टेटमेंट git log कमांड को निर्देश देता है कि हमारे द्वारा निर्दिष्ट तर्क फाइल पथ हैं न कि ब्रांच के नाम।
हमारे कमांड में, हमने केवल एक फाइल निर्दिष्ट की है जिसका उपयोग हम git log कमांड की प्रतिक्रिया को फ़िल्टर करने के लिए करना चाहते थे। लेकिन, यदि आप चाहें, तो आप कई फाइलें निर्दिष्ट कर सकते हैं।
सामग्री के अनुसार फ़िल्टर करें
आप उन कमिट को भी खोज सकते हैं जिन्होंने कोड की एक विशेष लाइन को हटाया या जोड़ा है।
मान लीजिए हम उन सभी कमिट को खोजना चाहते हैं जिन्होंने हमारे कोड में "# Introduction" शब्द जोड़ा है। हम इस कमांड का उपयोग करके ऐसा कर सकते हैं:
git log -S"# Introduction"
-S फ्लैग का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि हम अपनी कमिट सूची में किस कमिट परिवर्तन की तलाश कर रहे हैं। ध्यान दें कि -S फ्लैग और उद्धरण चिह्नों के बीच कोई स्पेस या बराबर चिह्न नहीं है। साथ ही, उद्धरण चिह्न जिनका उपयोग हम उस कमिट की सामग्री को निर्दिष्ट करने के लिए करते हैं जिसे हम ढूंढ रहे हैं।
रेंज के अनुसार फ़िल्टर करें
आप git log को कमिट की एक रेंज पास करने के लिए since और until पैरामीटर्स का उपयोग कर सकते हैं। इन पैरामीटर्स के लिए सिंटैक्स इस प्रकार है:
मान लीजिए हम उस कमिट की सूची प्राप्त करना चाहते हैं जो कमिट b72beb5 के पुश होने के बाद से और कमिट b53b22d के पुश होने तक की गई थी। हम इस कमांड का उपयोग करके ऐसा कर सकते हैं:
यह कमांड b72beb5 और b53b22d कमिट के बीच के सभी कमिट की सूची लौटाता है।
मैसेज के अनुसार फ़िल्टर करें
--grep फ्लैग आपको किसी विशेष कमिट से जुड़े कमिट मैसेज के अनुसार git log द्वारा लौटाए गए कमिट को फ़िल्टर करने की अनुमति देता है।
उदाहरण के लिए, मान लीजिए हम उन सभी कमिट की सूची लौटाना चाहते हैं जिनका नाम "feat:" से शुरू होता है। हम इस कोड का उपयोग करके ऐसा कर सकते हैं:
यह कमांड उन सभी कमिट की सूची लौटाता है जिनके मैसेज "feat:" से शुरू होते हैं।
git log के आउटपुट को फॉर्मेट करना
पिछले अनुभाग में, हमने git log कमांड से पूर्ण आउटपुट के साथ काम किया। इस आउटपुट में हमारे कमिट के लिए SHA, कमिट लेखक, कमिट पुश की गई तारीख, और कमिट मैसेज शामिल थे।
हालांकि यह सारी जानकारी उपयोगी है, ऐसे अवसर अक्सर आते हैं जहां आपको केवल कमिट के बारे में विशिष्ट डेटा प्राप्त करने की आवश्यकता होती है। सौभाग्य से, git log कमांड कुछ फ्लैग्स के साथ आता है जिनका उपयोग आप कमांड के आउटपुट को फॉर्मेट करने के लिए कर सकते हैं।
संक्षिप्त लॉग लौटाएं
डिफ़ॉल्ट रूप से, git log स्टेटमेंट रिपॉजिटरी में किए गए प्रत्येक कमिट के लिए एक पूर्ण लॉग प्रविष्टि लौटाता है। आप --oneline फ्लैग का उपयोग करके कमिट आईडी और उनके संबद्ध कमिट मैसेज की सूची प्राप्त कर सकते हैं।
यहां --oneline फ्लैग के लिए सिंटैक्स है:
जब हमारी पहले की रिपॉजिटरी में चलाया जाता है, तो यह कमांड लौटाता है:
43433c6 (HEAD -> master, origin/master, origin/HEAD) Update index.html a7d8dc2 docs: Update README.md b53b22d feat: Update website 3b16026 feat: Launch new homepage b72beb5 first commit
हम कमिट आईडी और कमिट से जुड़े मैसेज की पहली लाइन देख सकते हैं। यह git log कमांड द्वारा अन्यथा लौटाए गए कमिट से जुड़े सभी मेटाडेटा की तुलना में पढ़ने में आसान है।
प्रत्येक प्रविष्टि एक ही लाइन पर दिखाई देती है। यह git log एक लाइन तकनीक उपयोगी है क्योंकि यह बहुत अधिक जानकारी प्रदर्शित किए बिना कमिट दिखाती है।
आउटपुट को डेकोरेट करना
--decorate फ्लैग आपको उन सभी रेफरेंस (यानी ब्रांच और टैग) को देखने की अनुमति देता है जो किसी विशेष कमिट की ओर इंगित करते हैं। इस फ्लैग के लिए सिंटैक्स यहां दिया गया है:
यह कमांड लौटाता है:
43433c6 (HEAD -> master, origin/master, origin/HEAD) Update index.html a7d8dc2 docs: Update README.md b53b22d feat: Update website 3b16026 (tag: v1) feat: Launch new homepage b72beb5 first commit
हमारी सूची में चौथे कमिट में अब उसका टैग नाम निर्दिष्ट है। ऐसा इसलिए है क्योंकि --decorate फ्लैग हमारे कमिट इतिहास में प्रत्येक कमिट से जुड़े रेफरेंस को प्रकट करता है।
डिफ़ लौटाना
--stat फ्लैग आपको प्रत्येक कमिट में रिपॉजिटरी में कोड की कितनी लाइनें जोड़ी गईं और हटाई गईं, यह प्रदर्शित करने की अनुमति देता है। यहां git log --stat कमांड का एक उदाहरण दिया गया है:
Author: James GallagherDate: Mon Apr 6 09:11:46 2020 +0100 feat: Update website index.html | 1 + index.js | 0 2 files changed, 1 insertion(+)
प्लस चिह्न (+) इंसर्शन को इंगित करते हैं, और, यदि कोई होते, तो माइनस चिह्न (-) डिलीशन को इंगित करते। यह डेटा आपको रिपॉजिटरी में किए गए समग्र परिवर्तनों के बारे में अधिक जानने की अनुमति देता है।
यदि आप रिपॉजिटरी में किए गए सटीक परिवर्तन देखना चाहते हैं, तो आप -p फ्लैग का उपयोग कर सकते हैं। यह एक कमिट में किए गए परिवर्तनों का अधिक व्यापक डिफ़ दिखाता है।
यहां हमारे उदाहरण रिपॉजिटरी पर चलाए गए git log -p कमांड से लौटाई गई एक प्रविष्टि है:
Author: James Gallagher <37276661+jamesgallagher432@users.noreply.github.com> Date: Tue Apr 7 13:09:58 2020 +0100 Update index.html diff --git a/index.html b/index.html index f45673f..2d2701d 100644 --- a/index.html +++ b/index.html @@ -1,2 +1,3 @@ -This is a file. -Changes have been made. + +This is a website.
+
यह आउटपुट हमें कमिट का विवरण और कमिट में किए गए प्रत्येक परिवर्तन का विस्तृत ब्रेकडाउन दोनों दिखाता है। हम देख सकते हैं कि लोगों ने हमारी रिपॉजिटरी में फाइलों से सामग्री कब जोड़ी या हटाई है।
हालांकि यह डेटा उपयोगी है, यदि प्रदर्शित करने के लिए कई कमिट हैं तो इस आउटपुट को पढ़ना जल्दी मुश्किल हो सकता है। आप इस लेख में चर्चा किए गए अन्य फ्लैग्स में से एक या अधिक का उपयोग करना चाह सकते हैं। यह सुनिश्चित करने में मदद करेगा कि इस कमिट द्वारा लौटाई गई जानकारी व्यापक और पढ़ने में आसान दोनों है।
Git डिफ़ के बारे में अधिक पढ़ने के लिए हमारे git diff कमांड गाइड को पढ़ें।
git shortlog कमांड
git shortlog कमांड git log का सारांश प्रदान करता है। git shortlog कमांड का आउटपुट लेखक द्वारा समूहीकृत होता है जिसका अर्थ है कि आप आसानी से देख सकते हैं कि किसने रिपॉजिटरी में क्या परिवर्तन किए।
आइए हमारी पहले की रिपॉजिटरी पर git shortlog कमांड चलाएं:
हमारा कमांड लौटाता है:
James Gallagher (5): first commit feat: Launch new homepage feat: Update website docs: Update README.md Update index.html
जेम्स इस रिपॉजिटरी में योगदान देने वाला एकमात्र व्यक्ति है, और उसने पांच कमिट किए हैं। लेकिन, यदि अन्य योगदानकर्ता होते, तो उनके योगदान यहां सूचीबद्ध होते, साथ ही उनके द्वारा रिपॉजिटरी में पुश किए गए कमिट की कुल संख्या भी।
निष्कर्ष
git log कमांड आपको दिखाता है कि रिपॉजिटरी में क्या परिवर्तन किए गए थे, किसके द्वारा, और कब। आप git log के आउटपुट को केवल वही जानकारी दिखाने के लिए फ़िल्टर कर सकते हैं जो आपको जानने की आवश्यकता है।
git log कमांड दो प्रकार के फ्लैग्स के साथ आता है। कुछ फ्लैग्स लॉग के आउटपुट को फॉर्मेट करने में मदद करते हैं। अन्य फ्लैग्स जो कमांड द्वारा लौटाए गए कमिट को फ़िल्टर करने में मदद कर सकते हैं।
इस ट्यूटोरियल ने उदाहरणों के संदर्भ में चर्चा की कि git log और कमांड के साथ उपयोग किए जाने वाले सबसे सामान्य फ्लैग्स का उपयोग कैसे करें। Git के साथ काम करते समय git log कमांड आपके शस्त्रागार में एक महत्वपूर्ण टूल है। एक बार जब आप जानते हैं कि इस कमांड का प्रभावी ढंग से उपयोग कैसे करें, तो आप Git रिपॉजिटरी का निरीक्षण करने में मास्टर होंगे!
Git के बारे में अधिक जानने के लिए, हमारा How to Learn Git गाइड पढ़ें।