PR ከመተቸት በፊት መገምገም
የGitHub diff እይታ ድንቅ ነው፣ ግን አንዳንድ ጊዜ የቅርጸት ጫጫታ ሳይኖር ብቻ ጉልህ ለውጦችን ማየት ይፈልጉ ይሆናል። ሁለቱንም ስሪቶች ይለጥፉ፣ Ignore whitespace ያብሩ፣ የመልክ ቅርጸቶች ይጠፋሉ — ብቻ የሎጂክ አርትዖቶችን ይተዋሉ።
ሁለት ጽሑፎችን ወይም ኮዶችን በመስመርና በቃል ደረጃ ማሳያ ያወዳድሩ። ጎን-ለጎን ወይም የተዋሃደ፣ ክፍተትን-መተው፣ ፊደል-መጠን-መተው — ሙሉ በሙሉ በአሳሽዎ ውስጥ።
አይደለም። መሣሪያው ሙሉ በሙሉ በዚህ ገጽ ውስጥ የሚሰራ JavaScript ነው። የዲፍ አልጎሪዝሙ (longest-common-subsequence) በሲፒዩዎ ላይ ይሰራል እና ውጤቱ በቀጥታ ወደDOM ይታያል። DevTools → Network ይክፈቱና ይመልከቱ — በዲፍ ጊዜ ምንም ጥያቄ አይነሳም። የውስጥ ኮድ፣ የደንበኛ መረጃ፣ የውል ረቂቆች ወይም በሰርቨር መሣሪያ እንዲመዘገብ የማይፈልጉትን ማንኛውንም ነገር ለመለጠፍ አስተማማኝ ነው።
በመጀመሪያ ሁለቱንም ግቤቶች በመስመሮች ከፋፍለን LCS (longest common subsequence) አልጎሪዝም እንሰራለን። በሁለቱም ጎኖች የሚዛመዱ መስመሮች እኩል ተብለው ይደመቃሉ። የማይዛመዱ መስመሮች መጨመር ከመሰረዝ አጠገብ ሲመጣ በ'ለውጥ' ረድፎች ይጣመራሉ። ለእያንዳንዱ የተጣመረ ለውጥ፣ የተለወጡ ቃላት ብቻ ቀይ/አረንጓዴ እንዲበሩ — መላውን መስመር አይደለም — በመስመሩ ቃላት (በክፍተት ተከፋፍለው) ላይ ሁለተኛ LCS እንሰራለን።
ያለ ማስታወቂያ፣ ብቅ-ባይ መስኮት ወይም የሶስተኛ ወገን ተከታታይ ያለ ንፁህና ፈጣን የጽሑፍ ዲፍ መሞከሪያ — ለገንቢዎች፣ ለጸሐፊዎችና የተቀየረውን ለማየት ለሚፈልግ ሁሉ የተሰራ።
በተከፈለ (ሁለት አምድ፣ ጥንታዊ የIDE ስሜት) እና በተዋሃደ (በ +/− ምልክቶች ያለው አንድ አምድ) መካከል በአንድ ጠቅታ ይቀያይሩ። ሁለቱም እይታዎች የመስመር ቁጥሮችን ያሳያሉ እና እያንዳንዱን ለውጥ በውስጥ ያደምቃሉ።
ሁለት መስመሮች ሲቀየሩ፣ የተለወጡ ቃላት ብቻ እንዲደምቁ ሁለተኛ የቃል-ደረጃ ዲፍ እናሰራለን — መላውን መስመር አይደለም። በ200 ቁምፊ መስመር ውስጥ አንድ የፊደል ስህተትን ለማግኘት ቀላል ያደርገዋል።
የመልክ ለውጦችን (እንደገና የተቀረጸ ሕዳግ፣ የፊደል መጠን ማስተካከያ) ለማጣራትና በእውነተኛ አርትዖቶች ላይ ለማተኮር ክፍተትንና የፊደል መጠንን ይቀያይሩ።
ሁለቱም ጽሑፎች በአሳሽ ትርዎ ውስጥ ይቆያሉ። የዲፍ አልጎሪዝም በአካባቢ በJavaScript ይሰራል። በDevTools → Network የሚረጋገጥ፡ ሲተይቡ ምንም ጥያቄ አይነሳም።
ስንት መስመሮች እንደተጨመሩ፣ እንደተወገዱ፣ እና እንደተሻሻሉ በአንድ እይታ ይመልከቱ። አንድ ጠቅታ ዲፉን ወደ ቅንጥብ ሰሌዳዎ ይቀዳል ወደ ኮድ ግምገማ ወይም ኮሚት መልዕክት ለመለጠፍ።
ገጹ ከተጫነ በኋላ፣ እያንዳንዱ ባይት በአካባቢ ይሰላል። በአውሮፕላን ውስጥ፣ ከኮርፖሬት ፋየርዎል በስተጀርባ፣ ወይም ምንም አውታረ መረብ ሳይኖር ይሰራል — ለምስጢራዊ ኮድ ግምገማዎች ጠቃሚ።
ከሽፋኑ ስር ያለው ሂሳብ ከድሩ የሚበልጥ ጥንታዊ ነው — በ1965 LCS የተባለ አልጎሪዝም፣ እንዲሁም በ1986 በEugene Myers የተደረገ ማሻሻያ።
ሁለቱም ግቤቶች በ\n (ወይም \r\n) ይሰበራሉ። እያንዳንዱ መስመር ቶከን ይሆናል። ቶከኖችን — ቁምፊዎችን አይደለም — እናወዳድራለን ምክንያቱም በእውነተኛ ኮድ ወይም ሰነዶች ውስጥ አብዛኞቹ አርትዖቶች ሙሉ መስመሮችን ይጨምራሉ፣ ያስወግዳሉ፣ ወይም ይሻሻላሉ።
Longest Common Subsequence በሁለቱም ግቤቶች ውስጥ በተመሳሳይ ቅደም ተከተል የሚታዩ ትልቁ የመስመሮች ስብስብ ነው። ከታች-ቀኝ የሚሄድ የDP ሰንጠረዥ እንሞላለን፤ እያንዳንዱ ሕዋስ ከዚያ ቦታ እስከ መጨረሻው ያለውን LCS ርዝመት ይይዛል። ይህ O(m × n) ጊዜና ማህደረ ትውስታ ይወስዳል።
ከሰንጠረዡ ግራ-ላይ ጀምሮ ወደ ፊት እንሄዳለን፡ ሁለቱ የአሁን መስመሮች ከተዛመዱ እኩል እናወጣለን፤ ካልሆነ የLCS ርዝመትን የሚጠብቀውን አቅጣጫ (ቀኝ ወይም ታች) እንመርጣለን፣ delete ወይም insert በማውጣት። ውጤቱ Original ወደ Modified የሚቀይር የኦፕሬሽኖች ቅደም ተከተል ነው።
delete በinsert ሲከተል፣ እንደ change ረድፍ እናጣምራቸዋለን። በመስመሩ ውስጥ የሚለያዩትን ክፍሎች ብቻ ለማድመቅ፣ ተመሳሳይ የLCS አልጎሪዝም በእያንዳንዱ ጎን ቃላት ላይ ሁለተኛ ጊዜ እናሰራለን፣ በክፍተት ድንበሮች በመከፋፈል።
ለdiff checker የሚደርሱባቸው እውነተኛ ሁኔታዎች።
የGitHub diff እይታ ድንቅ ነው፣ ግን አንዳንድ ጊዜ የቅርጸት ጫጫታ ሳይኖር ብቻ ጉልህ ለውጦችን ማየት ይፈልጉ ይሆናል። ሁለቱንም ስሪቶች ይለጥፉ፣ Ignore whitespace ያብሩ፣ የመልክ ቅርጸቶች ይጠፋሉ — ብቻ የሎጂክ አርትዖቶችን ይተዋሉ።
ጠበቆችና የኦፕስ ቡድኖች ብዙ ጊዜ በውል v1 እና v2 መካከል ምን እንደተቀየረ ማወቅ ያስፈልጋቸዋል። ሁለቱንም ይለጥፉ፣ በቃል-ደረጃ ማድመቅ ያለው ባለቀለም ዲፍ ያግኛሉ — ምንም Word፣ ምንም Track Changes፣ የምስጢራዊ ውሎችን ወደ ሶስተኛ ወገን ሰርቨር መስቀል አያስፈልግም።
በማዋቀሪያ ፋይል ላይ sed/awk/Python regex አስኪደዋል? ስክሪፕቱ የጠበቁትን ብቻ መሆኑን ለማረጋገጥ የመጀመሪያውንና ውጤቱን እዚህ ይለጥፉ። የቁምፊ-ደረጃ ማድመቅ ፈጣን የእይታ ቅኝት የሚያመልጡ የተበታተኑ አርትዖቶችን ይይዛል።
የትርጉም ጥንድ (ምንጭ vs ትርጉም፣ ወይም የአንድ ምንጭ ሁለት ትርጉሞች) — የቃል-ደረጃ ዲፍ የጠፋ ቃል፣ የተደጋገመ ሐረግ ወይም አስተካካዮች ያመለጠ የሥርዓተ-ነጥብ መለዋወጥ ለማግኘት ቀላል ያደርገዋል።
የሚያወዳድሩዋቸው ጽሑፎች አብዛኛውን ጊዜ ግላዊ ናቸው፡ ከውስጥ ማከማቻዎች ኮድ፣ የውል ረቂቆች፣ የደንበኛ-መረጃ ኤክስፖርቶች ወይም ያልተለቀቀ የምርት ቅጂ። ወደ የማያውቁት ሰው ሰርቨር መለጠፍ የማይቆጣጠሩት የወረቀት መንገድ ይፈጥራል። የiKit diff checker በአሳሽ ትርዎ ውስጥ አስቀድሞ የተጫነ JavaScript ነው — ንፅፅሩ በሲፒዩዎ ላይ ይሰራል እና ምንም የአውታረ መረብ ሶኬት አይነካም።
Deep-dive tutorials and tool comparisons from the iKit blog.
Pretty-print, validate, and structurally diff messy JSON — when each one is the right tool.
Compare the best Markdown editors of 2026; pair with the diff tool for tracking documentation changes.
አይደለም። መሣሪያው ሙሉ በሙሉ በዚህ ገጽ ውስጥ የሚሰራ JavaScript ነው። የዲፍ አልጎሪዝሙ (longest-common-subsequence) በሲፒዩዎ ላይ ይሰራል እና ውጤቱ በቀጥታ ወደDOM ይታያል። DevTools → Network ይክፈቱና ይመልከቱ — በዲፍ ጊዜ ምንም ጥያቄ አይነሳም። የውስጥ ኮድ፣ የደንበኛ መረጃ፣ የውል ረቂቆች ወይም በሰርቨር መሣሪያ እንዲመዘገብ የማይፈልጉትን ማንኛውንም ነገር ለመለጠፍ አስተማማኝ ነው።
በመጀመሪያ ሁለቱንም ግቤቶች በመስመሮች ከፋፍለን LCS (longest common subsequence) አልጎሪዝም እንሰራለን። በሁለቱም ጎኖች የሚዛመዱ መስመሮች እኩል ተብለው ይደመቃሉ። የማይዛመዱ መስመሮች መጨመር ከመሰረዝ አጠገብ ሲመጣ በ'ለውጥ' ረድፎች ይጣመራሉ። ለእያንዳንዱ የተጣመረ ለውጥ፣ የተለወጡ ቃላት ብቻ ቀይ/አረንጓዴ እንዲበሩ — መላውን መስመር አይደለም — በመስመሩ ቃላት (በክፍተት ተከፋፍለው) ላይ ሁለተኛ LCS እንሰራለን።
Split እይታ ሁለቱን ጽሑፎች ጎን ለጎን ከተጣመሩ የመስመር ቁጥሮች ጋር ያሳያል — diff በIDE ውስጥ (VS Code, JetBrains) እንዴት እንደሚታይ ቅርብ ነው። Unified እይታ በ +/− ቅድመ-ቅጥያ መስመሮች ያለው አንድ አምድ ያሳያል — `git diff` የሚያትመውን ይመስላል። የስራ ፍሰትዎን የሚስማማውን ይምረጡ፤ ሁለቱም ተመሳሳይ መረጃ ያሳያሉ።
ኮድን እንደገና መቅረጽ (Prettier ማስኬድ፣ ታብ/ክፍተት መቀየር፣ የመስመር መጨረሻዎችን ማስተካከል) እውነተኛ ለውጦችን የሚቀብር የእይታ ጫጫታ ይጨምራል። 'ክፍተትን ችላ በል' ማብራት ተከታታይ ክፍተቶችን/ታቦችን ወደ አንድ ክፍተት ያዋህዳል እና ከዲፍ በፊት የመስመር ጠርዞችን ይቆርጣል — ስለዚህ የመልክ ለውጦችን ሳይሆን ትርጉም ያላቸውን አርትዖቶች ብቻ ያያሉ።
የLCS አልጎሪዝም O(m × n) ማህደረ ትውስታ ይጠቀማል፣ m እና n በእያንዳንዱ ጎን ያሉ የመስመር ብዛቶች ናቸው። iKit ንፅፅሩን በ~4 ሚሊዮን ሕዋሶች (≈16 MB) ይገድባል፣ ይህም ጥቂት ሺህ መስመሮችን ከጥቂት ሺህ መስመሮች ጋር በምቾት ይይዛል። ለትላልቅ diffs (ሙሉ የውሂብ ጎታ ዳምፖች፣ ሙሉ-ፋይል ምዝግቦች)፣ እንደ `diff` ወይም `git diff --no-index` ያሉ የCLI መሣሪያዎችን ይጠቀሙ — እነዚህ ወደ ሚሊዮኖች መስመሮች የሚዘረጋ ብልህ አልጎሪዝም (Myers diff) ይጠቀማሉ።