Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह · पाठ

क्लाइंट-पक्षीय Git हुक

स्थानीय स्तर पर मानक लागू करने के लिए `pre-commit` और `post-merge` जैसे क्लाइंट-पक्षीय हुक को समझें और लागू करें।

पाठ 1, कुल 4 में से11 चरण

क्लाइंट-पक्षीय Git हुक, CoddyKit पर Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Git Hooks का परिचय

स्वागत है! इस पाठ में आप Git hooks के बारे में सीखेंगे। ये ऐसी स्क्रिप्ट होती हैं जिन्हें Git कमिट, मर्ज या पुश जैसी घटनाओं से पहले या बाद में अपने-आप चलाता है।

इन्हें अपने Git कार्यप्रवाह के स्वचालित सहायकों की तरह समझें। ये परियोजना के मानकों को लागू करने और नियमित कार्यों को स्वचालित करने में मदद करती हैं।

क्लाइंट-पक्ष बनाम सर्वर-पक्ष

Git hooks दो प्रकार के होते हैं:

  • क्लाइंट-पक्ष hooks: आपकी स्थानीय मशीन पर चलते हैं। ये केवल आपके निजी रिपॉज़िटरी को प्रभावित करते हैं। उदाहरणों में `pre-commit` और `post-merge` शामिल हैं।
  • सर्वर-पक्ष hooks: Git सर्वर पर चलते हैं। ये रिपॉज़िटरी पर किए जाने वाले सभी पुश को प्रभावित करते हैं। इनके बारे में हम बाद के पाठ में जानेंगे।

यह पाठ क्लाइंट-पक्ष hooks और स्थानीय रूप से उनके उपयोग पर केंद्रित है।

Hooks कहाँ रहते हैं

सभी Git hooks आपकी रिपॉज़िटरी के भीतर .git/hooks निर्देशिका में संग्रहित होते हैं। जब आप नई Git रिपॉज़िटरी शुरू करते हैं, तो Git इस निर्देशिका में नमूना hook स्क्रिप्ट रख देता है।

आइए, सामान्य .git/hooks फ़ोल्डर के अंदर देखें:

ls -F .git/hooks/

Hook को सक्रिय करना

डिफ़ॉल्ट रूप से, नमूना hook स्क्रिप्ट का अंत .sample से होता है, इसलिए वे निष्क्रिय रहती हैं। किसी hook को सक्रिय करने के लिए आपको:

  1. उसके फ़ाइल नाम से .sample एक्सटेंशन हटाना होगा।
  2. स्क्रिप्ट को निष्पादन योग्य बनाना होगा।

आइए, नाम बदलकर और उसे निष्पादन योग्य बनाकर pre-commit hook सक्रिय करें:

cd .git/hooks
mv pre-commit.sample pre-commit
chmod +x pre-commit

`pre-commit`: आपका स्थानीय रक्षक

pre-commit hook सबसे उपयोगी क्लाइंट-पक्ष hooks में से एक है। यह Git द्वारा आपसे कमिट संदेश माँगने से ठीक पहले और वास्तविक कमिट बनने से पहले चलता है।

यदि स्क्रिप्ट शून्य के अलावा किसी स्थिति के साथ समाप्त होती है, तो Git कमिट रद्द कर देता है। इसलिए यह इन कार्यों के लिए उपयुक्त है:

  • कोड जाँचक चलाना (जैसे, ESLint, Flake8)
  • इकाई परीक्षण चलाना
  • सामान्य गलतियों की जाँच करना (जैसे, डिबग कथन)

उदाहरण: लिंटिंग के लिए `pre-commit`

यहाँ एक सरल pre-commit स्क्रिप्ट है जो जाँचती है कि किसी स्टेज की गई फ़ाइल में "TODO" शब्द है या नहीं। यदि उसे "TODO" मिलता है, तो कमिट रोक दिया जाता है।

यह सामग्री जोड़ने के लिए आप .git/hooks/pre-commit फ़ाइल को सीधे संपादित कर सकते हैं:

#!/bin/sh

