ตัวแก้ไขของฉันกำลังเปลี่ยนการลงท้ายบรรทัดของไฟล์ต้นฉบับของฉัน เมื่อฉันทำฉันจะgit diff
เห็นบรรทัดเดิมสองครั้ง - ครั้งเดียว-
และครั้งเดียว+
- โดยไม่เห็นความแตกต่าง
ฉันgit diff
จะแสดงให้ฉันเห็นได้อย่างไรว่าการเปลี่ยนแปลงนี้คืออะไร?
ตัวแก้ไขของฉันกำลังเปลี่ยนการลงท้ายบรรทัดของไฟล์ต้นฉบับของฉัน เมื่อฉันทำฉันจะgit diff
เห็นบรรทัดเดิมสองครั้ง - ครั้งเดียว-
และครั้งเดียว+
- โดยไม่เห็นความแตกต่าง
ฉันgit diff
จะแสดงให้ฉันเห็นได้อย่างไรว่าการเปลี่ยนแปลงนี้คืออะไร?
คำตอบ:
ขั้นแรกตรวจสอบให้แน่ใจว่าคุณใช้เอาต์พุตสี (เช่นกับgit diff --color
) และคุณได้เปิดใช้งานการเน้นช่องว่างด้วย (เช่น)
git config color.diff.whitespace "red reverse"
อย่างไรก็ตามอาจใช้ไม่ได้ในทุกกรณีเนื่องจากgit
ไม่ได้เน้นช่องว่างต่อท้ายสำหรับบรรทัดที่ถูกลบ หากต้องการดูช่องว่างที่คุณลบไปเพียงแค่ใช้
git diff -R
เพื่อใส่ช่องว่างที่ด้าน 'เพิ่ม' ของการเปรียบเทียบซึ่งจะถูกไฮไลต์
สำหรับรายละเอียดเพิ่มเติมโปรดดูคำตอบที่คำถาม SOนี้
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
7d คือเครื่องหมายปีกกา '}'
คุณสามารถดูความแตกต่างของการสิ้นสุดบรรทัดด้วยคำสั่งต่อไปนี้
git diff | cat -v
จากนั้นจะพิมพ์ "^ M" สำหรับการลงท้าย CRLF (DOS) โดยไม่มีการสิ้นสุด LF (Unix)
เห็นได้ชัดว่า git diff กำลังทำสิ่งที่ถูกต้องพิมพ์อักขระ CR และ LF สำหรับการสิ้นสุด CRLF แต่เนื่องจาก CR ถูกใช้โดยคอนโซลเราจึงไม่สามารถมองเห็นได้ การใช้ cat -v ทำให้เราสามารถมองเห็นได้
git diff > somediff && vi somediff
กลุ่มแสดง CRLF เป็น ^ M เช่นกัน แต่cat -v
เรียบร้อย
cat
ที่ฉันไม่รู้ :-)
วิธีหนึ่งในการดูการเปลี่ยนแปลงช่องว่างคือการสร้าง "word diff" แบบอักขระทีละอักขระ
git diff --color --word-diff-regex=.
ไฮไลท์นี้ช่องว่างการเปลี่ยนแปลงทั้งหมดในทุกสาย ช่องว่างที่นำออกไปเป็นห่อ[-
และ-]
และเพิ่มช่องว่างในและ{+
+}
หรืออีกวิธีหนึ่งตามคำแนะนำของ Alex
git diff --color --ws-error-highlight=new,old
ไฮไลท์การเปลี่ยนแปลงทั้งหมดที่ช่องว่างที่ปลายของเส้น
git diff --ws-error-highlight=new,old
ไฮไลต์ช่องว่างแตกต่างกันในบรรทัดที่เปลี่ยนแปลง
เครื่องมือต่างกราฟิกจะแสดงให้คุณเห็นการเปลี่ยนแปลงที่ดีกว่า - git difftool
ลอง
ใช้meldและตั้งค่ากำหนดเพื่อแสดงช่องว่าง (แก้ไข -> ค่ากำหนด -> แสดงช่องว่าง)
เครื่องมือกราฟิกอื่น ๆ อาจมีตัวเลือกที่คล้ายกัน - คำตอบ + ความคิดเห็นของ @ Cotton บอกวิธีการทำสิ่งนี้ด้วย vimdiff
git difftool --tool=meld doesn't
ก็เปิดตัว meld ฉันไม่รู้ว่าเป็นเพราะกำลังดำเนินการ rebase หรือไม่
git config diff.wsErrorHighlight all