मैं टैग संदेशों को संशोधित करने के लिए git filter-branch
का उपयोग कैसे कर सकता हूं? ऐसा प्रतीत होता है कि --msg-filter
विकल्प का उपयोग केवल नियमित प्रतिबद्ध संदेशों को संशोधित करता है, लेकिन एनोटेट टैग के संदेशों को नहीं।
1 उत्तर
आप नहीं कर सकते। लेकिन इससे कोई फर्क नहीं पड़ता, क्योंकि इसका कोई मतलब नहीं है।
एक रिपॉजिटरी में git filter-branch
नए कमिट जोड़ना क्या करता है। सामान्य तौर पर, आप कमिट्स से भरा एक मौजूदा रिपॉजिटरी लेते हैं, एक या एक से अधिक "खराब" की पहचान करते हैं, और Git को बताते हैं: . यदि नई कमिट 100% समान है, बिट-फॉर-बिट, मूल के लिए—यदि फ़िल्टर ने कोई परिवर्तन नहीं किया है—गिट मूल कमिट का पुन: उपयोग अप करता है। अन्यथा, गिट एक नई और बेहतर प्रतिबद्धता बनाता है, जिसमें मूल सुधार के साथ जो कुछ भी गलत था और/या अन्य को संदर्भित करता है नया icky पुराने के बजाय करता है।
आपका काम एक नया टैग (टाइप एनोटेट टैग) बनाना है जो पिछले टैग के समान पुराने मौजूदा कमिट को संदर्भित करता है (टाइप एनोटेट टैग का भी)। आपको कोई नया कमिट जोड़ने की आवश्यकता नहीं है।
आप जो चाहते हैं उसे करने के लिए, बस नया टैग बनाएं। पुराने एनोटेटेड टैग को रास्ते से हटाने के लिए आपको पहले उसका नाम बदलना या हटाना होगा। एक टैग का नाम बदलने के लिए कोई आदेश नहीं है (यदि यह अनपैक किया गया है तो आप धोखा दे सकते हैं, लेकिन अगर इसे पैक किया गया है तो यह काम नहीं करेगा), इसका मतलब है कि आपको अनिवार्य रूप से पुराने टैग को हटाना होगा। पहले लक्ष्य प्रतिबद्ध हैश को सहेजना सुनिश्चित करें, क्योंकि टैग को हटाने से 1 को फिर से खोजना असंभव हो जाएगा।
अत:
git rev-parse existing-tag^{commit}
प्रतिबद्ध हैश आईडी प्राप्त करने के लिए, फिर:
git tag -d existing-tag
फिर:
git tag -a existing-tag hash
जहां hash
git rev-parse
द्वारा मुद्रित बड़ी बदसूरत हैश आईडी है।
1तकनीकी रूप से, आप इसे ढूंढ सकते हैं, लेकिन यह बहुत कठिन है, विशेष रूप से क्योंकि git fsck
गैर-संदर्भित टैग ऑब्जेक्ट को lost-found
निर्देशिका में सहेजता नहीं है जैसा कि यह बिना संदर्भित कमिट और ब्लब्स के लिए करता है।
संबंधित सवाल
नए सवाल
git
Git एक ओपन-सोर्स वितरित संस्करण नियंत्रण प्रणाली (DVCS) है। Git उपयोग और वर्कफ़्लो से संबंधित प्रश्नों के लिए इस टैग का उपयोग करें। जीआईटी-संबंधित मुद्दों के लिए [github] टैग का उपयोग केवल इसलिए न करें क्योंकि GitHub पर एक रिपॉजिटरी को होस्ट किया जाना है। इसके अलावा, सामान्य प्रोग्रामिंग प्रश्नों के लिए इस टैग का उपयोग न करें जो कि Git रिपॉजिटरी को शामिल करने के लिए होता है।