मैं दौड़ने की कोशिश करता हूँ
गिट रिबेस-आई हेड ~ एन
मेरे पुराने कमिट्स को एक में बदलने के लिए। लेकिन कभी-कभी मुझे मर्ज संघर्ष मिला। समस्या यह है, भले ही मैं संघर्ष को हल करता हूं और "गिट रिबेस --कंटिन्यू" करता हूं, मैंने अपने कई अन्य प्रतिबद्ध परिवर्तन खो दिए हैं।
मैंने इन उत्तरों के आधार पर समस्या को हल करने का भी प्रयास किया: बिना किसी विरोध के शाखा में
3 जवाब
आप रीसेट --सॉफ्ट का उपयोग करके स्क्वैशिंग के लिए रिबेस का उपयोग करने से बच सकते हैं। मान लें कि आप अपनी वर्तमान शाखा में HEAD~100 से यो स्क्वैश चाहते हैं (HEAD~100 अंतिम जीवित प्रतिबद्धता है जिसे कुचला नहीं जाएगा):
git reset --soft HEAD~100
git commit -m "Squashed stuff"
और बस। कोई विवाद नहीं, कोई झंझट नहीं।
यदि आपको कई कमिट्स को रिबेस करने की आवश्यकता है जिसमें मर्ज कमिट शामिल है, तो -m
विकल्प जोड़ें:
git rebase -i -m HEAD~N
सीक्वेंसर स्क्रिप्ट आपको यह वर्णन करने की अनुमति देगी कि आप उस मर्ज को पुनर्लेखन में कैसे शामिल करते हैं।
सॉफ्ट रीसेट काम किया गया है, लेकिन मुझे एक बेहतर समाधान मिला। समस्या यह थी कि उन कमिट्स के भीतर पहले से ही एक मर्ज कमिट था जिसे मैं स्क्वैश करना चाहता था। मैंने माता-पिता को प्रतिबद्ध करने के लिए निम्न कोड का उपयोग किया:
git show --pretty=%P COMMIT_HASH
अंत में, मुझे रिबेस करने के लिए पैरेंट कमिट के हैश का उपयोग करना पड़ा।
संबंधित सवाल
नए सवाल
git
Git एक ओपन-सोर्स वितरित संस्करण नियंत्रण प्रणाली (DVCS) है। Git उपयोग और वर्कफ़्लो से संबंधित प्रश्नों के लिए इस टैग का उपयोग करें। जीआईटी-संबंधित मुद्दों के लिए [github] टैग का उपयोग केवल इसलिए न करें क्योंकि GitHub पर एक रिपॉजिटरी को होस्ट किया जाना है। इसके अलावा, सामान्य प्रोग्रामिंग प्रश्नों के लिए इस टैग का उपयोग न करें जो कि Git रिपॉजिटरी को शामिल करने के लिए होता है।