द्वारा इसे प्रतिस्थापित करने के लिए मुझे एक इंटरैक्टिव रीबेस स्वचालित करने या अन्य आदेशों से इसे बदलने की आवश्यकता है। बस मुझे अपनी वर्तमान स्थिति समझाएं:गिट: इंटरैक्टिव रीबेस को स्वचालित करने के लिए/समकक्ष गिट कमांड
एक svn-> गिट संक्रमण में मुझे एसवीएन के दौरान किए गए "इतिहास कट ऑफ" को ठीक करने के लिए नव निर्मित गिट भंडार को पुनर्जीवित करने की आवश्यकता है। समस्या को ठीक करने के लिए यहां मेरा मैन्युअल वर्कफ़्लो है।
branchNEW: containing history from SOMEDAY until now
branchOLD: containing history from past to SOMEDAY
संपादित या ascii के रूप में:
branchNEW: Y - Z
branchOLD: W - X
दोनों शाखाओं कोई आम करता है।
मूलभूत विचार अब शाखा के ऊपर शाखा को पुनर्स्थापित करना है। दुर्भाग्यवश कुछ समय पहले कुछ रिफैक्टरिंग कर रहे हैं: कुछ फाइलें दूसरी निर्देशिका में ले जाया गया था। रिबेस का नतीजा अब है, कि प्रत्येक स्थानांतरित फ़ाइल दोनों जगहों पर मौजूद है।
संपादित
some file exist in X
the (nearly) same files also exist in Y, just on another path
branchNEW: W - X - Y - Z
(after rebase)
रिबेस के बाद, सिर अब एक्स के फ़ाइलें हैं और Y के मैं भी जोड़ने के लिए नया branchOLD जो पुरानी फ़ाइलों को हटा करने के लिए प्रतिबद्ध की कोशिश की। रिबेस एसवीएन-हेड और गिट-हेड बाइनरी समान होने के बाद, लेकिन "गिट लॉग - फॉलो" काम नहीं करता है।
अब मुख्य समस्या यह है: मैं एक दूसरे, इंटरैक्टिव रिबेस का उपयोग करके इसे ठीक करने में सक्षम हूँ:
git rebase -i SHA
SHA वर्ष जड़ का SHA-आईडी branchNEW में प्रतिबद्ध है। अब संपादक में मुझे शीर्षतम प्रतिबद्धता के लिए "पिक" को "संपादित करें" में बदलना होगा। संपादक से बाहर निकलने के बाद मैं अब Git के इस प्रमुख के बाद गलत फ़ाइलों
git rm -f fileA fileB
git commit --amend
git rebase --continue
हटाने के लिए SVN की और इसके अलावा में सिर करने के लिए द्विआधारी समान है, Git पूरा इतिहास "Git लॉग --Follow" काम करता है और यह भी स्थानांतरित फ़ाइलों के लिए।
चूंकि यह चरण भविष्य में एक विशाल वीसीएस संक्रमण का एक छोटा सा हिस्सा है, इसलिए मुझे पूरी प्रक्रिया को स्क्रिप्ट करने की आवश्यकता है। लेकिन उपरोक्त चरणों को स्वचालित करने के लिए कैसे?
(मुझे पता है कि शास ही नहीं रहेंगे, लेकिन मैं SVN-आईडी जो प्रत्येक में अंतर्निहित है प्रतिबद्ध संदेश से आवश्यक SHA प्राप्त करने में सक्षम हूँ)
मुझे यकीन है कि नहीं कर रहा हूँ, लेकिन शायद 'Git फिल्टर-branch' आप मदद कर सकता है। – Jubobs