2012-05-11 32 views
13

मान देता है कि हम एक विकास शाखा 'ए' है, और दो उप शाखाओं 'बी 1' और 'बी 2', (दोनों एक से लिया गया)। है कि आप पूरी परियोजना पर (ReSharper की सफाई कोड हमारे मामले में) B1 और B2 में एक प्रारूप कोड आदेश चलाने का कहना है की सुविधा देता है।गिट मर्ज ऑपरेशन कैसे करें दोनों शाखाओं में किए गए समान परिवर्तनों को अनदेखा करते हैं?

अब, जब हम बी 2 में बी 2 को मर्ज करने का प्रयास करते हैं, तो गिट परियोजना में सभी फाइलों पर विवादों की रिपोर्ट करेगा (हमारे मामले में काफी बड़ी संख्या)। प्रत्येक संघर्ष के करीब दिखते समय, ऐसा लगता है कि गिट सोचता है कि बी 1 और बी 2 (?)

दोनों में एक ही तरह का परिवर्तन किया गया था, भले ही एक ऐसा तरीका है, कस्टम ड्राइवर/गिट विशेषता आदि जो एक तरीका बनायेगा, कस्टम ड्राइवर/गिट विशेषता आदि गिट मर्ज ऑपरेशन एक संघर्ष की रिपोर्ट नहीं करता है अगर बी 1 और बी 2 में फाइलें बिल्कुल समान हैं?

शायद मैं गलत यह मिल गया है, हो सकता है यह एक खाली स्थान के/लाइन समाप्त होने मुद्दा है (उदाहरण के लिए अलग-अलग लाइन अंत B1 और B2) जो मामले में मैं ढेर अतिप्रवाह पर यहाँ समाधान पा सकते हैं।

+1

आप एक संपादक में फ़ाइलों को खोलने के द्वारा संघर्ष का निरीक्षण कर सकते हैं, तो आप क्यों Git संघर्ष – CharlesB

+2

देखता है कितना काम पुनर्रचना के अलावा अन्य इन शाखाओं में प्रदर्शन किया गया था देखने के लिए सक्षम हो जाएगा? मैं विशेष रूप से गिट के लिए बात नहीं कर सकता, लेकिन आम तौर पर, आप इसे केवल एक शाखा में करेंगे, माता-पिता में परिवर्तनों को मर्ज करें, फिर दूसरी शाखा को उस रिफैक्टर को उठाएं। – OrionRogue

+0

क्या आपने kitiff3 को गिट में mergetool के रूप में उपयोग करने का प्रयास किया था? यह आम तौर पर उन छोटे संघर्षों को अपने आप पर संभाल सकता है। – vhallac

उत्तर

1

कल मेरे पास एक मुख्य शाखा से विलय के बाद (और) एक साइड शाखा से कई चेरी-पिक लेने के बाद भी इसी तरह की समस्या थी। समान परिवर्तन के साथ कई संघर्ष। मैंने इसे एक मर्ज रणनीति के साथ हल किया:

git checkout main-branch 
merge --no-commit -s recursive -X ours side-branch 

आप "हमारा" "उनके" में बदल सकते हैं। सावधान रहें क्योंकि सभी संघर्ष स्वचालित रूप से "हमारा" या "उनका" पक्ष चुनने का हल हो जाते हैं। मेरे मामले में मेरे पास कुछ गलत विलय थे, और मैंने मैन्युअल रूप से तय किया। अन्य रणनीतियों को मर्ज करने के दिलचस्प विकल्प यहां देखें: https://www.kernel.org/pub/software/scm/git/docs/git-merge.html

आप एक रिबेस का उपयोग करने का भी प्रयास कर सकते हैं (मेरे मामले में यह अच्छी तरह से काम नहीं कर रहा था क्योंकि शाखाएं बहुत अलग थीं और प्रत्येक नए रिबेस इंटरैक्शन में मेरा नया संघर्ष था)। देखें इस: http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/