ecdpalmabelow ने उल्लेख किया git rebase
के लिए, git 1.7.12+ (अगस्त 2012) विकल्प --root
में इजाफा किया है मिल सकता है:
"git rebase [-i] --root $tip
" अब रूट इतिहास में "$tip
" के लिए अग्रणी सभी इतिहास को फिर से लिखने के लिए उपयोग किया जा सकता है।
नए व्यवहार शुरू में discussed here था:
मैं व्यक्तिगत रूप से लगता है कि "git rebase -i --root
" बस "--onto
" की आवश्यकता के बिना काम करने के लिए और आप करते हैं "संपादित करें" यहां तक कि इतिहास में पहली से एक बना दिया जाना चाहिए।
यह समझ में आता है कि कोई भी परेशान नहीं होता है, क्योंकि लोग अन्यथा की तुलना में इतिहास की शुरुआत के बहुत पीछे फिर से लिखते हैं।
patch followed।
(मूल जवाब, फरवरी 2010)
Git FAQ (और इस SO question) में उल्लेख किया है, विचार है:
- नए अस्थायी शाखा बनाएं
- करने के लिए इसे रिवाइंड क्या आप
git reset --hard
- का उपयोग करके बदलना चाहते हैं कि प्रतिबद्धता बदलें (यह वर्तमान HEAD के शीर्ष पर होगा, और आप कर सकते हैं बदल के लिए प्रतिबद्ध शीर्ष पर किसी भी फ़ाइल की सामग्री)
रिबेस शाखा को संशोधित का उपयोग कर:
git rebase --onto <tmp branch> <commit after changed> <branch>`
चाल यकीन है कि जानकारी आप हटाने के लिए एक से पुनः शुरू नहीं कर रहा है चाहता हूँ बाद में प्रतिबद्ध होना है आपकी फाइल में कहीं और। यदि आपको संदेह है, तो आपको यह सुनिश्चित करने के लिए filter-branch --tree-filter
का उपयोग करना होगा कि उस फ़ाइल की सामग्री में समझदार जानकारी किसी भी प्रतिबद्धता में शामिल न हो।
दोनों मामलों में, आप हर की SHA1 पुनर्लेखन प्रतिबद्ध है, इसलिए सावधान रहना है, तो आप पहले से ही शाखा आप की सामग्री को संशोधित कर रहे हैं प्रकाशित किया है अंत।आपको शायद तब तक ऐसा नहीं करना चाहिए जब तक कि आपकी परियोजना अभी तक सार्वजनिक नहीं है और अन्य लोगों ने उन चीजों से काम नहीं किया है जिन्हें आप फिर से लिखना चाहते हैं।
पर ओएस एक्स माउंटेन शेर प्रणाली से स्थापित Git 1.7.9.6 के साथ उपयोग कर सकते हैं (एप्पल Git-31.1) मैं सेट '<के बाद बदल प्रतिबद्ध>' करने के लिए एक ही हैश मैं 'गीट रीसेट - हार्ड' कमांड में इस्तेमाल किया। उस मामूली परिवर्तन के अलावा, यह रिपो में सभी कामों में लेखक की जानकारी को अपडेट करने के लिए खूबसूरती से काम करता है। – berto
क्या आप $ टिप क्या होना चाहिए इसका उदाहरण प्रदान कर सकते हैं। 'गिट rebase -i --root' मेरे लिए काम किया। –
@ रेमीबेनोइट हां, '$ टिप 'कोई भी प्रतिबद्धता हो सकती है जो आप चाहते हैं। 'मास्टर' (जिसका मतलब है 'मास्टर हेड' प्रतिबद्ध) ठीक है। – VonC