2011-06-06 16 views
7

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

तो, मेरे पास 2 प्रतिनिधि, एक विकास और एक उत्पादन है। मुझे उत्पादन में कुछ संपादित करना पड़ा क्योंकि यह एक जरूरी बगफिक्स था, और अब मेरे पास 3 फाइलें हैं जो विकास के मुकाबले उत्पादन में नए हैं। तो मैंने जो किया वह 3 फाइलों के उत्पादन पर प्रतिबद्ध था और एक पुल की कोशिश की लेकिन उसने मुझे बताया कि विलय त्रुटियां थीं। मैंने विकास फ़ाइलों को नई फाइलों की प्रतिलिपि बनाने और चिपकाने की कोशिश की और पूरी चीज को फिर से प्रयास किया और यह काम नहीं किया.अब मुझे यकीन है कि मुझे जो चाहिए वह विकास पर है (जब से मैंने इसकी प्रतिलिपि बनाई और चिपकाया) और धन्यवाद, तो मैं कैसे खींच सकता था और विरोधाभासी फाइलों को ओवरराइट करें?

धन्यवाद, आंद्रे

---- संपादित @Seths अप करने के लिए निम्नलिखित उत्तर

ठीक है, मुझे लगता है कि मैं अपने प्रश्न reword करने की आवश्यकता है :) मैं 3 रेपोस है। एक देव, एक जिथूब और एक उत्पादन में। आम तौर पर उत्पादन को अपडेट करने के लिए मैं सिर्फ देव से गीथब, गिट पुल मूल मास्टर (जीथब से उत्पादन तक) तक एक धक्का करता हूं और यह काम करता है। दुर्भाग्यवश, मैंने बिना उत्पादन किए उत्पादन पर फ़ाइलों को बदल दिया। पुल की कोशिश करते समय मर्ज करने के बजाय मैं ओवरराइट कैसे करूं?

उत्तर

22

क्या आप कुछ और करना चाहते हैं तो पूरी तरह से दूरदराज के शाखा मूल/foo

git fetch origin 
git checkout foo 
git reset --hard origin/foo 

की सामग्री के साथ अपनी स्थानीय शाखा foo बदलना चाहते हैं, आपके सवाल reword करें। हालांकि, मैं रिमोट के रूप में उत्पादन गिट रेपो जोड़ सकता हूं और जो कुछ भी आपने कोशिश की है, उसके बजाय लाइव बदलावों को मर्ज कर सकता हूं।

+0

ठीक है, मुझे लगता है मुझे अपने प्रश्न को दोबारा करने की आवश्यकता है :) मेरे पास 3 प्रतिनिधि हैं। एक देव, जिथब में से एक और एक उत्पादन आम तौर पर उत्पादन को अद्यतन करने के लिए मैं देव से गीथब, गिट पुल मूल मास्टर (जीथब से उत्पादन तक) तक एक धक्का करता हूं और यह काम करता है। दुर्भाग्यवश, मैंने बिना उत्पादन किए उत्पादन पर फ़ाइलों को बदल दिया। पुल की कोशिश करते समय मर्ज करने के बजाय मैं ओवरराइट कैसे करूं? – Andre

+0

@ user786463: मेरे उत्तर में वास्तव में क्या गलत है? ऐसा लगता है कि आपने जो कुछ पूछा ("foo" के मूल्यों के लिए शायद "मास्टर" के बराबर)। जब आप पूरा कर लें तो सही जवाब स्वीकार करना याद रखें। –

+0

एक आकर्षण की तरह काम किया! धन्यवाद। मुझे नहीं पता था कि 'foo' के साथ क्या बदला जाए। – Andre

1

आपको पहले उत्पादन से पहले जिथब में धक्का देना होगा।

git push origin yourbranch --force 

बल यह सुनिश्चित करेगा कि जीथब के पास क्या उत्पादन है।

आप अपने विकास में लाने के लिए की आवश्यकता होगी तैनाती रेपो में परिवर्तन रेपो:

यहाँ आप क्या कर सकते हैं की संभावनाएं हैं। इस बिंदु पर आप देखेंगे कि इतिहास शाखा है (git log --all --graph या gitk --all के माध्यम से)।

git fetch origin 

अब आप rebase या अपने नवीनतम परिवर्तनों के उत्पादन रेपो पर किए गए लोगों के लिए बाद में होने के लिए प्राप्त करने के लिए विलय कर सकते हैं। यह आपको बाद में बिंदु पर अपने तैनाती रेपो में परिवर्तन को धक्का देगा।

संघर्ष एक कारण के लिए हैं। उन्हें देखो और उन्हें हल करें, जोड़ें और प्रतिबद्ध करें।

यदि आप चाहते हैं संघर्ष लेने क्या उत्पादन पक्ष आप "पुनरावर्ती उनकी" रणनीति का उपयोग कर सकते पर है द्वारा हल किया जा करने के लिए:

git merge -s recursive -Xtheirs production/yourbranch 

आप अपनी तरफ से कोई बदलाव नहीं ले जाना चाहते हैं, तो सामान्य रूप से विलय , लेकिन संघर्षों पर रुकने पर, विलय के दूसरे पक्ष को प्राप्त करें, जोड़ें और प्रतिबद्ध करें।

git merge production/yourbranch 
git checkout production/yourbranch -- . 
git submodules update #this is optional and can be skipped if you don't have any submodules 
git add -A 
git commit 

अब बाद में विकास से जिथब को धक्का देता है और उत्पादन में जिथब से खींचता है।

आप शाखा को रीसेट कर सकते हैं, लेकिन यह मानता है कि आप विकास रेपो पर किए गए किसी भी बदलाव को नहीं रखना चाहते हैं।

git reset --hard production/yourbranch 

उम्मीद है कि इससे मदद मिलती है।

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