Git के लिए सबसे अच्छा दृश्य मर्ज उपकरण क्या है? [बन्द है]


599

Git में मर्ज को देखने और संपादित करने के लिए सबसे अच्छा उपकरण क्या है? मैं "मेरा", "उनका" और "पूर्वज" के साथ अलग-अलग पैनल में, और एक चौथे "आउटपुट" पैनल के साथ 3-वे मर्ज दृश्य प्राप्त करना चाहूंगा।

साथ ही, कहा गया है कि टूल को लागू करने के निर्देश बहुत अच्छे होंगे। (मैं अभी भी इस तरह से kdiff3 शुरू करने के बारे में पता नहीं लगा पाया हूं कि यह मुझे कोई त्रुटि नहीं देता है।)

मेरा OS उबंटू है।


15
"लेकिन अब इसकी अनुमति नहीं है" हाँ, यही कारण है कि मैं आजकल स्टैकओवरफ़्लो से नफरत करता हूं। यह उन सवालों के बिना बहुत शुष्क और उबाऊ है।
इस्तवान उज्ज-मेज़रोस

17
क्या कोई स्टैकएक्सचेंज साइट है जहां इस प्रकार के प्रश्न की अनुमति है? यदि नहीं, तो होना चाहिए ..
fzzylogic

16
ऐसा लगता है कि यह एक नए स्टैक ओवरफ्लो का समय है जहां ऐसे प्रश्नों की अनुमति है। स्पष्ट रूप से कहा गया है कि इस तरह के कई सवाल इतने सारे लोगों के लिए मूल्यवान हैं कि उन्हें बंद करना सादा मूर्खता है। मुझे लगता है कि आप नौकरशाही के साथ बोर्ड पर चले गए हैं। कैसे आप इस मुद्दे पर एक सर्वेक्षण करते हैं और देखते हैं कि आपके "ग्राहक" क्या चाहते हैं? पी
पीरोट ओवेसिक


6
समस्या: सॉफ्टवेअर बेकार है क्योंकि विशेषज्ञ यहां हैं, वहां नहीं।
रीइनियरियरपोस्ट

जवाबों:


337

मेल्ड एक मुक्त, ओपन-सोर्स और क्रॉस-प्लेटफ़ॉर्म (UNIX / Linux, OSX, Windows) भिन्न / मर्ज टूल है।

इसे यहां स्थापित करने का तरीका बताया गया है:


53
मूल लेखक का उपयोग करने वाले ओएस के बारे में कौन परवाह करता है ?, यह सवाल सामान्य है कि हर कोई इसके लिए दिलचस्पी रखता है जो इसे खोजता है। और 3-तरीका अलग है जब आप वास्तव में परीक्षण के साथ 4 पैन देखते हैं; मर्ज-बेस / लोकल / रिमोट / रिजल्ट
इवगेनी

16
meldजटिल भिन्नता के साथ थकाऊ है, जैसे विकल्पों का चयन करने में सक्षम chose b for all unresolved conflictsहोने से बेहतर है कि हर हंक के लिए सही तीर पर मैन्युअल रूप से क्लिक करें meld। इसके अलावा, जगह में इनपुट फ़ाइलों को संपादित करने के बजाय एक विशिष्ट आउटपुट फ़ाइल में विलय करने में सक्षम होना असफल नाक से बाहर निकलने के लिए अमूल्य है।
मार्क बूथ

3
@ नक्सा मेल्ड में अब एक विंडोज इंस्टॉलर है: code.google.com/p/meld-installer
रोमन

6
kdiff3 आपको 4 दृश्य देखने देता है, meld केवल 3 विचारों की अनुमति देता है। मेल्ड एक वास्तविक मर्ज उपकरण नहीं है, यह एक आधार उपकरण है क्योंकि यह आधार संस्करण दृश्य नहीं दिखाता है।
अकीरा यामामोटो

