Git diff -w ไม่สนใจช่องว่างเฉพาะที่จุดเริ่มต้นและจุดสิ้นสุด


366

ฉันชอบที่จะใช้git diff -wเพื่อละเว้นความแตกต่างของช่องว่าง แต่ฉันเพิ่งสังเกตเห็นว่ามันไม่สนใจแม้แต่ความแตกต่างของช่องว่างในช่วงกลางของบรรทัด ฉันจะละเว้นความแตกต่างของช่องว่างที่เกิดขึ้นที่จุดเริ่มต้น (^) หรือสิ้นสุด ($) ของเส้นได้อย่างไร


31
ถือว่าใช้งานgit diff -bแทนไหม?
Jonas Byström

5
"-b --ignore-space-change ละเว้นการเปลี่ยนแปลงในจำนวนช่องว่างซึ่งจะละเว้นช่องว่างที่ปลายบรรทัดและพิจารณาลำดับอื่น ๆ ทั้งหมดของอักขระช่องว่างหนึ่งตัวหรือมากกว่านั้นให้เท่ากัน"
mowwwalker

คำตอบ:


450

สำหรับการใช้งานในตอนท้ายของบรรทัด:

git diff --ignore-space-at-eol

แทนที่จะเป็นสิ่งที่คุณใช้ในปัจจุบัน:

git diff -w (--ignore-all-space)

สำหรับการเริ่มต้นของบรรทัด ... คุณโชคไม่ดีถ้าคุณต้องการวิธีแก้ปัญหาในตัว

อย่างไรก็ตามหากคุณไม่สนใจที่จะทำให้มือสกปรกมีแพทช์ค่อนข้างเก่าลอยอยู่ที่ไหนสักแห่งที่เพิ่มการสนับสนุนสำหรับ "--ignore-space-at-sol"


ขอบคุณ แต่มันใช้งานไม่ได้หากคุณกำหนดค่าส่วนต่างให้กับเครื่องมือภายนอก .. แนวคิดใดบ้าง
adardesign

@ การออกแบบฉันคิดว่าอาจจะต้องมีการกำหนดค่าในเครื่องมือภายนอก ฉันไม่แน่ใจว่ามีสิ่งใดที่คอมไพล์สามารถทำได้เพื่อนำเสนอ diff โดยไม่มีการเปลี่ยนแปลง whitespace ... อาจจะผิด git นั้นทรงพลังมาก ...
johnny

จะเป็นการดีถ้าหากตั้งค่าไว้ตามค่าเริ่มต้น ฉันหมายถึง -w หรือ -b หรือ --ignore-all-space มีการอภิปรายเกี่ยวกับเรื่องนี้ที่stackoverflow.com/questions/7310033/…
Artyom

8
ฉันเห็นด้วยกับข้อเสนอแนะ -b ตั้งแต่ -w ถือว่า "abc def" และ "abcdef" เหมือนกันซึ่งไม่ค่อยเป็นสิ่งที่ฉันต้องการ!
Richard Wiseman

3

นี่เป็นคำถามเก่า แต่ก็ยังมีการดู / จำเป็นอย่างสม่ำเสมอ ฉันต้องการโพสต์เพื่อเตือนผู้อ่านอย่างฉันว่าช่องว่างตามที่กล่าวถึงในคำถามของ OP ไม่เหมือนกับคำจำกัดความของ Regex รวมถึงการขึ้นบรรทัดใหม่แท็บและอักขระเว้นวรรค - Git ขอให้คุณชัดเจน ดูตัวเลือกบางอย่างที่นี่: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

ตามที่ระบุไว้git diff -bหรือgit diff --ignore-space-changeจะละเว้นช่องว่างที่บรรทัดสิ้นสุด หากคุณต้องการให้การตั้งค่านั้นเป็นพฤติกรรมเริ่มต้นของคุณบรรทัดต่อไปนี้จะเพิ่มความตั้งใจนั้นลงในไฟล์. gitconfig ของคุณดังนั้นมันจะไม่สนใจช่องว่างที่บรรทัดสุดท้ายเสมอ:

git config --global core.whitespace trailing-space

ในกรณีของฉันฉันพบคำถามนี้เพราะฉันสนใจที่จะเพิกเฉยต่อ "ความแตกต่างของช่องว่างการส่งคืนช่องว่าง" ดังนั้นฉันต้องการสิ่งนี้:

git diff --ignore-cr-at-eolหรือ git config --global core.whitespace cr-at-eolจากที่นี่

คุณสามารถกำหนดให้เป็นค่าเริ่มต้นสำหรับ repo นั้นได้โดยไม่ใช้พารามิเตอร์ --global และตรวจสอบในไฟล์การตั้งค่าสำหรับ repo นั้น สำหรับปัญหา CR ที่ฉันพบมันหายไปหลังจากเช็คอินถ้า warncrlf หรือ autocrlf = true ในส่วน [core] ของไฟล์. gitconfig

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