मैं दौड़ने की कोशिश करता हूँ

गिट रिबेस-आई हेड ~ एन

मेरे पुराने कमिट्स को एक में बदलने के लिए। लेकिन कभी-कभी मुझे मर्ज संघर्ष मिला। समस्या यह है, भले ही मैं संघर्ष को हल करता हूं और "गिट रिबेस --कंटिन्यू" करता हूं, मैंने अपने कई अन्य प्रतिबद्ध परिवर्तन खो दिए हैं।

मैंने इन उत्तरों के आधार पर समस्या को हल करने का भी प्रयास किया: बिना किसी विरोध के शाखा में

0
Paxi 16 नवम्बर 2020, 14:36

3 जवाब

सबसे बढ़िया उत्तर

आप रीसेट --सॉफ्ट का उपयोग करके स्क्वैशिंग के लिए रिबेस का उपयोग करने से बच सकते हैं। मान लें कि आप अपनी वर्तमान शाखा में HEAD~100 से यो स्क्वैश चाहते हैं (HEAD~100 अंतिम जीवित प्रतिबद्धता है जिसे कुचला नहीं जाएगा):

git reset --soft HEAD~100
git commit -m "Squashed stuff"

और बस। कोई विवाद नहीं, कोई झंझट नहीं।

2
eftshift0 16 नवम्बर 2020, 18:05

यदि आपको कई कमिट्स को रिबेस करने की आवश्यकता है जिसमें मर्ज कमिट शामिल है, तो -m विकल्प जोड़ें:

git rebase -i -m HEAD~N

सीक्वेंसर स्क्रिप्ट आपको यह वर्णन करने की अनुमति देगी कि आप उस मर्ज को पुनर्लेखन में कैसे शामिल करते हैं।

1
LeGEC 16 नवम्बर 2020, 15:22

सॉफ्ट रीसेट काम किया गया है, लेकिन मुझे एक बेहतर समाधान मिला। समस्या यह थी कि उन कमिट्स के भीतर पहले से ही एक मर्ज कमिट था जिसे मैं स्क्वैश करना चाहता था। मैंने माता-पिता को प्रतिबद्ध करने के लिए निम्न कोड का उपयोग किया:

git show --pretty=%P COMMIT_HASH

अंत में, मुझे रिबेस करने के लिए पैरेंट कमिट के हैश का उपयोग करना पड़ा।

0
Paxi 10 मार्च 2021, 14:39