4
मेल्ड भयानक है, खासकर विलय के लिए। इसमें "ऑटो-ट्रांसफर नॉन-कंट्रोवर्शियल बदलाव" का कोई विकल्प नहीं है, जिससे हर मर्ज बुरी तरह से दर्दनाक हो जाता है।
सेरिन

91

आप अपने मर्ज टूल को " git mergetool" के साथ प्रयोग करने के लिए कॉन्फ़िगर कर सकते हैं ।

उदाहरण:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

और जब आप इस पर होते हैं, तो आप इसे " git difftool" के लिए अपने विभिन्न प्रकार के रूप में भी सेट कर सकते हैं :

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

ध्यान दें कि यूनिक्स / लिनक्स में आप $BASEअपने शेल द्वारा एक चर के रूप में पार्स नहीं करना चाहते हैं - यह वास्तव में काम करने के लिए आपकी ~ / .gitconfig फ़ाइल में दिखाई देनी चाहिए।


10
ध्यान दें कि चूंकि p4merge (अब) आधिकारिक रूप से समर्थित गिट मेरिजूल में से एक है, इसलिए इसे टूल के साथ मिलाना आवश्यक नहीं होना चाहिए .cmd चर अब और।
मैट बॉल

2
सुनिश्चित करें कि आप सही उद्धरण का उपयोग कर रहे हैं: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck

64

3 से परे , मेरे पसंदीदा, प्रो संस्करण मेंएक मर्ज कार्यक्षमता है। इसके मर्ज के साथ अच्छी बात यह है कि यह आपको सभी 4 दृश्य देखता है: आधार, बाएं, दाएं, और मर्ज किए गए परिणाम। यह P4V की तुलना में कुछ कम दृश्य है,लेकिन WinDiff से अधिक है। यह कई स्रोत नियंत्रण के साथ एकीकृत करता है और विंडोज / लिनक्स पर काम करता है। यह उन्नत नियम, संस्करण, मैनुअल संरेखण जैसी कई विशेषताएं हैं ...

Perforce विज़ुअल क्लाइंट ( P4V ) एक मुफ्त टूल है जो विलय के लिए सबसे स्पष्ट इंटरफ़ेस में से एक प्रदान करता है ( कुछ स्क्रीनशॉट देखें)। सभी प्रमुख प्लेटफार्मों पर काम करता है। उस उपकरण के साथ मेरा मुख्य निराशाजनक "रीड-ओनली" इंटरफ़ेस है । आप मैन्युअल रूप से फ़ाइलों को संपादित नहीं कर सकते हैं और आप मैन्युअल रूप से संरेखित नहीं कर सकते हैं।

PS: P4Merge को P4V में शामिल किया गया है। Perforce अपने क्लाइंट के बिना अपना टूल प्राप्त करने के लिए इसे थोड़ा कठिन बनाने की कोशिश करता है।

SourceGear डिफ / मर्ज मेरी दूसरी फ्री टूल चॉइस हो सकती है। स्क्रीन-शॉट को मर्ज करने की जाँच करेंऔर आप देखेंगे कि इसमें कम से कम 3 विचार हैं।


मेल्ड एक नया मुफ्त टूल है जिसे मैं सोर्सगियर डिफ / मर्ज में पसंद करूंगा: अब यह अधिकांश प्लेटफार्मों (विंडोज / लिनक्स / मैक) पर भी काम कर रहा है, जिसमें जीआईटी जैसे कुछ स्रोत नियंत्रण का मूल समर्थन है। तो आपके पास कुछ इतिहास हो सकता है जो सभी फाइलों पर बहुत सरल हो। मर्ज व्यू ( स्क्रीनशॉट देखें) में केवल 3 पैन हैं, जैसे सोर्सगियर डिफ / मर्ज । इससे जटिल मामलों में कुछ हद तक विलय हो जाता है।

