मैं टैग संदेशों को संशोधित करने के लिए git filter-branch का उपयोग कैसे कर सकता हूं? ऐसा प्रतीत होता है कि --msg-filter विकल्प का उपयोग केवल नियमित प्रतिबद्ध संदेशों को संशोधित करता है, लेकिन एनोटेट टैग के संदेशों को नहीं।

0
user1585916 25 जून 2019, 23:23

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 निर्देशिका में सहेजता नहीं है जैसा कि यह बिना संदर्भित कमिट और ब्लब्स के लिए करता है।

2
torek 26 जून 2019, 01:11