जवाबों:
stiging
शाखा को अपडेट करें और इसकी एक नई शाखा बनाएं। फिर पुरानी शाखा को बंद करें।
संक्षेप में:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
। उदाहरण के लिए hg branch --force v3
:। यह hg update v3
नई v3
शाखा में अपडेट हो जाएगा , जैसा कि आप चाहते थे।
stiging
ब्रांचिंग से पहले बंद हो जाते हैं , तो आपको "ढीला अंत" नहीं मिलता है
भविष्य के पाठकों के लिए: rebase
विस्तार के साथ , आप एक ही माता-पिता के साथ एक नई शाखा बना सकते हैं stiging
और पूरी शाखा इतिहास को इस तरह स्थानांतरित कर सकते हैं :
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
यह मानता है कि stiging
केवल एक माता-पिता हैं। बेशक आप इसके बजाय केवल स्पष्ट संशोधन संख्या का उपयोग कर सकते हैं।
नोट 1: शाखा तो stiging
अन्य शाखाओं के साथ मर्ज के भी शामिल है, मैं लगता है कि यह उन्हें सुरक्षित करेगा, जब तक कि staging
और stiging
एक ही मूल है। लेकिन मैं निश्चित रूप से डबल-चेक करूंगा।
नोट 2: चूंकि यह इतिहास संपादित करता है, इसलिए पुरानी शाखा क्लोन किए गए रिपॉजिटरी ( rebase
प्रलेखन देखें ) से गायब नहीं होगी । जब तक हर कोई नए सिरे से क्लोन नहीं कर सकता, यह एक बड़े समूह के लिए बहुत व्यावहारिक समाधान नहीं हो सकता है।
Note3 / Edit (@JasonRCoombs के सौजन्य से): अब जब चरण मानक में मानक हैं, rebase
तो पहले से धकेल दिए गए परिवर्तनों को संशोधित करने से इनकार कर देंगे। या तो इसे चरणबद्ध तरीके से बदलकर ड्राफ्ट ( hg phases
) के साथ बदल दें, या पुरानी शाखा को वहीं रहने दें, और बस एक ठीक से नामांकित प्रतिलिपि बनाएं (उदाहरण के लिए, `hg rebase --keep 'के साथ)।
hg convert
इसके बजाय उपयोग करें ।
--keep
रिबेस कमांड को पास करें, जो परिवर्तनों को स्थानांतरित करने के बजाय कॉपी करेंगे।
abort: can't rebase immutable changeset 11b1e2b7dc4f
:। ध्यान दें कि मैंने इस एक में दूसरी शाखा से परिवर्तनकारी परिवर्तन किया है। इसके अलावा, यह विभाजित और मुक्त विलय है।
.
अपने --dest
मूल्य के लिए उपयोग कर सकते हैं और छूट स्वचालित रूप से नई शाखा के नाम पर ले जाएगी।
यदि आपके पास इस पर परिवर्तन हैं , तो आपको इसका नाम बदलने के लिए ब्रांचमैप के साथ कन्वर्ट एक्सटेंशन का उपयोग करना होगा। फिर सभी को नई रेपो क्लोन करना होगा या पुरानी शाखा को बंद करना होगा।
यह इतिहास को संशोधित करता है और केवल उन्नत Mercurial उपयोगकर्ताओं के लिए है। अगर आपको इसका मतलब नहीं पता है तो ऐसा न करें।
यदि स्टिंगिंग केवल स्थानीय है, तो आप इसे ग्राफ्ट और स्ट्रिप के संयोजन से स्टेजिंग में बदल सकते हैं । पूर्वजों के परिवर्तन से अपडेट करके शुरू करें जहां स्टिगिंग ने विचलन किया था। स्टेजिंग ब्रांच बनाएं और प्रत्येक कमेंट को स्टिंगिंग से स्टेजिंग तक करें। स्टेजिंग अब स्टिगिंग की कॉपी होनी चाहिए। अंत में, अपनी पहली प्रतिबद्धताओं को छीनकर कलंक को नष्ट करें।
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}