पुनश्च: यदि एक दिन एक उपकरण 5 विचारों के विलय का समर्थन करता है , तो यह वास्तव में भयानक होगा, क्योंकि अगर आप Git में चेरी-पिक करते हैं तो आपके पास वास्तव में एक आधार नहीं बल्कि दो हैं। दो आधार, दो परिवर्तन और एक परिणामी विलय।


7
Perforce मर्ज महान है। इसमें 4 फलक मर्ज का उपकरण है, जो वास्तव में मदद करता है: Yours, Theirs, Common Base, New
Gal


5
आप कस्टम को केवल P4Merge को बाकी पर्चों के बिना इंस्टॉल कर सकते हैं।
डिर्क बेस्टर

6
P4merge के नवीनतम संस्करण में "केवल पढ़ने के लिए" इंटरफ़ेस नहीं है। आप निचले फलक में मर्ज की गई फ़ाइल को संपादित कर सकते हैं।
इयान नी-लुईस

1
यह एक बहुत अच्छा जवाब और चर्चा है। साझा करने के लिए धन्यवाद!
मार्क गुड

44

मैं kdiff3 के बारे में अच्छी बातें सुनता हूं।


4
+1: kdiff3 मेलड से बेहतर है और मूल रूप से git द्वारा समर्थित है।
मार्क बूथ

3
kdiff3इसमें और अधिक विशेषताएं हैं लेकिन meldबेहतर UI है। मेरी राय में, meldआसान मर्ज के लिए बेहतर है , जहां प्रदान की गई विशेषताएं meldपर्याप्त हैं। कोशिश करना diffuseभी याद रखें ।
मिको रानाल्टेन 10

kdiff3 आपको 4 दृश्य देखने देता है, meld केवल 3 विचारों की अनुमति देता है। मेल्ड एक वास्तविक मर्ज उपकरण नहीं है, यह एक आधार उपकरण है क्योंकि यह आधार संस्करण दृश्य नहीं दिखाता है।
अकीरा यामामोटो

43

मेरा पसंदीदा विजुअल मर्ज टूल SourceGear DiffMerge है

  • ये मुफ्त है।
  • क्रॉस-प्लेटफ़ॉर्म (विंडोज, ओएस एक्स, और लिनक्स)।
  • क्लीन विजुअल यूआई
  • सभी अलग-अलग विशेषताएं जो आप उम्मीद करेंगे (डिफ, मर्ज, फोल्डर डिफ)।
  • कमांड लाइन इंटरफेस।
  • उपयोग करने योग्य कीबोर्ड शॉर्टकट।

प्रयोक्ता इंटरफ़ेस


3
आप इसे git के साथ काम करने के लिए कैसे कॉन्फ़िगर करते हैं?
रयान लुंडी


2
मेरे लिए इसे शुरू करने के लिए धन्यवाद !! : डी यह उपकरण साफ है और इसे पिघलने की तुलना में स्थापित करने और काम करने में कम समय लगता है। मैं आधे घंटे की कोशिश कर रहा हूँ ताकि मैं मेलड को स्थापित करूँ। लेकिन यह एक मैंने 5 मिनट में किया !!
om39a

2
नोट: diffmerge में 3-तरफ़ा मर्ज सुविधा नहीं है। मैं इसे इस कारण से कुछ हफ़्ते के लिए प्रयास करने के बाद छोड़ रहा हूं
स्ट्रोमहॉक

यह एक अच्छा टूल है और फोल्डर की तुलना भी कर सकता है। समस्या इसके थोड़े धीमी है (MacBookPro 15 2014, MacOS Catalina)
emKaroly

33

vimdiff

एक बार जब आपने vim (और IMHO आपको करना चाहिए) सीखा है, तो vimdiff सीखने के लिए सिर्फ एक और सुंदर छोटी ओर्थोगोनल अवधारणा है। ऑनलाइन सहायता प्राप्त करने के लिए:

:help vimdiff 

