ฉันจะได้รับผลสูงสุดสำหรับเจ้าชู้ของฉันด้วยคำสั่ง "diff" ได้อย่างไร


9

ฉันได้ลองใช้diffคำสั่งlinux ในอดีตโดยไม่โชคหรือความอดทนมาก ฉันมักจะจบลงด้วยการใช้ยูทิลิตี้ GUI เช่น DiffMerge หรือ Kdiff

เมื่อเร็ว ๆ นี้ฉันเริ่มลองใช้diffอีกครั้งเพื่อเปรียบเทียบไฟล์บนระบบรีโมตผ่าน ssh และฉันพบว่า-y / --side-by-sideตัวเลือกมีประโยชน์มาก แต่ฉันก็ยังรู้สึกว่าฉันไม่ได้ใช้ประโยชน์จากยูทิลิตี้นี้เป็นส่วนใหญ่

ดังนั้นฉันอยากรู้วิธีการบรรลุสิ่งต่อไปนี้:

  1. ไฮไลต์การเปลี่ยนแปลงหรือใช้การเข้ารหัสสีเพื่อให้เอาต์พุตอ่านง่ายขึ้น
  2. ผสาน - เลือกเส้นที่มีความแตกต่างและมีผลต่อการเปลี่ยนแปลงเป็นหนึ่งในไฟล์

นอกจากนี้ฉันยังไม่พบตัวอย่างที่ดีมากมายเมื่อ googling ดังนั้นหากคุณมีเคล็ดลับ linux-fu สำหรับการใช้ประโยชน์สูงสุดจากความแตกต่างคุณสามารถแบ่งปันได้ไหม ฉันจะเปรียบเทียบไฟล์กำหนดค่าแบบข้อความเป็นหลัก แต่เทคนิคและเคล็ดลับใด ๆ จะยอดเยี่ยม

สำหรับการอ้างอิง - ยูทิลิตี้ DiffMerge แสดงการเปลี่ยนแปลงแบบเคียงข้างกันได้อย่างง่ายดายด้วยการเน้นสี ไอคอนที่ด้านบนช่วยให้คุณสามารถสลับระหว่างมุมมองของ "แสดงทั้งหมด" "แสดงความแตกต่าง" และ "แสดงความแตกต่างกับบริบท" ชอบฟังก์ชั่นนี้ที่พรอมต์คำสั่ง

PS: ฉันยังควรทราบว่าตัวเลือกอื่น ๆ หนึ่งที่ผมพบว่ามีประโยชน์มาก--suppress-common-linesที่ฉันได้เรียนรู้เกี่ยวกับเรื่องนี้กระชับและอ่านบล็อกโพสต์


3
ฉันใช้ vimdiff สักหน่อย
nicerobot

@nicerobot คุณสามารถโพสต์สิ่งนี้เป็นคำตอบ - เป็นเครื่องมือที่มีประโยชน์และมีประโยชน์มาก
rozcietrzewiacz

คุณไม่สามารถฟรีได้ ..... ขออภัยไม่สามารถช่วยได้: D
whoami

ฉันทำส่วนใหญ่ของฉันใน Emacs
Gilles 'หยุดความชั่วร้าย'

@whoami - อะไรนะ
cwd

คำตอบ:


9

ในลำดับใดไม่มี:

  • meld เป็นโปรแกรม diff ที่ดีมากซึ่งใช้ diffs ที่ดีมากและการรวมสามทาง
  • git config --global merge.conflictstyle diff3meldทำให้คุณได้รับการส่งออกการผสานสามทางสำหรับใช้กับเครื่องมือเช่น
  • wdiffคำไม่ diffs ดีมากถ้าสี :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • เพื่อลด cruft ในdiffผลลัพธ์ฉันมักจะใช้--ignore-all-space(-wตัวเลือก )
  • diff-ignore-moved-lines* ทำตามที่ระบุไว้บนฉลาก
  • difff* สามารถใช้เพื่อกระจายบรรทัดที่ตรงกับในฟิลด์ที่กำหนด

* ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียนและพัฒนาสิ่งเหล่านี้เพื่อช่วยในเรื่องของ CLI และ GUI ในการผสมผสานและผสานเข้าด้วยกัน


1
ฉันยังใช้diffuseไม่น้อย
Arcege

ฉันก็พบว่า diff -u นั้นค่อนข้างตรงไปตรงมา
เกบ


3

เพื่อให้ได้สีใน diff คุณควรดูที่http://colordiff.sourceforge.net/ http://colordiff.sourceforge.net/นี่เป็นเพียงกระดาษห่อหุ้มรอบ diff และดังนั้นตัวเลือกคำสั่งทั้งหมดยังคงใช้งานได้

ในกรณีที่คุณมีอูบุนตูแค่เขียน:

    # sudo apt-get install colordiff

การเสี่ยงต่อการไม่พบกรณีการใช้งานของคุณgitเป็นVCSที่ยอดเยี่ยมมากที่รวมเข้ากับเครื่องมือการกระจายและการผสานที่หลากหลาย (ทั้งบรรทัดคำสั่งและ GUI) ลองดูถ้าเป็นตัวเลือก


1

ลอง sdiff

diffยังมีตัวเลือก ( -eหรือ-ed) เพื่อสร้างสคริปต์ผสานเพื่อใช้กับed

sdiff, diffและedควรเป็นส่วนหนึ่งของเปลือกของคุณที่คุณเคยไป

ซอฟต์แวร์ควบคุมเวอร์ชันของคุณอาจมีdiffและmergeเครื่องมือในตัวด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.