मुख्य सामग्री पर जाएँ
Tooletto

डिफ़ चेकर

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

  • फ़ाइलें कभी आपकी डिवाइस से बाहर नहीं जातीं
  • मुफ़्त, बिना साइन-अप
  • कोई वॉटरमार्क नहीं
  • लोड होने के बाद ऑफ़लाइन भी काम करता है
Loading tool…

डिफ़ चेकर कैसे करें

  1. 1

    दोनों वर्ज़न पेस्ट करें

    मूल टेक्स्ट बाएँ बॉक्स में और बदला हुआ वर्ज़न दाएँ बॉक्स में पेस्ट करें।

  2. 2

    तुलना मोड चुनें

    लाइन-दर-लाइन तुलना के लिए "Lines" इस्तेमाल करें — कोड और कॉन्फ़िग फ़ाइलों के लिए मानक तरीक़ा — या यह देखने के लिए "Words" पर जाएँ कि मिलती-जुलती लाइनों में बिल्कुल कौन-से शब्द बदले।

  3. 3

    हाइलाइट किया डिफ़ पढ़ें

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

लाइन डिफ़ यह कैसे तय करता है कि क्या "एक जैसा" है

हाइलाइटिंग के नीचे, कोई डिफ़ टूल एक ख़ास मैचिंग समस्या हल कर रहा होता है: दो लाइन-लिस्ट दिए जाने पर, वह सबसे लंबा क्रम ढूँढना जो दोनों दस्तावेज़ों में एक ही सापेक्ष क्रम में मौजूद है — उस साझा क्रम में सब कुछ बिना बदलाव के छोड़ दिया जाता है, और बाक़ी सब जोड़ा या हटाया गया माना जाता है। यही वह अंतर्ज्ञान है जिस पर "लॉन्गेस्ट कॉमन सबसीक्वेंस" नाम की अवधारणा बनी है, जिस पर हर सामान्य-मक़सद डिफ़ एल्गोरिद्म बना है, ख़ुद Git का इस्तेमाल किया गया एल्गोरिद्म भी शामिल है। यह एक ऐसी बात समझाता है जो वरना अजीब लगती है: किसी दस्तावेज़ के नीचे से टेक्स्ट का कोई ब्लॉक ऊपर ले जाना आमतौर पर एक "मूव" ऑपरेशन की बजाय एक बड़े हटाव और बड़े जोड़ के रूप में बताया जाता है — एल्गोरिद्म सिर्फ़ साझा क्रम ढूँढ रहा है, और कोई हटाया गया ब्लॉक उस क्रम को उसकी पुरानी और नई दोनों पोज़िशन पर तोड़ देता है।

यह भी समझाता है कि Lines मोड में किसी लंबी लाइन का एक-कैरेक्टर एडिट पूरी लाइन को क्यों बदला हुआ चिन्हित करता है: एल्गोरिद्म पूरी लाइनों की तुलना अविभाज्य इकाइयों के रूप में करता है, तो "एक अक्षर छोड़कर वही लाइन" और "पूरी तरह अलग लाइन" को एक जैसा माना जाता है — दोनों बराबरी की जाँच में नाकाम रहते हैं और दोनों एक लाइन हटाई गई, एक लाइन जोड़ी गई गिने जाते हैं। यही वह स्थिति है जहाँ Word मोड में स्विच करना मदद करता है, क्योंकि यह वही अंतर्निहित अवधारणा एक स्तर नीचे दोहराता है, हर लाइन की बजाय हर शब्द को मिलान की इकाई मानते हुए।

शब्द-स्तर की डिफ़िंग लाइन-स्तर से ज़्यादा उपयोगी कब है

Lines मोड सही डिफ़ॉल्ट है हर उस चीज़ के लिए जहाँ लाइन ख़ुद अपने आप में एक मायने रखने वाली इकाई है — सोर्स कोड, JSON ऑब्जेक्ट, CSV रो, लॉग एंट्री — क्योंकि इन फ़ॉर्मेट में एक लाइन आमतौर पर एक पूरा आइडिया दिखाती है, और यह जानना कि कोई ख़ास लाइन बदली, यह अपने आप में उपयोगी जानकारी है, चाहे उसके अंदर कौन-सा कैरेक्टर हिला हो। Word मोड तभी ज़्यादा उपयोगी बनता है जब मायने रखने वाली इकाई किसी लाइन से छोटी हो: प्रोज़ का कोई पैराग्राफ़, कॉन्ट्रैक्ट की कोई शर्त, या किसी लंबे दस्तावेज़ का कोई वाक्य, जहाँ दिलचस्प बदलाव आमतौर पर एक शब्द या वाक्यांश होता है और आस-पास का वाक्य वैसा ही रहता है। ऐसे टेक्स्ट की लाइन-दर-लाइन तुलना करने पर एक शब्द के एडिट के लिए पूरा पैराग्राफ़ "बदला हुआ" चिन्हित हो जाएगा, जो तकनीकी रूप से सही है लेकिन आपको यह कुछ नहीं बताता कि असल में क्या बदला जब तक आप पूरा पैराग्राफ़ ख़ुद दोबारा न पढ़ें।