यह प्रश्न कवर करता है कि इसका उपयोग कैसे किया जाए: मैं किसी विवाद को हल करने के लिए विमीडिफ का उपयोग कैसे करूं?

यहाँ छवि विवरण दर्ज करें

यदि आप माउस उपयोग के अंधेरे युग में फंस गए हैं, और जिन फ़ाइलों का आप विलय कर रहे हैं, वे बहुत बड़ी नहीं हैं, तो मैं पिघलने की सलाह देता हूं।


<3 vimdiff, मैं समझ नहीं पा रहा हूं कि मुझे एक 'मर्ज' उपकरण के रूप में उपयोग करने के लिए svn को कैसे समझाने के लिए।
क्लोकॉप

gvimdiff भी इस उद्देश्य के लिए अच्छा काम करता है।
new123456

2
भगोड़े प्लगइन का उपयोग करना और भी आसान बना देता है! vimcasts.org/episodes/…
एरिक वेस्ट्रुप

यदि केवल स्थानीय / आधार और आधार / रिमोट के बीच अंतर को स्पष्ट रूप से देखने का एक तरीका था।
सिरो सांटिल्ली 郝海东 冠状 iro i 法轮功 '

24

आप P4Merge ट्राई कर सकते हैं ।

P4Merge के साथ फाइल वर्जन के बीच अंतर का अनुमान लगाएं। रंग कोडिंग के माध्यम से समानांतर या समवर्ती विकास के परिणामस्वरूप होने वाले संघर्षों को हल करें।

सुविधाओं में शामिल हैं:

  • टेक्स्ट फ़ाइल अंतरों को हाइलाइट करें और संपादित करें
  • लाइन एंडिंग या व्हाइट स्पेस को शामिल करना या अनदेखा करना चुनें
  • विंडोज (CRLF), मैक (CR), और यूनिक्स (LF) के लिए लाइन-एंडिंग कन्वेंशनों को पहचानें
  • कमांड-लाइन मापदंडों का उपयोग करें और गैर-पेरफोर्स अनुप्रयोगों से लॉन्च करें
  • फ़ाइलों की तुलना और विलय करते समय लाइन नंबर प्रदर्शित करें
  • उन फ़ाइलों को छोड़ दें, जिन्हें संशोधित, अद्वितीय या अपरिवर्तित किया गया है
  • नाम या एक्सटेंशन द्वारा फ़ाइलों को फ़िल्टर करें
  • परिचित फ़ाइल / फ़ोल्डर पदानुक्रम में संशोधित संपत्ति व्यवस्थित करें
  • JPEG, GIF, TIFF, BMP और अन्य फ़ाइल स्वरूपों की तुलना करें
  • Qt API का उपयोग करके विस्तार करें
  • ओवरले चित्र या साइड-बाय-साइड प्रदर्शित करें
  • ओवरलैड छवियों पर अंतर को हाइलाइट करें

सबसे अच्छा मैं अब तक देखा है। आसानी से तीन-तरफा दृश्य की सूची से परिवर्तन उठाकर संघर्ष को हल करें
chovy



आज का उपयोग शुरू कर दिया और यह बहुत सहज है।
संसाधन

22

IntelliJ IDEA में रिज़ॉल्यूशन मैजिक वैंड के साथ एक परिष्कृत मर्ज संघर्ष रिज़ॉल्यूशन उपकरण है , जो विलय को सरल करता है:

स्रोत: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/


2
आइडिया का मर्ज टूल सिर्फ शानदार है। यह आइडिया के सामुदायिक संस्करण में भी उपलब्ध है, जिसका अर्थ है कि आप इसे उन्नत मर्ज टूल के रूप में मुफ्त में उपयोग कर सकते हैं - यह वही है जो मैं कर रहा हूं (ज्यादातर मामलों में मैं VSCode का उपयोग करता हूं जहां मैं काम कर रहा हूं और मैं कठिन मर्ज के मामलों के लिए आइडिया का उपयोग करता हूं)। VSCode के रूप में अच्छी तरह से बहुत अच्छा काम करता है, और कभी कभी भी बेहतर तो आइडिया। लेकिन कठिन मामलों के लिए उनका 3-पैनल-लेआउट सबसे अच्छा उपकरण है जो मैंने कभी देखा है
Godblessstrawberry

