2012-03-13 13 views
8

मैं एक ऐसे ग्राहक के साथ काम करने के लिए गिट svn का उपयोग कर रहा हूं जिसमें एक svn भंडार है (हमारी सामग्री github में है)।गिट svn rebase हमेशा अपने स्वयं के कामों के साथ संघर्ष करता है

तो मैं निर्देशों का पालन करें और एक Git SVN रिबेस और उसके बाद करना Git SVN dcommit

कि बहुत पहले समय के लिए काम किया है, लेकिन फिर हमेशा रिबेसिंग जब से पर विरोध करता है लगभग हर प्रतिबद्ध। ऐसा लगता है जैसे यह महसूस नहीं करता कि कौन सा काम करता है, और शिकायत करता है कि चीजें विरोधाभासी हैं। हर बार मुझे रीबेज गिट करना पड़ता है - जब तक यह उनसे गुजरता है और सफलतापूर्वक मेरे नवीनतम कामों को लागू नहीं करता तब तक मेरा रास्ता छोड़ दें। यह कभी पता नहीं चला कि आखिरी बार मैंने कब किया था (जो मुझे विश्वास है कि क्या होने वाला है)।

सबसे पहले ... क्यों? तो क्या मैं इसे किसी भी तरह से प्राप्त कर सकता हूं?

First, rewinding head to replay your work on top of it... 
Applying: Deleting their old build management stuff as its pretty crappy. Will re-build at some point. 
Using index info to reconstruct a base tree... 
Falling back to patching base and 3-way merge... 
No changes -- Patch already applied. 
Applying: Added some error checking around Android specific calls 
Using index info to reconstruct a base tree... 
<stdin>:16: space before tab in indent. 
      Android.hideKeyboard(); 
<stdin>:31: space before tab in indent. 
        Android.launchNewAccount(); 
warning: 2 lines add whitespace errors. 
Falling back to patching base and 3-way merge... 
CONFLICT (modify/delete): src/LoginForm.js deleted in HEAD and modified in Added some error checking around Android specific calls. Version Added some error checking around Android specific calls of src/LoginForm.js left in tree. 
Auto-merging src/ChildPanel.js 
CONFLICT (content): Merge conflict in src/ChildPanel.js 
Failed to merge in the changes. 
Patch failed at 0002 Added some error checking around Android specific calls 

When you have resolved this problem run "git rebase --continue". 
If you would prefer to skip this patch, instead run "git rebase --skip". 
To check out the original branch and stop rebasing run "git rebase --abort". 

उत्तर

7

मुझे नहीं पता कि आप इस स्थिति में खुद को कैसे प्राप्त करते हैं, लेकिन मैं आपको बता सकता हूं कि खुद को कैसे बाहर निकालना है।

सबसे पहले, अपस्ट्रीम एसवीएन के आधार पर एक नई शाखा बनाएं: git checkout -b mynewbranch refs/remotes/oldbranch (यहां गिट-एसवीएन रेफरी आईडी का उपयोग करें)।

फिर, इसे जांचें: git checkout mynewbranch

अंत में, करता अपनी नई शाखा (git cherry-pick refs/remotes/oldbranch..oldbranch की तरह कुछ जो SVN करने के लिए प्रतिबद्ध नहीं कर रहे थे से चेरी लेने।

समस्याओं आप देख रहे हैं का सबसे संभावित कारण यह है कि आप धक्का देने के बाद इतिहास दुबारा लिखा एसवीएन में परिवर्तन; जब आप प्रतिबद्ध बनाने के लिए git-svn का उपयोग करते हैं, तो यह को प्रतिबद्ध लॉग में रखता है, जो संशोधन हैश को बदलता है। यदि आप फिर प्रतिबद्धता को स्थानांतरित करते हैं, तो आप वैकल्पिक ब्रह्मांड में काम करना शुरू करते हैं जहां एसवीएन संस्करण गैर-एसवीएन स्थानीय लोगों के साथ संघर्ष।

+1

हाहा। अपनी शुरुआती रेखा से प्यार करो। मैं इसे एक शॉट धन्यवाद दे दूँगा! –

+1

मुझे लगता है कि गिट-एसवीएन रेफरी आईडी का मतलब है कि शाखा का नाम 'रिमोट्स/गिट-एसवीएन' है? –

+1

एर ... गिट सह एक कमांड नहीं है। गिट चेकआउट मुझे लगता है? (बस यह सुनिश्चित कर लें कि मैं उस बिंदु पर गिट svn का उपयोग नहीं कर रहा हूं) –

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