हेलो, हेब्र!
जो लोग Git के साथ काम करते हैं वे
git commit --amend
साथ
अंतिम कमिट को संपादित करने के
तरीके से परिचित हैं। यह मामूली संपादन के लिए सुविधाजनक है (कमेंट में टिप्पणी बदलें, कोड में लाइन को ठीक करें, आदि), क्योंकि अक्सर इस प्रतिबद्ध के बाद प्रतिबद्ध के बारे में अच्छे विचार दिमाग में आते हैं।
लेकिन संपादन के इस तरीके के साथ, आपको सावधान रहना चाहिए जब आप दूरस्थ रिपॉजिटरी के साथ काम कर रहे हों और तब भी अधिक सावधानी बरतें जब आप एक कमांड के भाग के रूप में सोर्स कोड पर काम कर रहे हों।
--amend
विकल्प के सुरक्षित उपयोग का क्षेत्र समाप्त होता है जहां
git push
कमांड के उपयोग का क्षेत्र शुरू होता है।
जब - theamend विकल्प के साथ कमिट किया जाता है, तो एक नई कमिट बनाई जाती है (एक नए हैश के साथ), जो पिछले एक को बदल देती है, और वह पिछली कमिट हिस्ट्री से डिलीट हो जाती है।
यदि आप अपनी पहले से प्रकाशित प्रतिबद्ध (
git push
कमांड द्वारा दूरस्थ रिपॉजिटरी को भेजे गए) को संपादित करते हैं, तो भविष्य में अपने लिए समस्याएं खड़ी करें (जब आप अपनी संपादित प्रतिबद्ध प्रकाशित करने का प्रयास करें) और (
सबसे महत्वपूर्ण! ) उन अन्य डेवलपर्स के लिए समस्याएँ खड़ी करें जो अपने स्थानीय रिपॉजिटरी प्राप्त करने में कामयाब रहे
! पुराना वचन। इस स्थिति में, आप और अन्य डेवलपर्स को स्थिति को ठीक करने के लिए प्रतिबद्ध इतिहास को साफ करने में सिरदर्द प्रदान किया जाता है।
अधिकांश सिफारिशें सलाह के लिए नीचे
आती हैं :
प्रकाशित कमिट्स को पूरा न करें!और सब कुछ बहुत अच्छा होगा अगर
git commit --amend
इतना अच्छा और सुविधाजनक नहीं था! मैं दूरस्थ रिपॉजिटरी में कमिट्स के इतिहास को देखे बिना इसका उपयोग करना चाहता हूं। इसलिए, मुझे इस तरह के चेक को स्वचालित करने की इच्छा थी।
गिट सिस्टम
हुक में ऐसे स्वचालन के लिए, जो कि क्लाइंट की तरफ काम करते हैं, उत्कृष्ट रूप से काम करेंगे। वे सेवा निर्देशिका
.git/hooks
में संग्रहीत हैं और पूर्वनिर्धारित नामों के साथ स्क्रिप्ट फ़ाइलें हैं जो उनके कार्यात्मक उद्देश्य के अनुरूप हैं। मेरे कार्य के लिए, संदेश-
तैयार-संदेश-प्रतिबद्ध के लिए एक संदेश बनाने वाला इंटरसेप्टर उपयुक्त है।
विचार का सार यह है:
- हम
git commit --amend
इंटरसेप्ट करते हैं; - हमें स्थानीय शाखा में अंतिम प्रतिबद्ध का हैश मान मिलता है;
- हमें दूरस्थ शाखा में अंतिम प्रतिबद्ध का हैश मान मिलता है;
- हम उनकी तुलना करते हैं, और यदि वे समान हैं, तो हम एक चेतावनी प्रदर्शित करते हैं और प्रतिबद्ध संदेश की सामग्री पर टिप्पणी करते हैं - ताकि जब आप संपादन से बाहर निकलते हैं, तो खाली संदेश ("खाली प्रतिबद्ध संदेश के कारण गर्भपात करना") के कारण प्रतिबद्ध रद्द हो जाता है।
सामग्री तैयार-प्रतिबद्ध-संदेश
इस हुक के संचालन का एक उदाहरण नीचे दिया गया है:
जैसा कि आप देख सकते हैं, उपयोगकर्ता के पास अभी भी अगर वह चाहे तो प्रतिबद्ध होने का अवसर है - इसके लिए उसे कमिटमेंट के संदेश को अनसुना करना चाहिए। यदि प्रकाशित कमिट्स को संपादित करने के प्रयासों के अधिक कड़े दमन का कार्य है, तो गिट सिस्टम में एक
पूर्व-प्रतिबद्ध इंटरसेप्टर है, जो एक प्रतिबद्ध संदेश बनाने से पहले भी शुरू होता है।