एक व्यावहारिक नियम: किसी स्ट्रक्चर्ड या लाइन-आधारित चीज़ के लिए पहले Lines मोड आज़माएँ, और ख़ास तौर पर तब Word मोड पर स्विच करें जब Lines मोड का नतीजा लाल और हरे के दो बड़े ब्लॉक दिखाए जो लगभग एक जैसे लगते हों — यह पैटर्न इस बात का संकेत है कि असली फ़र्क़ छोटा है और वरना बिना बदले टेक्स्ट के अंदर दबा हुआ है।

प्रोज़ की तुलना से आगे की आम व्यावहारिक इस्तेमाल

मर्ज करने से पहले सोर्स कोड के दो रिविज़न की तुलना करना पाठ्यपुस्तक जैसा इस्तेमाल है, लेकिन यही तकनीक कोड रिव्यू से कहीं आगे भी अच्छी तरह लागू होती है: किसी कॉन्फ़िगरेशन फ़ाइल के दो एक्सपोर्ट की तुलना करके यह पता लगाना कि किसी वर्किंग डिप्लॉयमेंट और किसी टूटे हुए के बीच बिल्कुल कौन-सी सेटिंग बदली, किसी CSV एक्सपोर्ट के दो वर्ज़न जाँचकर यह पक्का करना कि सिर्फ़ उम्मीद की गई रो ही बदली हैं, या किसी कॉन्ट्रैक्ट ड्राफ़्ट की पिछले रिविज़न से तुलना करके बिना पूरा दस्तावेज़ दोबारा साथ-साथ पढ़े हर वह शर्त ढूँढना जो दूसरे पक्ष ने बदली। इन सभी मामलों में डिफ़ टूल की क़ीमत एक जैसी है — यह "क्या ये दोनों चीज़ें अलग हैं, और अगर हाँ तो कहाँ" को मैनुअल साथ-साथ पढ़ने की मेहनत से एक तुरंत मिलने वाले विज़ुअल जवाब में बदल देता है।

अक्सर पूछे जाने वाले सवाल

क्या दोनों में से कोई टेक्स्ट सर्वर पर अपलोड होता है?

नहीं। दोनों टेक्स्ट की तुलना पूरी तरह आपके ब्राउज़र के अंदर JavaScript से होती है — कभी भी कुछ नेटवर्क पर नहीं भेजा जाता। पेज लोड होने के बाद आप इंटरनेट से डिस्कनेक्ट कर सकते हैं और तुलना फिर भी काम करती है, जो आप ख़ुद जाँच सकते हैं।

"फ़र्क़" में असल में क्या गिना जाता है?

"Lines" मोड में, दो लाइनों की तुलना पूरी इकाई के रूप में होती है — अगर किसी लाइन का एक कैरेक्टर भी बदलता है, तो पूरी लाइन मूल से हटाई गई और बदले वर्ज़न में जोड़ी गई मानी जाती है। "Words" मोड में, वही लाइन शब्द-दर-शब्द तुलना होती है, तो सिर्फ़ बदला हुआ शब्द हाइलाइट होता है जबकि बाक़ी लाइन सादी रहती है। दोनों मोड में शुरुआती और अंतिम स्पेस, ख़ाली लाइन और लाइन ब्रेक सबको असली कंटेंट माना जाता है — सिर्फ़ ट्रेलिंग स्पेस से अलग लाइन भी बदली हुई बताई जाती है।

क्या यह कोड, JSON या कॉन्फ़िग फ़ाइलों के लिए काम करता है, सिर्फ़ प्रोज़ के लिए नहीं?

हाँ — लाइन-आधारित डिफ़िंग बिल्कुल वही तकनीक है जो Git जैसे वर्ज़न कंट्रोल टूल इस्तेमाल करते हैं, और यह यहाँ सोर्स कोड, JSON, YAML, CSV रो, लॉग फ़ाइल या किसी भी दूसरे लाइन-आधारित फ़ॉर्मेट के लिए उसी तरह काम करता है। Word मोड प्रोज़, कॉन्ट्रैक्ट या डॉक्यूमेंटेशन के लिए ज़्यादा उपयोगी है, जहाँ मायने रखने वाला बदलाव आमतौर पर पूरी लाइन की बजाय किसी वाक्य के अंदर एक वाक्यांश होता है।

क्या यह बड़े दस्तावेज़ संभाल सकता है?

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

"+N जोड़ी गईं, −M हटाई गईं" गिनती किन लाइनों की है?

यह पूरी तुलना में जोड़ी और हटाई गई लाइनों (या Word मोड में शब्दों) की कुल संख्या गिनता है — वही संख्या जो आपको नतीजे में हर हरी और लाल लाइन गिनकर मिलेगी। बिना बदली लाइनें नहीं गिनी जातीं।

क्या मुझे रंगीन व्यू की बजाय सादे टेक्स्ट के रूप में डिफ़ मिल सकता है?

हाँ। "Copy diff" बटन एक सादा-टेक्स्ट वर्ज़न कॉपी करता है जिसमें हर लाइन के आगे "+", "-" या ख़ाली मार्कर होता है (वही परंपरा जो Git और ज़्यादातर कमांड-लाइन डिफ़ टूल इस्तेमाल करते हैं), तो आप इसे किसी ईमेल, टिकट या कोड रिव्यू कमेंट में पेस्ट कर सकते हैं।