मुझे नफ़रत है कि स्क्रॉल बार 'फ़ाइल ग्रीष्मकालिन' एक साथ कैसे नहीं हैं! मुख्य कारण जो मुझे पसंद है!
एन्थोनी

16

डिफ्यूज़ मेरा पसंदीदा है लेकिन निश्चित रूप से मैं पक्षपाती हूं। :-) यह इस्तेमाल में बहुत आसान है:

$ diffuse "mine" "output" "theirs"

डिफ्यूज पाइथन में लिखा गया एक छोटा और सरल टेक्स्ट मर्ज टूल है। डिफ्यूज़ के साथ, आप आसानी से अपने कोड में बदलावों को मर्ज, एडिट और रिव्यू कर सकते हैं। डिफ्यूज़ फ्री सॉफ्टवेयर है।


2
मैं वास्तव में फैलाना पसंद करता हूं, और मैं पक्षपाती नहीं हूं।
jturcotte

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

फैल्यूज़ में मेल्ड की तुलना में कुछ अतिरिक्त मर्ज विकल्प हैं (उनमें से किसी एक को चुनने के बजाय दोनों संस्करणों में शामिल होने की अनुमति देता है)।
ऑड्रियस मेस्कॉस्कस

फैलाना खिड़कियों पर बॉक्स से बाहर काम करता है, 2 फ़ोल्डरों की तुलना के लिए, CVS रेपो के साथ, Git रेपो के साथ, git मर्ज संघर्षों को मर्ज करता है। फैलाना अलग-अलग फ़ाइलों को एक ही विंडो में टैब में खोलते हैं। मैंने डिफ्यूज़ करने के लिए स्विच किया (एमएसीएस के उपयोग के बाद (बहुत सारी सुविधाएँ, 90 के दशक में उपयोगी)) vimdiff (कॉम्प्लेक्स प्लग इन कीस्ट्रोक्स)> p4merge> araxis (प्रोप्रेटरी)> meld (बहुत धीमा), tkdiff (केवल cvs)> kdiff3 (अच्छा है) , अच्छा रेगेक्स सुविधाओं को अनदेखा करें)> विनमर (अच्छा)> फैलाना (तेज, पोर्टेबल, उम्मीद के मुताबिक काम करता है)) पहली बार जब मैंने diffuse की कोशिश की।
मॉश

डिफ्यूज़ में GUI भाषा कैसे बदलें?
zach

14

Araxis मर्ज http://www.araxis.com/merge मैं इसे मैक ओएस एक्स पर उपयोग कर रहा हूं, लेकिन मैंने इसे विंडोज़ पर उपयोग किया है ... यह मुफ़्त नहीं है ... लेकिन इसमें कुछ अच्छी विशेषताएं हैं ... अच्छे हालांकि खिड़कियां।


9

आप git mergetool द्वारा उपयोग किए गए टूल को पास git mergetool -t=<tool>या बदल सकते हैं --tool=<tool>। डिफ़ॉल्ट को बदलने के लिए (vimdiff से) उपयोग करें git config merge.tool <tool>



6

तो मर्ज मर्ज के लिए, आप कोशिश कर सकते हैं:

  • Windows, OS X और Linux पर फ़ाइलों की तुलना और विलय करने के लिए DiffMerge

    DiffMerge

  • मेल्ड , एक विज़ुअल डिफरेंस और मर्ज टूल है।

    Meld एक विजुअल डिफरेंस और मर्ज टूल है

  • KDiff3 , एक भिन्न और मर्ज प्रोग्राम), जो 2 या 3 पाठ इनपुट फ़ाइलों / dirs की तुलना या विलय करता है।
  • opendiff(MacOS पर Xcode Tools का हिस्सा), एक कमांड लाइन उपयोगिता, जो विलय से फ़ाइल या निर्देशिकाओं की तुलना करने के लिए टर्मिनल से FileMerge एप्लिकेशन लॉन्च करती है ।

