2012-04-18 5 views
5

ठीक है, यहां मेरा क्यू चला जाता है। क्या "गिट रीर्रे" संकल्प को समझने के लिए दो फाइलों की हैश की तुलना करता है? यही कारण है, मैं जो इस टैग है एक XML फ़ाइल है कहते हैं:गिट दोबारा दो संघर्षों के बीच समानताओं को कैसे समझता है?

<number>12</number> 

जब मैं एक संघर्ष है, उस नंबर आमतौर पर 13 की तरह कुछ, 14, आदि करने के लिए बदल जाता है, तो मैं के साथ अटक कर रहा हूँ:

<<<<<<< 
<number>12</number> 
======= 
<number>13</number> 
>>>>>>> 

क्या इस समस्या को स्वचालित रूप से हल कर सकते हैं भले ही संख्या आखिरी बार समान न हों? मैं हमेशा इसे इस तरह हल करने के लिए चाहता हूं कि यह उच्च संख्या (उदाहरण के ऊपर, 13) लेता है। तो अगर यह संख्या 12 और 13 के लिए संकल्प रिकॉर्ड करता है, तो क्या यह अलग-अलग संख्याओं के साथ संघर्ष को हल करेगा? मुझे संदेह है कि यह नहीं होगा, लेकिन साथ ही पूछ सकता है।

उत्तर

7

स्वचालित रूप से rerere कर सकते हैं इस विरोध को हल भले ही संख्या पिछली बार की तरह नहीं होते? मैं हमेशा इसे इस तरह हल करने के लिए चाहता हूं कि यह उच्च संख्या (उदाहरण के ऊपर, 13) लेता है।

नहीं, git rerere ऐसा नहीं कर सकता।

आप git rerere उपयोग करते हैं, तो आपको दो बातें याद करने के लिए यह पूछ रहे हैं:

  • एक विशिष्ट संघर्ष (जो है, जिसे जो संघर्ष में हैं का शाब्दिक पाठ और फ़ाइलों है कि वे कर रहे हैं); और
  • संकल्प के बजाय परिवर्तन समारोह के कुछ प्रकार क्योंकि इन हंक शाब्दिक (उदाहरण के लिए "12 से 13 के साथ बदलें") हैं कि कि संघर्ष

को लागू किया जाना चाहिए

  • (उदाहरण के लिए "एन के साथ एन की जगह 1 "), गिट यह अनुमान लगाने में असमर्थ है कि आप प्रत्येक नंबर को एक उच्च के साथ प्रतिस्थापित करना चाहते हैं।

    यदि गिट बाद में किसी भी संघर्ष से मुकाबला करता है जो उसके पहले याद किए गए संघर्षों से मेल नहीं खाता है, तो ऐसा लगता है कि यह कभी भी उस संघर्ष का सामना नहीं कर रहा है, भले ही यह समान हो (जैसा कि आपके उदाहरण में है कि संख्याएं हमेशा होती हैं एक बंद)।

    यदि यह XML फ़ाइल स्वचालित रूप से जेनरेट की जाती है तो एक तरीका बाहर संभव है। उस स्थिति में, आप इसे स्रोत नियंत्रण में नहीं रख सकते हैं, और इसके बजाय, इसे रनटाइम पर उत्पन्न करना चाहते हैं। फिर आपके पास साफ करने के लिए संबंधित संघर्ष कभी नहीं होंगे।

    एक और तरीका git rerere से बचने के लिए है, और इसके बजाय एक कस्टम मर्ज ड्राइवर लिखें जो आपके लिए चीजों को हल करेगा। मैंने पहले यह किया है, लेकिन यह काम की एक गैर-तुच्छ राशि है, और इसके लिए आपको कुछ कोड लिखने और परीक्षण करने की आवश्यकता है। यदि आप इस रणनीति में रुचि रखते हैं, तो Karl's answer में देखें।

  • +0

    आह, ऐसा सोचा। गहराई से जवाब के लिए धन्यवाद।दुर्भाग्यवश, इन नंबरों को हमेशा मनुष्यों द्वारा दर्ज किया जाता है, ऐसा लगता है कि मैं उस कस्टम विलय ड्राइवर को देख रहा हूं। टिप के लिए धन्यवाद, आप और कार्ल। – mart1n

    2

    वेनिला गिट इस तरह से फ़ाइलों की तुलना नहीं करता है। यह एक सख्त स्ट्रिंग तुलना करता है और इसके अर्थशास्त्र के बारे में कुछ भी नहीं जानता है।

    हालांकि, gitattributes man page में "कस्टम मर्ज ड्राइवर को परिभाषित करना" पर एक नज़र डालें। यह आपको उच्च संख्या चुनने सहित कुछ विलयों को हल करने के लिए अपना स्वयं का प्रोग्राम लिखने देता है।

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