2012-06-28 21 views
6

जब मैं बड़े बदलावों को विलय करता हूं, तो गिट अक्सर निराशाजनक रूप से भ्रमित हो जाता है क्योंकि यह पर्याप्त संदर्भ रेखाओं का उपयोग नहीं कर रहा है। ऐसा नहीं है कि दोनों के साथ समाप्त होता है दो अलग अलग सबरूटीन्स के समान दिखने वाले अंत के बीच मिश्रित हो जाता है:गिट में, मैं विलय के संदर्भ को कैसे बढ़ा सकता हूं?

. 
return 1; 
. 
} 

(यहां इस्तेमाल किया डॉट्स रिक्त लाइनों का प्रतिनिधित्व करने के लिए)

जब मैं का उपयोग करें 'Git diff', मैं संदर्भ के 20 लाइनों को देखने के लिए -U20 कह सकते हैं। लेकिन क्या मैं इस ध्वज का उपयोग करने के लिए गिट को बता सकता हूं जब यह विलय हो जाता है?

जवाब जैसे रणनीति/विकल्प, विलय से संबंधित हो सकता है:

git merge -s recursive -X patience [branch] 
+0

धैर्य diff के बारे में संबंधित प्रश्न: http://stackoverflow.com/questions/4045017/what-is-git-diff-patience- –

उत्तर

4

मेरी जानकारी के लिए, मर्ज के दौरान संदर्भ लाइनों को बढ़ाने के लिए कोई रास्ता नहीं है। धैर्य diff एल्गोरिदम आपके उपयोग के मामले को बेहतर तरीके से संभालने वाला माना जाता है। Git मर्ज (1) आदमी पेज यह इस प्रकार का वर्णन करता है:

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

चूंकि यह आपके द्वारा वर्णित स्थिति की तरह दिखता है, इसलिए धैर्य आपकी मदद करने के लिए कस्टम-डिज़ाइन किया गया है। आप यह बहुत की तरह एक थ्रो-दूर शाखा पर बाहर की कोशिश कर सकते हैं: मर्ज सफाई से काम करता है

git checkout -b temp_merge_branch master 
git merge --strategy-option=patience other_branch 

हैं, तो आप परिणामों के साथ तेजी से अग्रेषित कर सकते हैं मास्टर शाखा। यदि नहीं, तो आप केवल अस्थायी शाखा को फेंक सकते हैं, और अन्य विकल्पों की तलाश कर सकते हैं। इन सेटिंग्स

4

उपयोग हर जगह संदर्भ के पांच लाइनों के साथ धैर्य डिफ ​​पाने के लिए:

git config --global diff.algorithm patience 
git config --global diff.context 5 

आप अक्सर --color-words उपयोग करते हैं, यह रूप में अच्छी तरह से उपयोगी है:

git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]' 

पहले सेटिंग Git 1.8.2 की आवश्यकता है।

+1

एक टाइमर के लिए आप 'git -c diff.context = 5 विलय का उपयोग कर सकते हैं - एक्सपीटीन्स ' –