2
git config --global merge.tool opendiffमेरे लिए सबसे अच्छा काम किया
जेम्स मैथ्यू मडगेट

5

मैंने यहाँ उल्लिखित बहुत सारे उपकरण आज़माए हैं और उनमें से कोई भी ऐसा नहीं है जो मैं देख रहा हूँ।

व्यक्तिगत रूप से, मैंने एटम पाया है को मतभेद और संघर्ष के समाधान / विलय के लिए एक महान उपकरण ।

विलय के लिए, तीन विचार नहीं हैं, लेकिन यह सभी को प्रत्येक संस्करण के लिए रंगीन हाइलाइटिंग के साथ जोड़ा गया है। आप सीधे कोड को संपादित कर सकते हैं या उस स्निपेट के जिस भी संस्करण को आप चाहते हैं उसका उपयोग करने के लिए बटन हैं।

मैं इसे अब संपादक या IDE के रूप में भी उपयोग नहीं करता, सिर्फ git के साथ काम करने के लिए। स्वच्छ यूआई और बहुत सीधे-आगे, प्लस यह अत्यधिक अनुकूलन योग्य है।

  • आप इसे कमांड लाइन से शुरू कर सकते हैं और एक सिंगल फाइल में पास कर सकते हैं जिसे आप खोलना चाहते हैं, या अपना प्रोजेक्ट फ़ोल्डर (git repo) जोड़ें।

    • मैं परियोजना-प्रबंधक को आपके पेड़ के दृश्य को भरने के बिना परियोजनाओं के बीच नेविगेट करने के लिए एक बहुत ही सुविधाजनक तरीके के रूप में भी सुझाऊंगा।
  • एकमात्र समस्या जो मैंने ताज़ा की है - जब बड़े रिपॉजिटरी के साथ काम करते हैं तो परमाणु आपके द्वारा इसके बाहर किए जाने वाले परिवर्तनों को अद्यतन करने के लिए धीमा हो सकता है। जब मैं समाप्त कर लेता हूं, तो मैं हमेशा इसे बंद कर देता हूं, और फिर जब मैं अपने परिवर्तन देखना चाहता हूं / फिर से प्रतिबद्ध करता हूं। आप ctrl + shift + f5 के साथ विंडो को फिर से लोड कर सकते हैं, जिसमें केवल एक सेकंड लगता है।

और यह नि: शुल्क है।


3

मैं विलय और तुलना के लिए विभिन्न उपकरणों का उपयोग करता हूं:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

मुट्ठी द्वारा बुलाया जा सकता है:

git difftool [BRANCH] -- [FILE or DIR]

दूसरा तब कहा जाता है जब आप उपयोग करते हैं git mergetool


2

आप अपने लिनक्स, मैक या विंडोज पर ECMerge को अलग / मर्ज कर सकते हैं । यह Git में पहले से कॉन्फ़िगर किया गया है, इसलिए सिर्फ git mergetoolकाम करने से काम चल जाएगा।


2

यदि आप दृश्य स्टूडियो का उपयोग करते हैं , तो टीम एक्सप्लोरर अंतर्निहित टूल गिट मर्ज संघर्षों को हल करने के लिए एक बहुत अच्छा उपकरण है।


0

gitx http://gitx.frim.nl/

बड़े कमिट सेट्स के साथ काम करते समय कुछ कीड़े लेकिन बदलाव के माध्यम से ब्राउज़ करने और स्टेज में अलग-अलग बदलाव करने और फिर कमिट करने के लिए बढ़िया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.