2013-03-29 19 views
7

विलय करने की आवश्यकता नहीं है मैंने शाखा new में कुछ बदलाव किए हैं।गिट मुझे बताता है कि मैं संघर्ष विलय करता हूं, लेकिन मुझे यह भी बताता है कि

मैं master पर चेकआउट आउट करता हूं।

जब मैं विलय करने की कोशिश की:

$ git merge new 
Auto-merging js/site.js 
CONFLICT (content): Merge conflict in js/site.js 
Automatic merge failed; fix conflicts and then commit the result. 

तो मैं kdiff3 स्थापित किया है और मेरी config फ़ाइलें कॉन्फ़िगर किया गया और जब मैं mergetools का उपयोग करने की कोशिश की मुझे मिल गया:

$ git mergetool kdiff3 
No files need merging 

मैं एक diff भाग गया और यह outputted यह:

diff --cc js/site.js 
index 8c17d62,7955b13..0000000 
--- a/js/site.js 
+++ b/js/site.js 
@@@ -72,4 -81,18 +81,22 @@@ function doSmallScreen() 

    $(document).ready(function() { 
     calculateScreen(); 
- }); 
++<<<<<<< HEAD 
++}); 
++======= 
+  $(window).resize(function() { 
+   delay(function() { 
+    calculateScreen(); 
+   }, 500); 
+  }); 
+ }); 
+ 
+ 
+ var delay = (function() { 
+  var timer = 0; 
+  return function (callback, ms) { 
+   clearTimeout(timer); 
+   timer = setTimeout(callback, ms); 
+  }; 
-})(); 
++})(); 
++>>>>>>> new 

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

यह मेरे लिए अजीब लगता है कि मेरे पास विलय संघर्ष है लेकिन किसी भी फाइल को विलय करने की आवश्यकता नहीं है।

उत्तर

5

मुझे लगता है कि आपका mergetool आदेश गलत है।

$ git mergetool 

या

$ git mergetool --tool=kdiff3 

आप एक Git आदेश आप हमेशा पुस्तिका (git mergetool --help) जांच कर सकते हैं के साथ परेशानी के लिये होना चाहिए।

अधिक जानकारी: https://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html

+0

धन्यवाद कि इसे हल किया गया! – Trufa

5

मैं इस मुद्दे को तब भी जब बस सही आदेश चलाकर था:

$ git mergetool 

यह rerere चालू होने (इस लिंक को देख [एड के साथ कुछ हो सकता है .: लिंक अब काम कर रहा])

मैं .gitconfig में दो उपनाम है, जो प्रत्येक विरोध हुआ फ़ाइल के लिए mergetool शुरू बनाने के द्वारा इस मुद्दे को हल:

+०१२३५१६४१०६१

इसे अपने साथ जोड़ें।

  • git ls-files -u:; gitconfig

    # List conflicted files 
    list-conflicts = !git ls-files -u | cut -f 2 | sort -u 
    
    # Force mergetool to recognize conflicts 
    force-mergetool = !git list-conflicts | xargs git mergetool 
    

    tl डॉ अनुरोध करके, यहाँ यह क्या करता है की एक संक्षिप्त व्याख्या है संघर्षों के साथ किसी मर्ज के प्रयास के बाद, यह सब मर्ज ना किए गए फ़ाइलों को सूचीबद्ध करता है, कुछ के साथ अपर्याप्त जानकारी और पुनरावृत्ति; अगर सही मर्ज होने लग जाते हैं, यह इस उत्पादन के 2 क्षेत्र है, जो अनिवार्य रूप से फ़ाइल पथ

  • | sort -u है बाहर
  • | cut -f 2 कटौती डुप्लिकेट समाप्त
  • | xargs git mergetool पाइप में फ़ाइलों की इस सूची में संघर्षों के साथ अनिवार्य रूप से सभी फाइलों को है mergetool आदेश है, जो आपके जीयूआई मर्ज टूल लॉन्च (यह मानते हुए आप से कोई सेट अप)

तो आप पहली बार आदेश चला सकते हैं अगर आप सिर्फ सूचीबद्ध फ़ाइलों देखना चाहते हैं। दूसरा आदेश उन सभी को आपके मर्ज टूल में पाइप करेगा (यदि mergetool के बजाय आप merge का उपयोग कर सकते हैं तो यह आपकी प्राथमिकता है)।

git ls-files -u | cut -f 2 | sort -u

git ls-files -u | cut -f 2 | sort -u | xargs git mergetool

ध्यान रखें:

आप ऐसा उपनाम जोड़ने से पहले अपने दम पर इसे बाहर की कोशिश करना चाहते हैं, तो आप सिर्फ कमांड लाइन के माध्यम से इन दोनों से कोई एक आदेश चला सकते हैं यह केवल किसी भी परिणाम देगा अगर आप wanre

+1

हाँ! मुझे आश्चर्य है कि क्यों नहीं अपरिवर्तित, हम केवल एकमात्र नहीं हो सकते हैं! – pdem

+0

क्या आप इसे और अधिक समझा सकते हैं? मैं इस मुद्दे में भाग रहा हूं और मूल रूप से मेरी फाइलों को मर्ज नहीं कर सकता ... – Chrisgozd

+0

@Chrisgozd, उत्तर में एक स्पष्टीकरण जोड़ा – kghastie

5

मैंने कोशिश की

git mergetool . 

काम करने के लिए माना जाता है।

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

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