2012-07-04 17 views
16

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

एक सामान्य मर्ज (git merge master) मैं लगातार की तरह (उदाहरण के लिए एक नमूना README फ़ाइल) संघर्ष प्राप्त करने से:

CONFLICT (delete/modify): README deleted in HEAD and modified in master

जो उम्मीद है: मुझे लगता है कि मैं फ़ाइलों में परिवर्तन मर्ज करने के लिए प्रयास करते हैं, हटा दिया गया है इसलिए, उन्हें हल करने के लिए मैं git rm README का उपयोग करता हूं।

इसे स्वचालित करने के लिए, हालांकि मैं -X हमारा निर्दिष्ट करके स्वचालित संघर्ष समाधान का उपयोग कर सकता हूं। मैन पृष्ठों का सुझाव यह मेरे लिए एक सही बात है:

This option forces conflicting hunks to be auto-resolved cleanly by favoring our version. Changes from the other tree that do not conflict with our side are reflected to the merge result.

हालांकि, जब मैं git merge -s recursive -X ours master करना मैं अभी भी एक ही अनसुलझे हटाने/संघर्ष को संशोधित। मैं क्या गलत कर रहा हूं? संघर्ष समाधान को स्वचालित करने का कोई और तरीका है?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/3111515/how-to-setup-a-git-driver-to- अनदेखा-ए-फ़ोल्डर-ऑन-मर्ज) - और इसका एक अच्छा जवाब है। – rescdsk

उत्तर

2

this question पर एक नज़र होने से, यह हमारा या उनके विकल्प के साथ पुनरावर्ती रणनीति एक संघर्ष के रूप में एक विलोपन पर विचार नहीं करता तरह दिखता है।

हालांकि आप कुछ फ़ाइलों के लिए एक विशिष्ट रणनीति निर्दिष्ट करने के लिए this feature का उपयोग कर सकते हैं। मैं शर्त लगाता हूं कि हमारी रणनीति (विकल्प नहीं) उन फ़ाइलों के लिए चाल करेगा।

संपादित करें:

के रूप में टिप्पणी में कहा गया है, यदि आप ऐसा नहीं कर सकते हैं!

तुम निश्चित रूप से Git मेलिंग सूची से संपर्क करना चाहिए अगर यह आप के लिए एक बहुत महत्वपूर्ण विशेषता ([email protected])

+0

ऐसा लगता है कि यह समाधान हो सकता है, लेकिन मेरे लिए काम नहीं करता है (या मैं फिर से कुछ गलत कर रहा हूं): शाखा में बनाई गई और प्रतिबद्ध है। सामग्री को "रीडमे मर्ज = हमारा" सामग्री के साथ फ़ाइल सबमिट करें। जब मैं 'गिट मर्ज मास्टर' करता हूं तो एक ही संघर्ष दिखाई देता है –

+1

एक बनाने का प्रयास किया।gitignore फ़ाइल भी और इसमें 'रीडमे' डाल दिया। वही परिणाम –

+1

हो सकता है कि कस्टम मर्ज ड्राइवर मुझे जिस चीज की ज़रूरत है? http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-as –

-1

आप रिलीज शाखा यथार्य करने के लिए मर्ज के बजाय rebase का उपयोग कर सकते है।

+2

इससे कोई फर्क पड़ता है? –

11

शायद यह करने के लिए एक बेहतर तरीका है, लेकिन मैं (डिफ़ॉल्ट मर्ज की रणनीति के साथ) मर्ज कर और फिर

git status --porcelain | awk '{if ($1=="DU") print $2}' | xargs git rm 

इसके बाद चलाकर एक ऐसी ही समस्या हल हो, तो आप सामान्य रूप में अन्य विवादों को सुलझाने चाहिए और फिर प्रतिबद्ध करें।

यह केवल उन सभी फ़ाइलों को हटा देता है जो वर्तमान शाखा पर हटा दिए गए थे, जो मुझे लगता है कि आप क्या चाहते हैं।

+3

यदि आप वास्तव में 'गिट स्थिति' के साथ खेलना चाहते हैं, तो आपको पूर्वानुमानित आउटपुट प्राप्त करने के लिए '--porcelain' का उपयोग करना चाहिए। –

+1

@ माइकलगोर्नी [हो गया।] (Http://stackoverflow.com/a/36470587/1485952) – fnkr

+0

ने @ fnkr के tweaks को शामिल करने के उत्तर को संपादित किया। धन्यवाद –

3
git merge master 
git status --porcelain | awk '{if ($1=="DU") print $2}' | xargs git rm 
git commit 
[कैसे सेटअप करने के लिए एक Git ड्राइवर मर्ज पर एक फ़ोल्डर अनदेखी करने के लिए] की
संबंधित मुद्दे