आप
git filter-branch -f --msg-filter 'sed "s/<old message>/<new message>/g"' -- --all
उपयोग करने के लिए प्रतिबद्ध संदेश को बदलने के लिए चाहते हो सकता है आप कई शाखाओं (जैसे कि, गलत संदेश के साथ प्रतिबद्ध कई शाखाओं में मौजूद है) पर एक पुराने प्रतिबद्ध संदेश को बदलने के लिए है।
गिट पुन: लिखने के लिए एक अस्थायी निर्देशिका तैयार करेगा और अतिरिक्त रूप से रीफ/मूल/में पुराने संदर्भों का बैकअप देगा।
-f
ऑपरेशन के निष्पादन को लागू करेगा। यह आवश्यक है यदि अस्थायी निर्देशिका पहले से मौजूद है या रेफ/मूल के तहत पहले से मौजूद संदर्भ हैं। यदि ऐसा नहीं है, तो आप इस ध्वज को छोड़ सकते हैं।
--
संशोधन विकल्पों
--all
से फिल्टर शाखा विकल्पों को अलग करती है सुनिश्चित करेंगे कि सभी शाखाओं और टैग फिर से लिखा जाता है।
अपने पुराने संदर्भों के बैकअप के कारण, आप आसानी से आदेश निष्पादित करने से पहले राज्य में वापस जा सकते हैं।
कहो, आप old_master शाखा में अपने गुरु और यह फिर से पहुँच प्राप्त करना चाहते हैं:
git checkout -b old_master refs/original/refs/heads/master
आप संतुष्ट अपने परिवर्तनों -f Git धक्का का उपयोग के साथ अपने सार्वजनिक रेपो में परिवर्तन पुश करने के लिए कर रहे हैं के बाद।
ध्यान दें कि आपको अपने सहयोगियों को इस बारे में सूचित करना चाहिए क्योंकि पहले संशोधित एक से शुरू होने वाले कामों के सभी हैंश बदल दिए गए हैं।
जटिलता (?): 'खराब' (मेरे द्वारा प्रकाशित) के बाद कुछ अन्य काम हैं – jonny
क्या यह एक डुप्लिकेट नहीं है [मैं रिमोट गिट रेपो में संशोधित प्रतिबद्धता कैसे बढ़ा सकता हूं?] (Http: // stackoverflow .com/प्रश्न/253,055/कैसे करते हैं-ए-धक्का-संशोधन-लिखें करने वाली-रिमोट Git-रेपो)? –