2011-10-15 3 views
15

मेरे पास गिट के साथ एक अजीब सेटअप है। असल में मेरे पास है:जीआईटी: रिमोट रेपो पर धकेलने वाले कई कामों को कैसे स्क्वैश करें?

[client 1] <---> [remote repo] ----> [client 2] 

[क्लाइंट 1] अनिवार्य रूप से स्थानीय रेपो के साथ मैं काम कर रहा हूँ, क्योंकि मैं संकलन नहीं कर सकता/मेरे स्थानीय मशीन पर परियोजना का निर्माण।

[क्लाइंट 2] भवन के लिए एक दूरस्थ सर्वर है।

बीच में, मेरे पास एक और रेपो, [रिमोट रेपो] है, मूल रूप से मेरी कंपनी में एक सीवी केंद्रीय रेपो के साथ सिंक्रनाइज़ करने के लिए, और मेरे [क्लाइंट 1] और [क्लाइंट 2] के बीच सिंक्रनाइज़ करने के लिए।

चूंकि सभी संकलन/भवन [क्लाइंट 2] पर किया जाता है, इसलिए संकलन या निर्माण त्रुटियों को ठीक करने के लिए मेरे पास [क्लाइंट 1] पर कई छोटी सी चीजें हैं।

तो जब तक मुझे लगता है कि आखिरी प्रतिबद्धता में त्रुटियां हैं, तो यह बहुत देर हो चुकी है क्योंकि प्रतिबद्धता को पहले से ही रिमोट रेपो से हटा दिया गया है और खींच लिया गया है।

मैं इन (कई) तुच्छों को कैसे स्क्वैश कर सकता हूं? धन्यवाद।

उत्तर

24

सबसे पहले, स्क्वैशिंग से बचें और सामान्य पुनर्लेखन इतिहास में जब तक कि आपको बिल्कुल नहीं करना पड़े। "तुच्छ" काम करने के कारण धक्का कमाने का कारण नहीं है। अगर वे रह सकते हैं, तो उन्हें रहने दो। और फिर से लिखना इतिहास सीवी में सीधा नहीं है, इसलिए जब से यह काम सीवीएस रेपो में अपना रास्ता बना देता, तो आपको शायद इसके साथ रहना चाहिए।

गिट रिमोट रेपो के लिए, यदि आप आगे बढ़ना चाहते हैं - मुझे लगता है कि आप अपने स्थानीय रेपो (git rebase -i सीधा है) पर काम करने के लिए जानते हैं। स्क्वैश के बाद, एक -f - एक बल धक्का के साथ धक्का।

12

आप git rebase -i या git merge --squash साथ करता छुटकारा पाने कर सकते हैं, Squash my last X commits together using Git

देख लेकिन चूंकि आप पहले से ही उन्हें एक और भंडार करने के लिए प्रकाशित किया है आप दूसरों पर इसे ठीक करने के लिए है। काफी बोझिल, लेकिन git push --force वह आदेश है जो आपको चाहिए, हालांकि।

यह अनुशंसित नहीं है, हालांकि: अगर रिमोट रेपो पहले से ही सीवीएस के साथ सिंक हो गया है तो आपको इसे भी ठीक करना होगा ... वही बात अगर अन्य देवताओं ने इसे पहले ही खींच लिया है।

+0

उत्तर के लिए धन्यवाद। खेद है कि मैंने मैनोजल्ड के जवाब को स्वीकार कर लिया क्योंकि वह थोड़ी देर पहले था, क्योंकि दोनों जवाब काफी समान हैं – wei

संबंधित मुद्दे