कोई बदलाव और नया संदेश कैसे दें?


137

commitयदि फ़ाइलों में कोई परिवर्तन नहीं किया जाता है तो मैं एक नया और नया संदेश कैसे बना सकता हूं ?

क्या कमिटमेंट कोड (SHA?) समान नहीं होगा?

जवाबों:


168

ऐसा करने के लिए शायद ही कभी एक अच्छा कारण है, लेकिन पैरामीटर --allow-emptyखाली प्रतिबद्ध ( --allow-empty-messageसंदेश नहीं बदला गया) के लिए है, इसके विपरीत खाली प्रतिबद्ध संदेशों के लिए। आप ऑनलाइन डॉक्यूमेंटेशन परgit help commit जाकर या टाइप करके भी पढ़ सकते हैं ।

जबकि ट्री ऑब्जेक्ट (जिसका खुद का एक हैश है) समान होगा, कमिट में वास्तव में एक अलग हैश होगा, क्योंकि यह संभवतः एक अलग टाइमस्टैम्प और संदेश होगा, और निश्चित रूप से एक अलग पैरेंट प्रतिबद्ध होगा। उन तीनों कारकों को gitऑब्जेक्ट हैश एल्गोरिथ्म में एकीकृत किया गया है।


वहाँ हैं कुछ कारणों से आप एक खाली प्रतिबद्ध (टिप्पणियों में से कुछ को शामिल) चाहते हो सकता है:

  • एक "घोषणात्मक प्रतिबद्ध" के रूप में, परीक्षण या लिंट ( रॉबर्ट बालिकी के माध्यम से ) के बारे में तथ्य डेटा सहित कथन या प्रलेखन ( डेविडनीस के माध्यम से ) को जोड़ने के लिए ।
  • gitमनमाने ढंग से परिवर्तन ( वेलस के माध्यम से ) के बिना आदेशों का परीक्षण करना ।
  • एक नष्ट नंगे भंडार का उपयोग करके gitolite( ततश के माध्यम से ) पुनः बनाने के लिए ।
  • मनमाने ढंग से एक नया कमिट बनाने के लिए, जैसे कि री-ट्रिगरिंग बिल्ड टूलिंग ( मैटमेलुमस के माध्यम से ) या व्यक्तिगत लॉगिंग या मेट्रिक्स ( डायनामाइट्रेड के माध्यम से ) के लिए। हालाँकि, दो बार सोचें: आपकी शाखा / मर्ज संरचना के आधार पर, कमिट बहुत लंबे समय तक रह सकती है, इसलिए "बस कुछ भी नहीं" रणनीति अनजाने में अस्थायी वर्कफ़्लो कलाकृतियों के साथ आपकी टीम की रिपॉजिटरी को प्रदूषित कर सकती है और इससे कोड संशोधन को अलग करना मुश्किल हो सकता है। पंचांग cruft।

मेटाडेटा को एक पेड़ में जोड़ने के लिए अन्य रणनीतियों में शामिल हैं:

  • अलग शाखाएँ या हल्के टैग्स जो हमेशा एक विशेष स्थिति (जैसे "अंतिम स्वीकृत कमिट" या "वर्तमान स्टेजिंग कमिट") की ओर इशारा करते हैं।
  • टाइमस्टैम्प, कमिटर और मैसेज को रिकॉर्ड करने के तरीके के लिए एनोटेट टैग , मौजूदा ट्री में एंट्री किए बिना ही मौजूदा कमेंट की ओर इशारा करता है।
  • git notes मौजूदा अपरिवर्तनीय प्रतिबद्ध के शीर्ष पर एक म्यूटेबल नोट को संबद्ध करने के लिए।

2
मैंने git flow ब्रांच मॉडल का पालन करना शुरू कर दिया है । जब आप एक devशाखा का रूप बनाते हैं masterऔर फिर featतुरंत एक शाखा बनाते हैं dev, तो featशाखा शाखा से आती दिखती है masterक्योंकि devजिस featशाखा से शाखा आती है उस पर कोई भेद नहीं होता है। जब आप पहली बार devशाखा बनाते हैं तो एक खाली प्रतिबद्ध शाखा को स्थापित करने में मदद करती है devक्योंकि यह अनिश्चित काल तक चलने वाली स्थायी शाखा है master। आम तौर पर यह तब मददगार होता है जब आप परतों के रूप में शाखाओं का उपयोग करते हैं, और एक सिंगल कमिट से दो लेयर बनाते हैं
C

2
एक और कारण: यदि आप धक्का देने से पहले अपने प्रतिबद्ध संदेश में से कुछ महत्व छोड़ देते हैं, तो आप ऐसा नहीं कर सकते हैं commit --amendयदि रिमोट बल को धक्का देने की अनुमति नहीं देता है। इस तरह आप डेवलपर्स को एक महत्वपूर्ण संदेश देखने की अनुमति दे सकते हैं जो पिछली प्रतिबद्ध के साथ जाता है।
एंडी जे

1
मैं ऐसा करना चाहता हूं क्योंकि मैंने एक कमिट को आगे बढ़ाया, लेकिन कमिट मैसेज में कुछ बताना भूल गया। हमारे प्रतिबद्ध संदेश समस्या ट्रैकिंग और निरंतर एकीकरण सॉफ्टवेयर के साथ एकीकृत हैं और प्रतिबद्ध संदेश की सामग्री उन अनुप्रयोगों को प्रभावित करती है। क्या कोई बेहतर तरीका है? यह मेरे मामले में सबसे अच्छा समाधान की तरह लगता है। केवल एक चीज जिसकी मैं कल्पना कर सकता हूं, वह किसी भी तरह पिछली प्रतिबद्धता को वापस लाने में सक्षम होगी।
sytech

1
मैंने इसका इस्तेमाल हमारे प्री-कमिट हुक को ट्रिगर करने के लिए किया था, जो डेटाबेस को स्क्रिप्ट करता है। इसलिए परिवर्तन हुए थे, बस स्क्रिप्ट के चलने के बाद तक उन्हें नहीं देखा जा सका। इसे मैन्युअल रूप से चलाया जा सकता था, लेकिन फिर वह स्क्रिप्ट को दो बार चलाएगा।
योयोडोन

1
बहुत उपयोगी जब gitub और gogs के रूप में git सर्वर के लिए ट्रैकिंग ट्रैकिंग बेसिन के साथ बातचीत।
साइमनएफ

37

अगर मैंने आपको सही समझा, तो आप एक खाली कमिट करना चाहते हैं। उस मामले में आप की जरूरत है:

git commit --allow-empty

35

एक संदेश के साथ खाली प्रतिबद्ध

git commit --allow-empty -m "Empty test commit"

खाली मैसेज के साथ कमिट करें

git commit --allow-empty --allow-empty-message

3

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


3

हो सकता है कि अधिक समझदार विकल्प के रूप में, आप एक एनोटेट टैग (संदेश के साथ नामांकित कमिट) बना सकते हैं। git tag -aविकल्प देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.