# Check for 'TODO' in staged changes
if git diff --cached | grep -q "TODO"; then
  echo "Error: 'TODO' found in staged changes. Please resolve before committing."
  exit 1
fi

`pre-commit` Hook का परीक्षण

अब आइए, ऐसी फ़ाइल को कमिट करके देखें जिसमें "TODO" हो। pre-commit hook को कमिट रोक देना चाहिए।

पहले "TODO" वाली फ़ाइल बनाएँ, फिर उसे कमिट करने का प्रयास करें:

echo "This is a file with a TODO item." > my_feature.txt
git add my_feature.txt
git commit -m "Attempt to commit with TODO"

`post-merge`: मर्ज के बाद

post-merge hook सफल git merge या git pull के तुरंत बाद चलता है (जो मूलतः fetch के बाद merge या rebase करता है)।

यह उन कार्यों को स्वचालित करने के लिए उपयोगी है जिन्हें मर्ज के बाद आपकी कार्यशील निर्देशिका अपडेट होने पर किया जाना चाहिए, जैसे:

  • नई निर्भरताएँ इंस्टॉल करना
  • अपनी परियोजना को फिर से बनाना
  • दस्तावेज़ या प्रतीकात्मक लिंक अपडेट करना

उदाहरण: निर्भरताओं के लिए `post-merge`

मान लीजिए कि आप Node.js वाली परियोजना पर काम कर रहे हैं। नई निर्भरताएँ जोड़ने वाली शाखा का मर्ज करने के बाद (package.json अपडेट होने पर), आप npm install चलाना चाहेंगे।

यहाँ एक post-merge स्क्रिप्ट है जो जाँचती है कि मर्ज से package.json बदला है या नहीं और बदले जाने पर npm install चलाती है:

#!/bin/sh

# Run npm install if package.json changed
if git diff --name-only HEAD@{1} HEAD | grep -q "package.json"; then
  echo "package.json changed, running npm install..."
  # npm install # Uncomment in a real project
  echo "(npm install simulated)"
fi

Hook चुनौती

आपने क्लाइंट-पक्ष Git hooks के बारे में सीख लिया है! इनमें से कौन-से कथन इनके बारे में TRUE हैं?

क्लाइंट-पक्ष Hooks: पुनरावलोकन

बहुत अच्छा! आपने क्लाइंट-पक्ष Git hooks को सफलतापूर्वक समझ लिया है। हमने ये बातें सीखीं:

  • ये क्या हैं: ऐसी स्क्रिप्ट जो विशिष्ट Git घटनाओं पर अपने-आप चलती हैं।
  • कहाँ रहती हैं: .git/hooks निर्देशिका में।
  • कैसे सक्रिय करें: .sample से नाम बदलें और निष्पादन योग्य बनाएँ।
  • `pre-commit`: कमिट से पहले चलता है और सत्यापन तथा लिंटिंग के लिए उपयोगी है।
  • `post-merge`: मर्ज के बाद चलता है और निर्भरता अपडेट करने या परियोजना को फिर से बनाने के लिए उपयोगी है।

क्लाइंट-पक्ष hooks निजी कार्यप्रवाह स्वचालन और स्थानीय गुणवत्ता-जाँच के लिए शक्तिशाली साधन हैं!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “क्लाइंट-पक्षीय Git हुक” पाठ निःशुल्क है?

हाँ—“क्लाइंट-पक्षीय Git हुक” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“क्लाइंट-पक्षीय Git हुक” में मैं क्या सीखूँगा?

स्थानीय स्तर पर मानक लागू करने के लिए `pre-commit` और `post-merge` जैसे क्लाइंट-पक्षीय हुक को समझें और लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“क्लाइंट-पक्षीय Git हुक” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. क्लाइंट-पक्षीय Git हुक
  2. सर्वर-पक्षीय Git हुक
  3. Git कॉन्फ़िगरेशन और उपनाम
  4. Husky से टीम के साथ हुक साझा करना
← Git उन्नत: मोनोरेपो, सबमॉड्यूल और कार्यप्रवाह पर वापस जाएँ