2013-02-14 65 views
7

के तहत फाइलों में लेखकों (दोष या एनोटेट का समर्थन करता है) दिखा सकता है फाइलों को विलय करते समय यह प्रत्येक लाइन के लेखक को दिखाने के लिए सहायक होगा (मेरे लिए)। क्या कोई अंतर या विलय उपकरण इसका समर्थन कर रहा है?मर्ज/डिफ टूल जो वर्जन कंट्रोल

उत्तर

-5

नहीं। और, मुझे लगता है, कभी नहीं होगा - जब हम विलय, हम सामग्री के बारे में सोचना,

+0

मैं मानता हूँ में diffmarks के साथ सिर्फ एक पाठ संपादक चला सकते हैं, लेकिन कुछ मामलों में यह उपयोगी हो सकता है। उदाहरण के लिए, एक स्रोत फ़ाइल है जिसमें मैं कुछ कोड जोड़ता हूं। जब मैं संपादन कर रहा था तब फ़ाइल को रेपो पर बदल दिया गया था। इसलिए, मुझे इसे मर्ज करने की ज़रूरत है, लेकिन मुझे केवल इतना ही करना है कि मैं केवल अपने संपादन जोड़ूं। हस्ताक्षर किए जाने पर उन्हें ढूंढना आसान होगा। – ASten

+0

@ASten - इस मामले में आप मर्ज-विंडो में "मेरी" फ़ाइल को देखते हैं (और मर्ज टूल को अलग-अलग विंडोज खिताब परिभाषित करना पड़ता है) –

+2

जब विवादों को विलय करते हैं तो मैं लेखक की वरिष्ठता के आधार पर लगभग हमेशा जांच के स्तर को समायोजित करता हूं। यह आदर्श नहीं है, लेकिन समय की बाधाओं को अक्सर इसकी आवश्यकता होती है। – bartekbrak

1

ग्रन्थकारिता नहीं तो क्या आप वास्तव में चाहते हैं के लिए एक उपकरण आसानी से अपने परिवर्तन में के अन्य परिवर्तन करने के लिए रिश्तेदार की पहचान कर सकते हैं एक विलय संघर्ष, बल्कि वास्तव में प्रत्येक पंक्ति के लेखक (जो इसे प्राप्त करने का मतलब होगा) की पहचान करता है, है ना?

यदि मैं आपको सही ढंग से समझता हूं, तो मेरे पास कुछ अपेक्षाकृत अच्छी खबर है: गिट + केडीएफ 3 के साथ किया जा सकता है। विलय के लिए आप केवल git mergetool (जिसे आप kdiff3 का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं) का उपयोग कर सकते हैं। लेकिन यह को समर्थित नहीं है यदि आप इंटरैक्टिव रीबेज करते समय विलय विवाद प्राप्त करते हैं, तो के लिए कुछ मैन्युअल स्क्रिप्टिंग आवश्यक है।

अपना खुद का सरल विलय संघर्ष उदाहरण बनाने के बजाय, मैं http://www.gitguys.com/topics/merging-with-a-conflict-conflicts-and-resolutions/ का आधार के रूप में उपयोग करूंगा। उस पृष्ठ का पालन करें git merge test पर। मर्ज कमांड के बाद से मैं अलग-अलग कमांड (लेकिन मूल रूप से एक ही काम कर रहा हूं) चलाकर उस उदाहरण से थोड़ा अलग हो जाता हूं। मैं पहले सभी मैन्युअल कदम उठाऊंगा।

तो हम किसी मर्ज संघर्ष और Git इस <<<<<<<...>>>>>>> प्रारूप, जो मैं वास्तव में बिल्कुल भी पसंद नहीं है और इसे देख भी कभी नहीं पर विचार में फ़ाइल में दोनों योगदान स्रोतों से सामग्री डाला गया है। इसके बजाय मैं अपने पसंदीदा विलय उपकरण, kdiff3 का उपयोग करता हूं।

सबसे पहले हमें यह पता लगाने की आवश्यकता है कि कौन से संस्करण शामिल हैं।

$ git ls-files -u 
100644 b0ed415d15862ac5582b51e4de65528e86934cd2 1  README 
100644 56300e3ac4e4521c3500618a301bb2ab2d6a52f5 2  README 
100644 9585db7d9c2d9ca05075f67a878f2554886d7b1a 3  README 
$ 

basted कि जानकारी हम एक तीन तरह से मर्ज कर सकते हैं:

$ git cat-file blob b0ed415d15862ac5582b51e4de65528e86934cd2 > v1 
$ git cat-file blob 56300e3ac4e4521c3500618a301bb2ab2d6a52f5 > v2 
$ git cat-file blob 9585db7d9c2d9ca05075f67a878f2554886d7b1a > v3 
$ kdiff3 -o merge_result v1 v2 v3 & 
[2] 18394 
$ 

निम्न दृश्य जहां आप चुन सकते हैं पूर्वज से आप से मर्ज करना चाहते हैं देता है।

kdiff3 screenshot

Afterwords आप

$ rm v1 v2 v3 
$ mv merge_result README 
$ git add README 

करने की जरूरत है (यदि आप मर्ज परिणाम से संतुष्ट हैं) सभी मैनुअल ऊपर के चरणों git mergetool साथ स्वचालित रूप से किया जाता है। तो फिर वह सब क्यों दिखा रहा है? खैर, क्योंकि अगर आपको git rebase -i के दौरान संघर्ष मिलता है, तो इसे इस तरह से किया जाना चाहिए (git rebase --continue चलाने से पहले)।

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

kdiff3 screenshot

सूचना मर्ज परिणाम में आप अब स्पष्ट रूप से C लाइनों कि स्वचालित रूप से हल किया गया की उत्पत्ति को देखते हैं। मुझे लगता है कि यह प्रत्येक प्रकार के लिए लेखक प्राप्त करने के लिए पूछे जाने पर आप किस तरह से पूछ रहे थे, है ना? यह जानकारी <<<<<<<...>>>>>>> टेक्स्ट में पूरी तरह से अनुपस्थित है (और यह पता लगाना मुश्किल है कि आपको हैलो फ़ंक्शन में मुद्रित स्ट्रिंग को अपडेट करना चाहिए)।

मैं अत्यधिक केडीएफ 3 की सिफारिश नहीं कर सकता। फ़ाइल में मिश्रित इनलाइन दोनों स्रोतों की तुलना में ग्राफिकल मर्ज टूल का उपयोग करना excavator बनाम spade का उपयोग करना है।

2

बंडल गिटक उपकरण वास्तव में एक मर्ज टूल नहीं है, लेकिन यह सामने और लाल और नीले रंग के साथ विरोधाभासी रेखाएं दिखाता है, और आप राइटक्लिक -> "इस लाइन की उत्पत्ति दिखाएं" उनमें से किसी पर भी क्लिक कर सकते हैं , प्रतिबद्ध जो लाइन शुरू करने के लिए जाना:

Screenshot

आप अपने mergetool, या समानांतर

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

  • कोई संबंधित समस्या नहीं^_^